技術揭密:Amazon 的推薦系統到底行不行?

作者 | 發布日期 2016 年 07 月 17 日 12:00 | 分類 網路 , 軟體、系統 , 電子商務 follow us in feedly

亞馬遜在業內有「推薦系統之王」之稱,亞馬遜有 35% 的銷售額是與推薦系統相關的。但是最近,微軟的研究員 Amit Sharma 發表了一篇論文《Estimating the causal impact of recommendation systems from observational data》,對這個事情提出了質疑。這篇論文分析了 Amazon 上 4,000 種不同商品的相關資料,認為與我們通常歸因於推薦系統的點擊次數相比,實際上僅有四分之一真正是由推薦系統引起的,其他四分之三和推薦並沒有關係。




論文裡舉了一個例子,如下面左圖,大家主要看一下紅圈標明的地方,這是 Amazon 的單品頁上非常重要的一個推薦位「Frequently Bought Together / 經常一起購買的商品」。冬天來了,小明想買一頂帽子禦寒,他在 Amazon 上看上了圖中這頂帽子,這個時候 Amazon 向小明推薦,買這頂帽子的人通常還會買紅圈裡那副手套,恰好小明也需要一副手套,所以就一起下單了。例子中手套的銷售通常被認為是推薦系統的作用。

huxiu.com 配圖

而論文作者的觀點是,即使沒有推薦,如上面右圖,小明因為禦寒的需要,一樣會尋找並購買一副手套,因此這種購買不應該計入推薦系統。作者把沒有推薦系統就不會發生的點擊稱為「因果性點擊」,而把上例中小明購買手套的點擊成為「便利性點擊」──有沒有推薦系統手套的購買都會發生,推薦系統僅是帶來了「便利性」。論文試圖用實驗的方法來證明,推薦系統帶來的絕大部分點擊都是這種「便利性點擊」,因此推薦系統的價值很大程度上被高估了。

為了做這個事情,論文作者發明了一種稱為「Shock-IV」的測量方法。論文的實驗資料來自於 Bing 工具條使用者的真實訪問日誌,包括了 210 萬匿名使用者在 2013-14 年間的 9 個月時間內對 Amazon 上 140 萬商品的訪問紀錄,並以推薦系統中最最常見的推薦形態「Customers who bought this also bought / 買了還買」做為評價目標。具體的細節我這裡略去不陳述了,有興趣的讀者可以去讀一下  paper。論文的結果如下圖。

huxiu.com 配圖

圖中顯示了使用 Shock-IV 方法得到的因果性點擊率(CTR)的估計值(綠色曲線),同時為了對比,還給出了把便利性點擊計算在內的推薦系統點擊率(紅色虛線)。可以看到,例如書這個品項,因果性點擊率只有 5%,而我們通常認為 10%以上點擊是來自於推薦系統。對於不同的商品類別,相比於推薦系統真實有效的點擊,即因果性點擊,我們通常會高估了 200% 的推薦效果。接下來是論文的常見套路之列舉不足,然後給出了結論,他們使用的 Shock-IV 這套實驗方法是相當 data-driven 的,有很大的應用價值應該推而廣之。

有人把這個實驗結果 po 到 Quora 上,結果推薦領域的大神 Xavier Amatriain 怒了。

熟悉推薦領域的人想必都知道 Xavier 的大名,他上一份工作是 Netflix 推薦團隊的負責人,現在是Quora 的工程 VP。Xavier 之所以對這篇論文很不滿,一個重要的原因是,他認為原論文的作者是在他們領域裡受到尊重的研究人員,而這篇論文本身卻既不嚴謹又缺乏行業認知,大牌研究人員發表不靠譜的結論,誤導性非常大,因此他有必要站出來撥亂反正。

針對前文中「帽子─手套」的例子,Xavier 認為原論文提出的問題──如果沒有推薦用戶會怎麼做──是毫無意義的。在沒有推薦的時候,用戶會有兩個選擇:1. 自主選擇其他一副手套,2. 拋棄你的服務,去別的地方。實際上,第二個選擇是非常值得關注的,且與原論文的另一大缺陷相關:僅是簡單地使用 CTR 來評估推薦系統。

