[转]解构推荐系统:“猜你喜欢”是怎么猜中你的心思
2019獨角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
http://blog.jobbole.com/30647/
英文原文:Deconstructing Recommender Systems,編譯:ccyou@guokr
如今,到網(wǎng)上購物的人已經(jīng)習(xí)慣了收到系統(tǒng)為他們做出的個性化推薦。Netflix 會推薦你可能會喜歡看的視頻。TiVo 會自動把節(jié)目錄下來,如果你感興趣就可以看。Pandora 會通過預(yù)測我們想要聽什么歌曲從而生成個性化的音樂流。
所有這些推薦結(jié)果都來自于各式各樣的推薦系統(tǒng)。它們依靠計算機算法運行,根據(jù)顧客的瀏覽、搜索、下單和喜好,為顧客選擇他們可能會喜歡、有可能會購買的商品,從而為消費者服務(wù)。推薦系統(tǒng)的設(shè)計初衷是幫助在線零售商提高銷售額,現(xiàn)在這是一塊兒規(guī)模巨大且不斷增長的業(yè)務(wù)。與此同時,推薦系統(tǒng)的開發(fā)也已經(jīng)從上世紀(jì) 90 年代中期只有幾十個人研究,發(fā)展到了今天擁有數(shù)百名研究人員,分別供職于各高校、大型在線零售商和數(shù)十家專注于這類系統(tǒng)的其他企業(yè)。
這些年來,推薦系統(tǒng)有了相當(dāng)?shù)倪M(jìn)展。開始時它們還相對較為粗糙,往往對行為做出不準(zhǔn)確的預(yù)測;但隨著更多的和不同類型的網(wǎng)站用戶數(shù)據(jù)變得可用,推薦系統(tǒng)得以將創(chuàng)新算法應(yīng)用于這些數(shù)據(jù)之上,它們迅速得到了改善。今天,推薦系統(tǒng)都是些極其復(fù)雜和精專的系統(tǒng),常常看起來比你自己還要了解你。同時,推薦系統(tǒng)正在向零售網(wǎng)站以外的領(lǐng)域拓展:大學(xué)用它們來引導(dǎo)學(xué)生選課,移動電話公司靠它們來預(yù)測哪些用戶有可能轉(zhuǎn)投另一家供應(yīng)商,會議主辦方也測試過用它們來分配論文給審稿專家。
我們兩人從推薦系統(tǒng)的早期開始便一直在開發(fā)和研究它們,最初是以學(xué)術(shù)研究者的身份,參與 GroupLens 計劃(GroupLens Project)。1992 年起,GroupLens 通過對美國興趣論壇網(wǎng)站 Usenet 討論區(qū)里的消息進(jìn)行排序,將用戶指向他們可能會感興趣、但自己尚未發(fā)現(xiàn)的話題線索。幾年以后,我們成立了 Net Perceptions,這是一家推薦算法公司,在互聯(lián)網(wǎng)第一次熱潮期間(1997 年 – 2000 年),一直處于業(yè)界領(lǐng)先地位。有鑒于此,雖然這些公司極少公開談?wù)撍麄兊耐扑]系統(tǒng)是如何運作的,我們的經(jīng)驗使我們能夠深入了解亞馬遜和其他在線零售商幕后的情景。(在本文中,我們的分析是在觀察和推理的基礎(chǔ)上得出的,不包含任何內(nèi)部消息)。
下面就是我們所看到的。
推薦算法是怎么“猜你喜歡”的?
來源:recommenderapi.com
你有沒有想過自己在亞馬遜眼中是什么樣子?答案是:你是一個很大、很大的表格里一串很長的數(shù)字。這串?dāng)?shù)字描述了你所看過的每一樣?xùn)|西,你點擊的每一個鏈接以及你在亞馬遜網(wǎng)站上買的每一件商品;表格里的其余部分則代表了其他數(shù)百萬到亞馬遜購物的人。你每次登陸網(wǎng)站,你的數(shù)字就會發(fā)生改變;在此期間,你在網(wǎng)站上每動一下,這個數(shù)字就會跟著改變。這個信息又會反過來影響你在訪問的每個頁面上會看到什么,還有你會從亞馬遜公司收到什么郵件和優(yōu)惠信息。
許多年來,推薦系統(tǒng)的開發(fā)者試過用各種各樣的方法來采集和解析所有這些數(shù)據(jù)。最近這段時間,多數(shù)人都選擇使用被稱為個性化協(xié)同推薦(Personalized Collaborative Recommender)的算法。這也是亞馬遜、Netflix、Facebook 的好友推薦,以及一家英國流行音樂網(wǎng)站 Last.fm 的核心算法。說它 “個性化”,是因為這種算法會追蹤用戶的每一個行為(如瀏覽過的頁面、訂單記錄和商品評分),以此進(jìn)行推薦;它們可不是瞎貓碰上死耗子——全憑運氣。說它 “協(xié)同”,則是因為這種算法會根據(jù)許多其他的顧客也購買了這些商品或者對其顯示出好感,而將兩樣物品視為彼此關(guān)聯(lián),它不是通過分析商品特征或者關(guān)鍵詞來進(jìn)行判斷的。
不同類型的個性化協(xié)同推薦系統(tǒng)最晚從 1992 年開始便已經(jīng)出現(xiàn)。除了 GroupLens 計劃,另一項早期的推薦系統(tǒng)是 MIT 的 Ringo,它會根據(jù)用戶的音樂播放列表從而給用戶推薦其他他們有可能會喜歡的音樂。
User-User 算法:計算用戶之間的相似度
GroupLens 和 Ringo 都使用了一種簡單的協(xié)同算法,被稱為 “用戶關(guān)聯(lián)”(user-user)的算法。這種類型的算法會計算一對用戶之間的 “距離”,根據(jù)的是他們對同一物品打分的相似程度。舉例來說,如果吉姆和簡都給《電子世界爭霸戰(zhàn)》(Tron)這部電影打了 5 分,那么他們之間的距離就是 0。如果吉姆給它的續(xù)集《創(chuàng):戰(zhàn)紀(jì)》(Tron: Legacy )這部電影打了 5 分,而簡只打了 3 分,那么他們之間的距離就變大了。按照這樣的計算得出來品味相對 “靠近” 的用戶,我們把他們稱之為共有一個 “鄰集”(neighborhood)。
但是,這種用戶關(guān)聯(lián)的策略效果并不是很好。首先,形成有意義的鄰集很難:很多用戶兩兩之間只有很少幾個共同評分,有的就完全沒有;而僅有的那幾個都打了分的項目呢,往往是票房大片,基本上人人都喜歡的那種。再來,由于用戶之間的距離可以變得很快,算法必須當(dāng)場就進(jìn)行大部分的計算;而這可能會比一個在網(wǎng)站上這兒點點那兒戳戳的人下一個動作發(fā)出之前需要更久的時間。
Item-Item 算法:計算物品之間的關(guān)聯(lián)
因此,大部分的推薦系統(tǒng)如今都依靠一種“物-物關(guān)聯(lián)”(item-item)的算法,這種算法計算的是兩本書、兩部電影或者兩個其他什么東西之間的距離,依據(jù)的是給它們打過分的用戶的相似度。喜歡 Tom Clancy 書的人很可能會給 Clive Cussler 的作品打高分,因此 Clancy 和 Cussler 的書就共處一個鄰集。一對物品之間的距離可能是根據(jù)成百上千萬的用戶的評分計算得出,在一段時間里往往保持相對穩(wěn)定,因此推薦系統(tǒng)可以預(yù)先計算距離,并更快的生成推薦結(jié)果。亞馬遜和 Netflix 都曾公開表示過他們使用的是物-物關(guān)聯(lián)算法的變種,但對細(xì)節(jié)都絕口不提。
用戶關(guān)聯(lián)算法和物-物關(guān)聯(lián)算法都有的一個問題,是用戶評分的不一致性。當(dāng)給他們機會再評一次分時,用戶往往會對同一件物品給出不同的得分。品味在變、心情在變,印象也在變。MIT 在上世紀(jì) 90 年代進(jìn)行的一項研究表明,在最初打分一年以后,用戶的評分會發(fā)生平均 1 分(滿分 7 分)的變動。研究人員們也在一直在嘗試不同的方法在模型中納入這一變量;比如說,如果用戶給某個商品了打一個分,但這個評分與推薦算法所了解的關(guān)于這個人和這個商品的所有其他信息不相符,有的推薦算法就會邀請用戶再次對這個商品進(jìn)行評價。
降維算法:把事物特征一般化
不過,用戶關(guān)聯(lián)算法和物-物關(guān)聯(lián)算法還存在一個比一致性更大的問題:它們太死了。就是說,它們能發(fā)現(xiàn)都喜歡同一樣?xùn)|西的人,但卻忽略了愛好非常相似的潛在用戶組合。比如說你喜歡莫奈的睡蓮。那么,在這個法國印象派大師畫的 250 幅睡蓮中,你最喜歡哪一幅?在一群喜歡莫奈的人當(dāng)中,完全可能每個人喜歡的睡蓮都不相同,而基本的算法就有可能識別不出這些人都有著共同的愛好。
大約十年前,研究者們想出了一個辦法,通過一個叫降維(Dimensionality Reduction)的過程,把事物更一般化的表現(xiàn)出來。這種方法在計算量上比用戶關(guān)聯(lián)和物-物關(guān)聯(lián)算法要密集得多,因此也就沒有那么快的得到采用。但隨著計算機變更快更便宜,降維算法也逐步取得了一些進(jìn)展。
為了弄清降維算法是怎么工作的,我們來看看你愛吃的東西,以及如何把它跟其他一百萬人愛吃的東西做比較。你可以把這些信息用一個巨型矩陣表示出來,每一條豎線代表一樣食物,每個人愛吃什么東西就自然形成了一行。在你的這一行上面或許會顯示你給了烤牛排 5 顆星、紅燒小排 4 星半、烤雞翅 2 顆星、凍豆腐卷 1 顆星、奶酪烤蘑菇 5 顆星、鹽水毛豆 4 顆星,等等。
然而,使用這個矩陣的推薦算法并不關(guān)心你給哪種食物評了多少顆星。它想要了解的是你一般而言的喜好,這樣它可以將這個信息應(yīng)用到更豐富多樣的食物上。比如說,基于你上面給出的信息,算法可能會認(rèn)為你喜歡牛肉、咸的東西和烤制菜品,不喜歡雞肉和任何油炸的東西,不喜歡也不討厭蔬菜,依此類推。你愛吃的食物所擁有的特點或者說維度,它的數(shù)量和符合你要求的食物的數(shù)量比起來要小得多——至多可能 50 或 100。通過查對這些維度,推薦算法可以迅速決定你是否會喜歡一種新的食物(比方說鹽焗排骨),方法就是把這種食物的各項維度(咸的、牛肉做的、不是雞肉、不是炒的、不是蔬菜、不是烤的)同你的資料進(jìn)行比對。這種更為一般性的呈現(xiàn)使得推薦算法能準(zhǔn)確的發(fā)現(xiàn)有著相似但不同喜好的用戶。而且,它大幅壓縮了矩陣的規(guī)模,使算法變得更加高效。
這是一個很酷的解決方案。不過,你愛吃的食物的維度該上哪兒去找呢?肯定不是去問廚師。推薦系統(tǒng)會使用一種稱為奇異值分解的數(shù)學(xué)方法來計算維度。這種方法涉及到把最初的一個巨型矩陣分解為兩個 “口味矩陣”——其中一個包含了所有的用戶和 100 項口味維度,另一個則包含了所有的食物和 100 項口味維度——再加上第三個矩陣,當(dāng)乘以前面兩個矩陣中的任意一個時,會得到最初的那個矩陣(※此處已更改)。
不像上面例子中說的那樣,計算用的維度既不是描述性的,也一點兒都不直觀;它們是純抽象的值。這并沒有什么,只要這些值最終生成準(zhǔn)確的推薦結(jié)果就行了。這種方法的主要缺點是,創(chuàng)建矩陣所需要的時間會隨著客戶和產(chǎn)品數(shù)量的增多而飛速增長——創(chuàng)建一個擁有 2.5 億名客戶和 1000 萬種產(chǎn)品的矩陣,需要花上創(chuàng)建一個 25 萬名客戶和 1 萬種產(chǎn)品的矩陣 10 億倍那么多的時間。而且這一過程還需要經(jīng)常重復(fù)。一旦收到新的評分,矩陣就已經(jīng)過時;在像亞馬遜這樣的公司,每一秒鐘都會收到新的評論。幸運的是,就算略微過時,矩陣仍然能以一個挺不錯的水平運作。研究人員們也已經(jīng)在設(shè)計新的算法,為奇異值分解提供可用的近似值并顯著縮短計算時間。
講完了推薦算法是如何“猜你喜歡”的 ,現(xiàn)在,你對于每回上網(wǎng)購物時在線零售商是如何打量你,并努力把你的喜好和其他人的相匹配有了一個基本的概念。
推薦系統(tǒng)還有另外兩大特點,也對你最終看到的推薦結(jié)果有著顯著的影響:第一,在弄清楚你和其他購物者的相似度有多高之前,推薦系統(tǒng)必須先弄明白你真正喜歡什么;第二,推薦系統(tǒng)依照一組商業(yè)規(guī)則運行,以確保推薦結(jié)果既讓你覺得有用,也使商家有利可圖。
推薦算法是如何贏得你的信任,又讓商家有錢可賺的?
采集你的上網(wǎng)數(shù)據(jù)
舉個例子,來看亞馬遜的藝術(shù)品商店,上次我們?nèi)タ吹臅r候那里有 900 多萬冊印刷品和海報在降價促銷。亞馬遜的藝術(shù)品商店有這樣幾個方法來評估你的喜好。它會讓你在 1 到 5 顆星的等級上給某一件藝術(shù)作品打分,它也會記錄下你把哪些畫點擊放大了來看、哪些畫你反反復(fù)復(fù)看了好多次,你把哪些放進(jìn)了心愿單,還有你最終實際下單買了什么。它還會追蹤在你瀏覽過的每一個頁面上都顯示了哪些畫作。在線零售商會使用你在其網(wǎng)站行進(jìn)的路徑(你瀏覽過的頁面和點擊商品的鏈接) 來向你推薦相關(guān)聯(lián)的商品。此外,它還把你的購買記錄和打分信息結(jié)合起來,建立一個你長期購買偏好的檔案。
像亞馬遜這樣的公司會收集大量此類有關(guān)客戶的數(shù)據(jù)。在你登錄期間,你在它網(wǎng)站上的幾乎每一個動作都會被記下來,留作將來使用。多虧有了瀏覽器 cookie,連匿名購物者的上網(wǎng)記錄商家也能維持,最終這些數(shù)據(jù)將在匿名購物者創(chuàng)建賬戶或者登陸時,鏈接到顧客的個人資料。這種爆炸式的數(shù)據(jù)采集并非為在線商家所獨有,沃爾瑪便以其對現(xiàn)金收據(jù)數(shù)據(jù)的深入挖掘而著稱于業(yè)界。但是,網(wǎng)上商店處在一個更有利的位置去查看和記錄,不止是消費者買了些什么,還包括你曾考慮過、瀏覽過和決定不買哪些商品。在全世界大部分地區(qū),所有這類活動都是任人監(jiān)視和記錄的;只有在歐洲,數(shù)據(jù)隱私法在一定程度上限制了這種操作。
當(dāng)然,不論法律如何,顧客發(fā)現(xiàn)自己的數(shù)據(jù)被人濫用后,都會產(chǎn)生強烈的抵觸情緒。早在 2000 年 9 月,亞馬遜吃過一次苦頭:有一部分顧客發(fā)現(xiàn)他們收到的報價更高,因為網(wǎng)站將他們識別為老顧客,而不是匿名進(jìn)入或是從某個比價網(wǎng)站轉(zhuǎn)接進(jìn)來的顧客。亞馬遜聲稱這只是一項隨機的價格測試,其呈現(xiàn)出來的結(jié)果與老顧客身份之間的關(guān)聯(lián)純屬巧合。話是這樣說,它還是叫停了這項操作。
在商業(yè)規(guī)則下運行
加在推薦算法之上的種種商業(yè)規(guī)則,旨在防止算法給出愚蠢的推薦,并幫助在線零售商在不失去你信任的前提下實現(xiàn)營業(yè)額的最大化。最起碼,推薦系統(tǒng)應(yīng)該避免人們說的超市悖論(Supermarket Paradox)。例如,差不多每個去超市的人都喜歡吃香蕉,也經(jīng)常會買一些。那么,推薦系統(tǒng)該不該向每一位顧客都推薦香蕉呢?答案是否定的——這樣做既幫不上顧客,也提高不了香蕉的銷量。所以,智能的超市推薦系統(tǒng)始終會包括有一條規(guī)則,明確地將香蕉排除在推薦結(jié)果之外。
這個例子可能聽起來沒什么,但在我們早期經(jīng)手的一個項目中,我們的推薦系統(tǒng)就曾經(jīng)向幾乎每一個到訪我們網(wǎng)站的人推薦披頭士的《白色專輯》(White Album)。從統(tǒng)計學(xué)的意義上講,這是個很棒的推薦:顧客此前都沒有從這個電子商務(wù)網(wǎng)點購買過這張專輯,而大多數(shù)顧客對《白色專輯》的評價都很高。盡管如此,這個推薦仍然是無效的——任何一個對《白色專輯》感興趣的人都已經(jīng)有了一張了。
當(dāng)然,大部分的推薦規(guī)則都是更加微妙的。比如說,當(dāng)約翰在 9 月份在 Netflix 索動作影片時,結(jié)果中不會出現(xiàn)《復(fù)仇者聯(lián)盟》(The Avengers),因為這部大片在當(dāng)時還沒有租借版,這樣的推薦結(jié)果不會讓 Netflix 有錢賺。因此,約翰被導(dǎo)向了《鋼鐵俠 2》(Iron Man 2),這部片已經(jīng)可以用流媒體播放了。
其他的規(guī)則還包括禁止推薦為招徠顧客而虧本銷售的商品(loss leader);反過來,鼓勵推薦滯銷品。在經(jīng)營Net Perceptions期間,我們就曾與一位客戶合作,他利用推薦系統(tǒng)來識別庫存積壓商品的潛在客戶,取得了相當(dāng)大的成功。
贏取你的信任
然而,這種事情很快就會變得棘手起來。一個只會推銷高利潤商品的推薦算法是不會贏得顧客的信任的。這就像是去餐館,那兒的服務(wù)生極力向你推薦某道魚一樣。這個魚真的是他覺得最好吃的嗎?還是大廚催著底下的人趕在魚變質(zhì)前把它給賣出去?
為了建立信任感,更復(fù)雜的推薦算法會盡力保持一定的透明度,讓顧客對系統(tǒng)為什么會向自己推薦這件商品有一個大致的概念,并且在不喜歡收到的推薦結(jié)果時,可以更改他們的個人資料。比如說,你可以刪除你在亞馬遜上買來送禮的購物記錄;畢竟,那些東西反映的不是你個人的喜好。你還可以知道系統(tǒng)為什么會向你推薦某些產(chǎn)品。當(dāng)亞馬遜為約翰挑選了 Jonathan Franzen 的小說《自由》之后,約翰點擊標(biāo)簽上的鏈接“為什么推薦給我?”。隨即顯示出一份簡要的說明,原來是他放在心愿單里的幾本書觸發(fā)了這一推薦。不過,由于他還沒有讀過心愿單上的那幾本書,約翰就不去管《自由》這個推薦結(jié)果了。像這樣的解釋說明會讓用戶明白推薦結(jié)果是否有用。
但是,完善個人資料和解釋推薦結(jié)果往往不足以保證系統(tǒng)不出錯。最近,亞馬遜用高清大屏幕電視機(HDTV)的促銷電子郵件對喬進(jìn)行了轟炸——每周 3 封,連續(xù)扔了一個月。除了給喬寄了過多的電子郵件,這家零售商還沒有意識到,喬已經(jīng)用他妻子的賬戶買了一臺電視機。此外,這些電子郵件并沒有提供一種很明顯的方法,讓喬可以說“謝謝,但我不感興趣”。最終,喬取消了他在亞馬遜的一些郵件訂閱;他并不在意收不到各種信息,而且他有了更多的時間來真的看他的電視。
推薦算法的作用究竟有多大?
alumni.berkeley.edu
那好,推薦算法究竟起了多大作用呢?它們當(dāng)然一直都在增加在線銷售額;據(jù)阿倫森集團(Aaronson Group)的分析師杰克?阿倫森(Jack Aaronson)估計,由于推薦算法帶動銷售額的增長,對推薦算法的投資能獲得 10%-30% 的收益。而且,它們還只是剛剛起步。現(xiàn)在,對我們這些研究推薦系統(tǒng)的人來說,最大的挑戰(zhàn)在于弄清楚如何去判斷新的方法和算法才最好。這可不像基準(zhǔn)化分析微處理器那么簡單,因為不同的推薦系統(tǒng)有著非常不同的目標(biāo)。
評價一個算法最簡單的方法,是看它的預(yù)測和用戶的實際評價之間差異有多大。舉例來說,假如約翰給青春浪漫小說《暮光之城》(Twilight )一顆星,亞馬遜或許會注意到算法根據(jù)其他相似用戶的評價曾預(yù)計約翰會給兩顆星,也即出現(xiàn)了一顆星的偏差。但是,賣家更加關(guān)心算法在用戶評價高的商品上出的錯,因為好評多的物品是顧客更有可能購買的;約翰反正也不會買《暮光之城》。所以,把這個評價計入考慮對理解推薦算法起了多大作用沒什么幫助。
另一個常見方法是看算法給出的推薦結(jié)果和顧客實際購買的商品,之間匹配度有多高。不過,這種方法也可能起到誤導(dǎo)作用,因為這樣分析會將用戶自己設(shè)法找到的商品錯誤地算在推薦算法的頭上,而用戶自己找得到東西恰恰是最不應(yīng)該被推薦的!鑒于這些方法的缺點,研究人員一直在研究新的評判指標(biāo),不只看精度,也會關(guān)注像發(fā)現(xiàn)意外驚喜和多樣性等其他屬性。
發(fā)現(xiàn)意外驚喜(Serendipity)會加權(quán)不尋常的推薦結(jié)果,尤其是那些對某一個用戶極具價值,但對其他同類用戶而言沒什么用的推薦結(jié)果。調(diào)整為發(fā)現(xiàn)意外驚喜的算法會注意到《白色相簿》似乎是一個對幾乎每個人來說都不錯的推薦,因此會改為尋找一個不太常見的選擇——也許是 Joan Armatrading 的《愛和情感》。這個不那么熱門的推薦結(jié)果不太可能擊中目標(biāo),但一旦它遇上了,則將給用戶帶來一個大得多的驚喜。
看推薦結(jié)果的多樣性同樣也很能說明問題。比方說,一個超愛看 Dick Francis 神秘類小說的用戶,在看到推薦表單里全都是 Dick Francis 的作品時,仍有可能會感到失望。一個真正多樣化的推薦表單會包括不同作者和不同類型的書,還有電影、游戲和其他的產(chǎn)品。
推薦系統(tǒng)研究則需要突破各種各樣的阻礙,遠(yuǎn)不止是在現(xiàn)有的系統(tǒng)上進(jìn)行微調(diào)。研究者們眼下正在考慮的是,推薦算法應(yīng)該在怎樣一個程度上幫助用戶發(fā)掘一個網(wǎng)站的內(nèi)容集合中他們未曾了解的部分。比方說,把買書的人送去亞馬遜的服裝部門,而不是給一些安全的、顧客更有可能接受的推薦結(jié)果。在零售世界之外,推薦算法可以幫助人們接觸到新的想法;就算我們不同意其中的一些,但整體作用大概會是積極的,因為這將有助于減少社會的巴爾干化(Balkanization,即碎片化)。推薦算法能不能做到這一點,還要不讓人感到厭煩或者不信任,仍需拭目以待。
但有一點是明確的:推薦系統(tǒng)只會變得越來越好,收集越來越多關(guān)于你的數(shù)據(jù),并在別的、意想不到的地方展示出來。如果你喜歡這篇文章,亞馬遜會很樂意向你推薦其他所有你可能會喜歡的關(guān)于推薦系統(tǒng)的書。
?
轉(zhuǎn)載于:https://my.oschina.net/jingxing05/blog/92208
總結(jié)
以上是生活随笔為你收集整理的[转]解构推荐系统:“猜你喜欢”是怎么猜中你的心思的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 论文笔记:Extendability f
- 下一篇: 最近捣腾的-xwiki, java cp