演算法工程師修仙之路:推薦系統實踐(一)
第一章 好的推薦系統
什麼是推薦系統
-
隨著資訊科技和網際網路的發展,人們逐漸從資訊匱乏的時代走入了資訊過載(information overload)的時代。在這個時代,無論是資訊消費者還是資訊生產者都遇到了很大的挑戰:作為資訊消費者,如何從大量資訊中找到自己感興趣的資訊是一件非常困難的事情;作為資訊生產者,如何讓自己生產的資訊脫穎而出,受到廣大使用者的關注,也是一件非常困難的事情。推薦系統就是解決這一矛盾的重要工具。
-
推薦系統的任務就是聯絡使用者和資訊,一方面把幫助使用者發現對自己有價值的資訊,另一方面讓資訊能夠展現在對它感興趣的使用者面前,從而實現資訊消費者和資訊生產者的雙贏。
-
推薦系統是目前網際網路世界最常見的智慧產品形式。從電子商務、音樂視訊網站,到作為網際網路經濟支柱的線上廣告和新穎的線上應用推薦,到處都有推薦系統的身影。
-
一般認為,推薦系統這個研究領域源於協同過濾演算法的提出。比如,可以按照資料分成協同過濾、內容過濾、社會化過濾,也可以按照演算法分成基於鄰域的演算法、基於圖的演算法、基於矩陣分解或者概率模型的演算法。
-
為了解決資訊過載的問題,已經有無數科學家和工程師提出了很多天才的解決方案,其中代表性的解決方案是分類目錄和搜尋引擎。
-
和搜尋引擎一樣,推薦系統也是一種幫助使用者快速發現有用資訊的工具。和搜尋引擎不同的是,推薦系統不需要使用者提供明確的需求,而是通過分析使用者的歷史行為給使用者的興趣建模,從而主動給使用者推薦能夠滿足他們興趣和需求的資訊。因此,從某種意義上說,推薦系統和搜尋引擎對於使用者來說是兩個互補的工具。搜尋引擎滿足了使用者有明確目的時的主動查詢需求,而推薦系統能夠在使用者沒有明確目的的時候幫助他們發現感興趣的新內容。
-
從物品的角度出發,推薦系統可以更好地發掘物品的長尾(long tail)。主流商品往往代表了絕大多數使用者的需求,而長尾商品往往代表了一小部分使用者的個性化需求。因此,如果要通過發掘長尾提高銷售額,就必須充分研究使用者的興趣,而這正是個性化推薦系統主要解決的問題。推薦系統通過發掘使用者的行為,找到使用者的個性化需求,從而將長尾商品準確地推薦給需要它的使用者,幫助使用者發現那些他們感興趣但很難發現的商品。
-
三種推薦方式:
- 社會化推薦( social recommendation):即讓好友給自己推薦物品。
- 基於內容的推薦(content-based filtering):推薦系統可以自動化通過分析使用者曾經看過的內容找到使用者喜歡的物品,然後給使用者推薦這些物品。
- 基於協同過濾的推薦( collaborative filtering):如果能找到和使用者歷史興趣相似的一群使用者,分析他們喜歡的物品,然後給使用者推薦這些物品。
-
推薦演算法的本質是通過一定的方式將使用者和物品聯絡起來,而不同的推薦系統利用了不同的方式。
個性化推薦系統的應用
電子商務
-
和搜尋引擎不同,個性化推薦系統需要依賴使用者的行為資料,因此一般都是作為一個應用存在於不同網站之中。在網際網路的各類網站中都可以看到推薦系統的應用,而個性化推薦系統在這些網站中的主要作用是通過分析大量使用者行為日誌,給不同使用者提供不同的個性化頁面展示,來提高網站的點選率和轉化率。
-
廣泛利用推薦系統的領域包括電子商務、電影和視訊、音樂、社交網路、閱讀、基於位置的服務、個性化郵件和廣告等。儘管不同的網站使用不同的推薦系統技術,但總地來說,幾乎所有的推薦系統應用都是由前臺的展示頁面、後臺的日誌系統以及推薦算法系統3部分構成的。
-
電子商務網站是個性化推薦系統的一大應用領域。著名的電子商務網站亞馬遜是個性化推薦系統的積極應用者和推廣者,被RWW(讀寫網)稱為“推薦系統之王”。 亞馬遜的推薦系統深入到了其各類產品中,其中最主要的應用有個性化商品推薦列表和相關商品的推薦列表。
-
個性化推薦列表採用了一種基於物品的推薦演算法( item-based method),該演算法給使用者推薦那些和他們之前喜歡的物品相似的物品。除此之外,亞馬遜還有另外一種個性化推薦列表,就是按照使用者在Facebook的好友關係,給使用者推薦他們的好友在亞馬遜上喜歡的物品。
-
除了個性化推薦列表,亞馬遜另一個重要的推薦應用就是相關推薦列表。當你在亞馬遜購買一個商品時,它會在商品資訊下面展示相關的商品。
-
亞馬遜有兩種相關商品列表,一種是包含購買了這個商品的使用者也經常購買的其他商品,另一種是包含瀏覽過這個商品的使用者經常購買的其他商品。這兩種相關推薦列表的區別就是使用了不同使用者行為計算物品的相關性。
-
相關推薦列表最重要的應用就是打包銷售( cross selling)。當你在購買某個物品的時候,亞馬遜會告訴你其他使用者在購買這個商品的同時也會購買的其他幾個商品,然後讓你選擇是否要同時購買這些商品。如果你單擊了同時購買,它會把這幾件商品“打包”,有時會提供一定的折扣,然後賣給你。
電影和視訊網站
-
在電影和視訊網站中,個性化推薦系統也是一種重要的應用。它能夠幫助使用者在浩瀚的視訊庫中找到令他們感興趣的視訊。在該領域成功使用推薦系統的一家公司就是Netflix,它和亞馬遜是推薦系統領域最具代表性的兩家公司。
-
從Netflix的推薦理由來看,它們的演算法和亞馬遜的演算法類似,也是基於物品的推薦演算法,即給使用者推薦和他們曾經喜歡的電影相似的電影。
個性化音樂網路電臺
-
個性化推薦的成功應用需要兩個條件。第一是存在資訊過載,因為如果使用者可以很容易地從所有物品中找到喜歡的物品,就不需要個性化推薦了。第二是使用者大部分時候沒有特別明確的需求,因為使用者如果有明確的需求,可以直接通過搜尋引擎找到感興趣的物品。
-
在這兩個條件下,個性化網路電臺無疑是最合適的個性化推薦產品。目前有很多知名的個性化音樂網路電臺。國際上著名的有Pandora和Lastfm,國內的代表則是豆瓣電臺。它們都不允許使用者點歌,而是給使用者幾種反饋方式——喜歡、不喜歡和跳過。經過使用者一定時間的反饋,電臺就可以從使用者的歷史行為中習得使用者的興趣模型,從而使使用者的播放列表越來越符合使用者對歌曲的興趣。
-
社交網路
- 社交網路中的個性化推薦技術主要應用在三個方面:
- 利用使用者的社交網路資訊對使用者進行個性化的物品推薦;
- 資訊流的會話推薦;
- 給使用者推薦好友。
- 社交網路中的個性化推薦技術主要應用在三個方面:
-
Facebook最寶貴的資料有兩個,一個是使用者之間的社交網路關係,另一個是使用者的偏好資訊。因此, Facebook推出了一個推薦API,稱為Instant Personalization。該工具根據使用者好友喜歡的資訊,給使用者推薦他們的好友最喜歡的物品。
-
除了利用使用者在社交網站的社交網路資訊給使用者推薦本站的各種物品,社交網站本身也會利用社交網路給使用者推薦其他使用者在社交網站的會話。每個使用者在Facebook的個人首頁都能看到好友的各種分享,並且能對這些分享進行評論。每個分享和它的所有評論被稱為一個會話,如何給這些會話排序是社交網站研究中的一個重要話題。 為此, Facebook開發了EdgeRank演算法對這些會話排序,使使用者能夠儘量看到熟悉的好友的最新會話。
-
除了根據使用者的社交網路以及使用者行為給使用者推薦內容,社交網站還通過個性化推薦服務給使用者推薦好友。
個性化閱讀
-
Google Reader是一款流行的社會化閱讀工具。它允許使用者關注自己感興趣的人,然後看到所關注使用者分享的文章。
-
和Google Reader不同,個性化閱讀工具Zite則是收集使用者對文章的偏好資訊。在每篇文章右側, Zite都允許使用者給出喜歡或不喜歡的反饋,然後通過分析使用者的反饋資料不停地更新使用者的個性化文章列表。
基於位置的服務
- 隨著移動裝置的飛速發展,使用者的位置資訊已經非常容易獲取,而位置是一種很重要的上下文資訊,基於位置給使用者推薦離他近的且他感興趣的服務,使用者就更有可能去消費。基於位置的服務往往和社交網路結合在一起。
個性化郵件
-
我們每天都會收到大量的郵件,這些郵件有些對我們很重要(比如領導交代任務的郵件),有些比較次要(比如別人邀約週末打球的郵件),還有些是垃圾郵件。垃圾郵件可以通過垃圾郵件過濾器去除,但在正常的郵件中,如果能夠找到
對使用者重要的郵件讓使用者優先瀏覽,無疑會大大提高使用者的工作效率。 -
目前在文獻中能夠查到的第一個推薦系統Tapestry就是一個個性化郵件推薦系統,它通過分析使用者閱讀郵件的歷史行為和習慣對新郵件進行重新排序,從而提高使用者的工作效率。
-
谷歌於2010年推出了優先順序收件箱功能。該產品通過分析使用者對郵件的歷史行為,找到使用者感興趣的郵件,展示在一個專門的收件箱裡。使用者每天可以先瀏覽這個郵箱裡的郵件,再瀏覽其他郵件。
個性化廣告
-
個性化廣告投放和狹義個性化推薦的區別是,個性化推薦著重於幫助使用者找到可能令他們感興趣的物品,而廣告推薦著重於幫助廣告找到可能對它們感興趣的使用者,即一個是以使用者為核心,而另一個以廣告為核心。
-
目前的個性化廣告投放技術主要分為三種。
- 上下文廣告
- 通過分析使用者正在瀏覽的網頁內容,投放和網頁內容相關的廣告。
- 代表系統是谷歌的Adsense。
- 搜尋廣告
- 通過分析使用者在當前會話中的搜尋記錄,判斷使用者的搜尋目的,投放和使用者目的相關的廣告。
- 個性化展示廣告
- 我們經常在很多網站看到大量展示廣告(就是那些大的橫幅圖片),它們是根據使用者的興趣,對不同使用者投放不同的展示廣告。
- 雅虎是這方面研究的代表。
- 上下文廣告