一個推薦系統的好壞不僅取決於有一個更好或更壞的 CTR,非常重要的一點是,它有助於減輕用戶尋找到「正確選擇」的負擔。假設兩個網站 A 和 B,在網站 A 裡用戶3 秒內就找到了他想要的東西,而在網站 B 需要 3分 鐘,那麼顯而易見地用戶會更經常使用 A 網站。換句話說,推薦系統帶來的不僅是簡單的點擊,更重要的是讓用戶「重複使用」。

原論文中對「推薦」的定義太過狹隘,暫且不說現如今很多搜尋結果都是個性化過的,像 Amazon 這樣的網站,推薦幾乎已經無所不在了。而「便利性點擊」恰恰正是推薦系統所追求的目標之一。推薦系統讓使用者生活更容易、更便利,從長期上看,用戶因此會購買更多商品,或者對服務的滿意度更高。所以從實踐意義上看,原論文定義的問題根本就是個杯具。當我們使用 A/B 測試衡量一個推薦系統的效果時,我們更加看中的是推薦是否讓用戶「爽」了,使用者使用服務爽了,就會帶來更多的活躍與營收。「便利性」不是給推薦系統添亂,它是使用推薦系統應該具備的固有益處。

另外,原論文中說因為資料層面的限制他們做不了線上的 A/B 測試,很多人很多場景也都做不了,因此它們提出的 Shock-IV 可以做為推薦系統 A/B 測試的一種替代方案。Xavier 的意思是,你們別鬧了,並給出他之前在前東家 Netflix 的一個案例,在「Netflix 推薦系統的最新解讀:演算法、商業價值與創新」一文中,Netflix 發現個性化技術可以顯著提高推薦影片的被接受度(Take-Rate),即推薦給用戶的影片真正被播放的比率。

Netflix 做了一個對比分析,見下圖,黑色線是基於熱門度的曲線,紅色線是基於個性化 PVR(Personalized Video Ranker)指標的曲線,個性化推薦使得接受度有了巨大的提升。而且除此之外,比接受度提高更有意義的是,優秀的推薦技術使得用戶的參與度(觀看時長)與退訂率都受益匪淺。Netflix 的月退訂率很低(很小的個位數百分比),大部分是因為支付的問題,真正主動選擇退訂的非常少。透過在個性化推薦領域的多年耕耘,月退訂率得以降低了可觀的百分比。月退訂率的降低,一來有效延長了會員的付費存續期,二來也降低了為彌補流失用戶所要付出的成本。

huxiu.com 配圖

Xavier 列舉了他認為原論文中的不妥之處,包括:

  • 實驗的設定根本就是錯的。
  • 對於推薦系統工作方式的假設也是錯的。
  • 核心概念的定義過於苛刻,與應用的現實場景脫節。
  • 實驗受到了這麼多的假設和約束,但沒有發現這些限制有任何好處。
  • 由於實驗方法的這些限制,需要仔細考慮實驗結果的局限性。
  • 最後得到的實驗結果,並沒有與任何公認的結果進行對比。

在 Quora 的回答裡,Xavier 圍繞這些問題一一進行了反駁,內容很長,建議大家去仔細讀一讀原答案,對大家學習理解推薦系統會非常有説明。

其實關於如何評價推薦系統的作用,很早以前在 ResysChina 論壇裡同學們也有過很多的討論。比如,如果以 CTR 為考核指標,把豆瓣電影單品頁中「喜歡這部電影的人也喜歡」這部分換成推薦熱門電影,這樣這部分的點擊率會提高很多。但如果考察用戶點擊的深度,即點擊了推薦項之後又繼續沿此路徑發生了多少次點擊,推薦系統給出的結果就要遠超熱門結果了。所以推薦系統從長期使用者價值來看更有用處。

huxiu.com 配圖

Amazon 對待推薦系統價值的認知,《一鍵下單》書中有一段 Amazon 創始人貝佐斯自己對它的評價:

我想我們能做的就是利用先進技術,例如聯合過濾(推薦系統最經典的演算法)以及其他技術來加快找書速度。打個比方,如果你今天走進一家書店,發現一本讓你靈魂出竅的書的可能性是一千分之一,我們想利用技術來了解你本人,並使這種機會增加到三百分之一,然後是一百分之一。經過幾年的努力以後,使這個概率變成五十分之一,等等。這將為人們創造巨大的價值。再偉大的商人也沒有機會逐個地了解他們的顧客,而電子商務要使這成為可能。

而且貝佐斯還曾拿推薦系統做為武器來制衡供應商,《一網打盡》中提到過這個事情:

亞馬遜在和大型出版商談判的時候,就會使用他們的「推薦系統」做為殺手鐧。如果出版商沒有達到他們的要求,亞馬遜就威脅將他們的書從人機自動化推薦系統中撤下,這也就意味著他們將不會向客戶推薦這本書。最開始出版商根本不知道亞馬遜這樣做會有什麼效果,他們大多數人不知道他們銷售額增長的原因正是因為他們處於顯眼的推薦位置。亞馬遜透過這種方法來展示其強大的市場力量。如果一家出版商不妥協,亞馬遜就會關閉推薦其書目的演算法,出版商的銷售額一般會下降 40%。然後,通常 30 天左右出版商就會回過頭來說,「哎喲,我們怎麼做這項工作?」

這個故事也從側面印證了原論文的假設是多麼不靠譜。簡單講,這篇被批判的 paper 最大的問題之一,就是把推薦僅當做「買了還買」這麼一項功能來看,推薦系統現在絕不僅是一個演算法或者一項功能了,它承載著傳遞用戶價值的重大作用。

最後,關於「買了還買」這個推薦領域的經典應用,在 Greg Linden 的《Early Amazon》裡也有過相關的內容,推薦給大家:

亞馬遜有一個廣為人知的功能,「買過某本書的顧客還買過」。這是發現相關書籍的絕佳途徑。

在內部,我們管這個功能叫做「相似推薦」。透過使用這個功能,不斷地從一本書跳轉到另一本書,叫做「相似推薦漫遊」。

這個功能的第一版是一位叫做 Eric 的工程師開發的,他很聰明,開發經驗也很豐富。和 Eric 一起工作的感覺很棒,從他身上我學到了很多。

第一版的相似推薦功能非常受歡迎。但是它有一個問題,即所謂的「哈利波特問題」。

嗯,是的,就是那個哈利波特。哈利波特是那種老少通殺的暢銷書,孩子會買它,大人也會買它,所有人都會買它。

然後你可以任選一本書。當你關注買了這本書的顧客還買過其他哪些書的時候,放心吧,其中的大多數顧客都買過哈利波特。

這種相似推薦是沒有太大用處的。你感受一下,當你在瀏覽《The Psychology of Computer Programming》這本書的時候,給你推薦哈利波特是不是挺沒用的。如果能夠推薦《Peopleware》和《The Mythical Man Month》,就有用多了。

要解決這個問題並不像乍看起來那麼簡單。有一些顯而易見的解決方案會帶來另外的問題,其中一些甚至比哈利波特問題本身還要嚴重。

透過大量的實驗,我發明了一種新的相似推薦方法,工作得相當不錯。新方法給出的相似推薦,更新穎也更有幫助。而且與此同時,我還對程式性能做出了一些提升。整個過程非常有趣。

當這個新版本的相似推薦功能上線之後,貝佐斯衝入我的辦公室,跪倒在我面前,向我高呼,「你真的酷斃了!你真的酷斃了!」

我和我的小夥伴們都驚呆了,不知道該做何反應,即使到現在回想起來,仍然會覺得手足無措。那一刻,永遠地停留在我的記憶中。

(本文由 虎嗅網 授權轉載;首圖來源:達志影像) 

發表迴響