日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

推荐系统实践读书笔记-01好的推荐系统

發布時間:2023/12/20 windows 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 推荐系统实践读书笔记-01好的推荐系统 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

推薦系統實踐讀書筆記-01好的推薦系統

在研究如何設計推薦系統前,了解什么是好的推薦系統至關重要。只有了解了優秀推薦系統的特征,我們才能在設計推薦系統時根據實際情況進行取舍。本章分3個步驟來回答這個問題:首先,本章將介紹什么是推薦系統、推薦系統的主要任務、推薦系統和分類目錄以及搜索引擎的區別等;然后,本章將按照不同領域分門別類地介紹目前業界常見的個性化推薦應用;最后,本章將介紹推薦系統的評測,通過介紹評測指標給出“好”的定義,從而最終解答“什么是好的推薦系統”這個問題。

提示:本系列文章為閱讀《推薦系統實踐》一書的讀書筆記,只用于本人學習記錄

文章目錄

  • 推薦系統實踐讀書筆記-01好的推薦系統
    • 1.1 什么是推薦系統
    • 1.2 個性化推薦系統的應用
      • 1.2.1 電子商務
      • 1.2.2 電影和視頻網站
      • 1.2.3 個性化音樂網絡電臺
      • 1.2.4 社交網絡
      • 1.2.5 個性化閱讀
      • 1.2.6 基于位置的服務
      • 1.2.7 個性化郵件
      • 1.2.8 個性化廣告
    • 1.3 推薦系統評測
      • 1.3.1 推薦系統實驗方法
      • 1.3.2 評測指標
      • 1.3.3 評測維度


1.1 什么是推薦系統

如果想買一包花生米,你有多少種辦法?假設附近有一個24小時便利店,你可以走進店里,看看所有的貨架,轉一圈找到花生米,然后比較幾個牌子的口碑或者價格找到自己喜歡的牌子,掏錢付款。如果家附近有一家沃爾瑪,你可以走進店里,按照分類指示牌走到食品所在的樓層,接著按照指示牌找到賣干果的貨架,然后在貨架上仔細尋找你需要的花生米,找到后付款。如果你很懶,不想出門,可以打開當當或者淘寶,在一個叫做搜索框的東西里輸入花生米3個字,然后你會看到一堆花生米,找到喜歡的牌子,付費,然后等待送貨上門。上面這幾個例子描述了用戶在有明確需求的情況下,面對信息過載所采用的措施。在24小時便利店,因為店面很小,用戶可以憑自己的經驗瀏覽所有貨架找到自己需要的東西。在沃爾瑪,商品已經被放在無數的貨架上,此時用戶就需要借用分類信息找到自己需要的商品。而在淘寶或者當當,由于商品數目巨大,用戶只能通過搜索引擎找到自己需要的商品。

但是,如果用戶沒有明確的需求呢?比如你今天很無聊,想下載一部電影看看。但當你打開某個下載網站,面對100年來發行的數不勝數的電影,你會手足無措,不知道該看哪一部。此時,你遇到了信息過載的問題,需要一個人或者工具來幫助你做篩選,給出一些建議供你選擇。如果這時候有個喜歡看電影的朋友在身邊,你可能會請他推薦幾部電影。不過,總不能時時刻刻都去麻煩“專家”給你推薦,你需要的是一個自動化的工具,它可以分析你的歷史興趣,從龐大的電影庫中找到幾部符合你興趣的電影供你選擇。這個工具就是個性化推薦系統。

隨著信息技術和互聯網的發展,人們逐漸從信息匱乏的時代走入了信息過載(information overload)的時代。在這個時代,無論是信息消費者還是信息生產者都遇到了很大的挑戰:作為信息消費者,如何從大量信息中找到自己感興趣的信息是一件非常困難的事情;作為信息生產者,如何讓自己生產的信息脫穎而出,受到廣大用戶的關注,也是一件非常困難的事情。推薦系統就是解決這一矛盾的重要工具。推薦系統的任務就是聯系用戶和信息,一方面幫助用戶發現對自己有價值的信息,另一方面讓信息能夠展現在對它感興趣的用戶面前,從而實現信息消費者和信息生產者的雙贏(如圖1-1所示)。(本書后面將信息統稱為“物品”,即可以供用戶消費的東西。)

眾所周知,為了解決信息過載的問題,已經有無數科學家和工程師提出了很多天才的解決方案,其中代表性的解決方案是分類目錄和搜索引擎。而這兩種解決方案分別催生了互聯網領域的兩家著名公司——雅虎和谷歌。著名的互聯網公司雅虎憑借分類目錄起家,而現在比較著名的分類目錄網站還有國外的DMOZ、國內的Hao123等。這些目錄將著名的網站分門別類,從而方便用戶根據類別查找網站。但是隨著互聯網規模的不斷擴大,分類目錄網站也只能覆蓋少量的熱門網站,越來越不能滿足用戶的需求。因此,搜索引擎誕生了。以谷歌為代表的搜索引擎可以讓用戶通過搜索關鍵詞找到自己需要的信息。但是,搜索引擎需要用戶主動提供準確的關鍵詞來尋找信息,因此不能解決用戶的很多其他需求,比如當用戶無法找到準確描述自己需求的關鍵詞時,搜索引擎就無能為力了。和搜索引擎一樣,推薦系統也是一種幫助用戶快速發現有用信息的工具。和搜索引擎不同的是,推薦系統不需要用戶提供明確的需求,而是通過分析用戶的歷史行為給用戶的興趣建模,從而主動給用戶推薦能夠滿足他們興趣和需求的信息。因此,從某種意義上說,推薦系統和搜索引擎對于用戶來說是兩個互補的工具。搜索引擎滿足了用戶有明確目的時的主動查找需求,而推薦系統能夠在用戶沒有明確目的的時候幫助他們發現感興趣的新內容。

從物品的角度出發,推薦系統可以更好地發掘物品的長尾(long tail)。美國《連線》雜志主編Chris Anderson在2004年發表了“The Long Tail”(長尾)一文并于2006年出版了《長尾理論》一書。該書指出,傳統的80/20原則(80%的銷售額來自于20%的熱門品牌)在互聯網的加入下會受到挑戰。互聯網條件下,由于貨架成本極端低廉,電子商務網站往往能出售比傳統零售店更多的商品。雖然這些商品絕大多數都不熱門,但與傳統零售業相比,這些不熱門的商品數量極其龐大,因此這些長尾商品的總銷售額將是一個不可小覷的數字,也許會超過熱門商品(即主流商品)帶來的銷售額。主流商品往往代表了絕大多數用戶的需求,而長尾商品往往代表了一小部分用戶的個性化需求。因此,如果要通過發掘長尾提高銷售額,就必須充分研究用戶的興趣,而這正是個性化推薦系統主要解決的問題。推薦系統通過發掘用戶的行為,找到用戶的個性化需求,從而 將長尾商品準確地推薦給需要它的用戶,幫助用戶發現那些他們感興趣但很難發現的商品。

要了解推薦系統是如何工作的,可以先回顧一下現實社會中用戶面對很多選擇時做決定的過程。仍然以看電影為例,一般來說,我們可能用如下方式決定最終看什么電影。
? 向朋友咨詢。我們也許會打開聊天工具,找幾個經常看電影的好朋友,問問他們有沒有什么電影可以推薦。甚至,我們可以打開微博,發表一句“我要看電影”,然后等待熱心人推薦電影。這種方式在推薦系統中稱為社會化推薦(social recommendation),即讓好友給自己推薦物品。
? 我們一般都有喜歡的演員和導演,有些人可能會打開搜索引擎,輸入自己喜歡的演員名,然后看看返回結果中還有什么電影是自己沒有看過的。比如我非常喜歡周星馳的電影,于是就去豆瓣搜索周星馳,發現他早年的一部電影我還沒看過,于是就會看一看。這種方式是尋找和自己之前看過的電影在內容上相似的電影。推薦系統可以將上述過程自動化,通過分析用戶曾經看過的電影找到用戶喜歡的演員和導演,然后給用戶推薦這些演員或者導演的其他電影。這種推薦方式在推薦系統中稱為基于內容的推薦(content-based filtering)。
? 我們還可能查看排行榜,比如著名的IMDB電影排行榜,看看別人都在看什么電影,別人都喜歡什么電影,然后找一部廣受好評的電影觀看。這種方式可以進一步擴展:如果能找到和自己歷史興趣相似的一群用戶,看看他們最近在看什么電影,那么結果可能比寬泛的熱門排行榜更能符合自己的興趣。這種方式稱為基于協同過濾(collaborative filtering)的推薦。

從上面3種方法可以看出,推薦算法的本質是通過一定的方式將用戶和物品聯系起來,而不同的推薦系統利用了不同的方式。圖1-2展示了聯系用戶和物品的常用方式,比如利用好友、用戶的歷史興趣記錄以及用戶的注冊信息等。

通過這一節的討論,我們可以發現推薦系統就是自動聯系用戶和物品的一種工具,它能夠在信息過載的環境中幫助用戶發現令他們感興趣的信息,也能將信息推送給對它們感興趣的用戶。下一節將通過推薦系統的實際例子讓大家加深對推薦系統的了解。

1.2 個性化推薦系統的應用

和搜索引擎不同,個性化推薦系統需要依賴用戶的行為數據,因此一般都是作為一個應用存在于不同網站之中。在互聯網的各類網站中都可以看到推薦系統的應用,而個性化推薦系統在這些網站中的主要作用是通過分析大量用戶行為日志,給不同用戶提供不同的個性化頁面展示,來提高網站的點擊率和轉化率。廣泛利用推薦系統的領域包括電子商務、電影和視頻、音樂、社交網絡、閱讀、基于位置的服務、個性化郵件和廣告等。
盡管不同的網站使用不同的推薦系統技術,但總地來說,幾乎所有的推薦系統應用都是由前臺的展示頁面、后臺的日志系統以及推薦算法系統3部分構成的。因此,本節在介紹不同的個性化推薦系統應用時,都盡量圍繞這3個不同的部分進行。

1.2.1 電子商務

電子商務網站是個性化推薦系統的一大應用領域。著名的電子商務網站亞馬遜是個性化推薦系統的積極應用者和推廣者,被RWW(讀寫網)稱為“推薦系統之王”。亞馬遜的推薦系統深入到了其各類產品中,其中最主要的應用有個性化商品推薦列表和相關商品的推薦列表。
圖1-3是亞馬遜的個性化推薦列表,這個界面是個性化推薦系統的標準用戶界面,它包含以下幾個組成部分。

? 推薦結果的標題、縮略圖以及其他內容屬性 告訴用戶給他們推薦的是什么。
? 推薦結果的平均分 平均分反應了推薦結果的總體質量,也代表了大部分用戶對這本書的看法。
? 推薦理由 亞馬遜根據用戶的歷史行為給用戶做推薦,因此如果它給你推薦了一本金庸的小說,大都是因為你曾經在亞馬遜上對武俠方面的書給過表示喜歡的反饋。此外,亞馬遜對每個推薦結果都給出了一個按鈕Fix this recommendation(修正這一推薦),單擊后可以看到推薦理由。如圖1-4所示,亞馬遜的推薦結果中有一本關于機器學習的書(Introduction to Machine Learning),單擊該推薦結果的Fix this recommendaion按鈕后,會彈出如圖1-4所示的頁面,該頁面給用戶提供了5種對這個推薦結果進行反饋的方式,包括Add to Cart(加入到購物車)、Add to Wish List(加入到心愿單)、Rate this item(給書打分)、 I own it(我已經有這本書了)和Not interested(對這本書沒興趣)。同時,在推薦結果的下面還展示了推薦原因,此處是因為我曾經給Probabilistic Graphical Models:Principles and Techniques和Data Mining:Practical Machine Learning Tools and Techniques,Second Edition這兩本書打過5分。亞馬遜允許用戶禁用推薦理由,這主要是出于隱私的考慮。有些用戶可能不喜歡他對某些物品的行為被系統用來生成推薦結果,這個時候就可以禁用這些行為。
圖1-3提到的個性化推薦列表采用了一種基于物品的推薦算法(item-based method),該算法給用戶推薦那些和他們之前喜歡的物品相似的物品。除此之外,亞馬遜還有另外一種個性化推薦列表,就是按照用戶在Facebook的好友關系,給用戶推薦他們的好友在亞馬遜上喜歡的物品。如圖1-5所示,基于好友的個性化推薦界面同樣由物品標題、縮略圖、物品平均分和推薦理由組成。不過這里的推薦理由換成了喜歡過相關物品的用戶好友的頭像。
除了個性化推薦列表,亞馬遜另一個重要的推薦應用就是相關推薦列表。當你在亞馬遜購買一個商品時,它會在商品信息下面展示相關的商品。亞馬遜有兩種相關商品列表,一種是包含購買了這個商品的用戶也經常購買的其他商品(如圖1-6所示),另一種是包含瀏覽過這個商品的用戶經常購買的其他商品(如圖1-7所示)。這兩種相關推薦列表的區別就是使用了不同用戶行為計算物品的相關性。此外,相關推薦列表最重要的應用就是打包銷售(cross selling)①。當你在購買某個物品的時候,亞馬遜會告訴你其他用戶在購買這個商品的同時也會購買的其他幾個商品,然后讓你選擇是否要同時購買這些商品。如果你單擊了同時購買,它會把這幾件商品“打包”,有時會提供一定的折扣,然后賣給你(如圖1-8所示)。這種銷售手段是推薦算法最重要的應用,后來被很多電子商務網站作為標準的應用。

在看過亞馬遜的推薦產品后,讀者最關心的應該是這些推薦的應用,究竟給亞馬遜帶來了多少商業利益。關于這方面的準確數字,亞馬遜官方并沒有明確公開過,但我們收集到了一些相關的資料。亞馬遜的前科學家Greg Linden在他的博客里曾經說過,在他離開亞馬遜的時候,亞馬遜至少有20%(之后的一篇博文則變更為35%)的銷售來自于推薦算法。此外,亞馬遜的前首席科學家Andreas Weigend在斯坦福曾經講過一次推薦系統的課,據聽他課的同學透露,亞馬遜有20%~30%的銷售來自于推薦系統。

至于個性化推薦系統對亞馬遜的意義,其CEO Jeff Bezos在接受采訪時曾經說過,亞馬遜相對于其他電子商務網站的最大優勢就在于個性化推薦系統,該系統讓每個用戶都能擁有一個自己的在線商店,并且能在商店中找到自己感興趣的商品。

1.2.2 電影和視頻網站

在電影和視頻網站中,個性化推薦系統也是一種重要的應用。它能夠幫助用戶在浩瀚的視頻庫中找到令他們感興趣的視頻。在該領域成功使用推薦系統的一家公司就是Netflix,它和亞馬遜是推薦系統領域最具代表性的兩家公司。

Netflix原先是一家DVD租賃網站,最近這幾年也開始涉足在線視頻業務。Netflix非常重視個性化推薦技術,并且在2006年起開始舉辦著名的Netflix Prize推薦系統比賽。該比賽懸賞100萬美元,希望研究人員能夠將Netflix的推薦算法的預測準確度提升10%。該比賽舉辦3年后,由AT&T的研究人員獲得了最終的大獎。該比賽對推薦系統的發展起到了重要的推動作用:一方面該比賽給學術界提供了一個實際系統中的大規模用戶行為數據集(40萬用戶對2萬部電影的上億條評分記錄);另一方面,3年的比賽中,參賽者提出了很多推薦算法,大大降低了推薦系統的預測誤差。此外,比賽吸引了很多優秀的科研人員加入到推薦系統的研究中來,大大提高了推薦系統在業界和學術界的影響力。

圖1-9是Netflix的電影推薦界面,從中可以看到Netflix的推薦結果展示頁面包含了以下幾個部分
? 電影的標題和海報。
? 用戶反饋模塊——包括Play(播放)、評分和Not Interested(不感興趣)3種。
? 推薦理由——因為用戶曾經喜歡過別的電影。

從Netflix的推薦理由來看,它們的算法和亞馬遜的算法類似,也是基于物品的推薦算法,即給用戶推薦和他們曾經喜歡的電影相似的電影。至于推薦系統在Netflix中起到的作用,Netflix在宣傳資料中宣稱,有60%的用戶是通過其推薦系統找到自己感興趣的電影和視頻的。

YouTube作為美國最大的視頻網站,擁有大量用戶上傳的視頻內容。由于視頻庫非常大,用戶在YouTube中面臨著嚴重的信息過載問題。為此,YouTube在個性化推薦領域也進行了深入研究,嘗試了很多算法。在YouTube最新的論文中,他們的研究人員表示現在使用的也是基于物品的推薦算法。為了證明個性化推薦的有效性,YouTube曾經做個一個實驗,比較了個性化推薦的點擊率和熱門視頻列表的點擊率,實驗結果表明個性化推薦的點擊率是熱門視頻點擊率的兩倍。

和YouTube類似,美國另一家著名的視頻網站Hulu也有自己的個性化推薦頁面。如圖1-10所示,Hulu在展示推薦結果時也提供了視頻標題、縮略圖、視頻的平均分、推薦理由和用戶反饋模塊。

1.2.3 個性化音樂網絡電臺

個性化推薦的成功應用需要兩個條件。第一是存在信息過載,因為如果用戶可以很容易地從所有物品中找到喜歡的物品,就不需要個性化推薦了。第二是用戶大部分時候沒有特別明確的需求,因為用戶如果有明確的需求,可以直接通過搜索引擎找到感興趣的物品。

在這兩個條件下,個性化網絡電臺無疑是最合適的個性化推薦產品。首先,音樂很多,用戶不可能聽完所有的音樂再決定自己喜歡聽什么,而且每年新的歌曲在以很快的速度增加,因此用戶無疑面臨著信息過載的問題。其次,人們聽音樂時,一般都是把音樂作為一種背景樂來聽,很少有人必須聽某首特定的歌。對于普通用戶來說,聽什么歌都可以,只要能夠符合他們當時的心情就可以了。因此,個性化音樂網絡電臺是非常符合個性化推薦技術的產品。

目前有很多知名的個性化音樂網絡電臺。國際上著名的有Pandora(參見圖1-11)和Last.fm(參見圖1-12),國內的代表則是豆瓣電臺(參見圖1-13)。這3種應用雖然都是個性化網絡電臺,但背后的技術卻不太一樣。



從前端界面上看,這3個個性化網絡電臺很類似。它們都不允許用戶點歌,而是給用戶幾種反饋方式——喜歡、不喜歡和跳過。經過用戶一定時間的反饋,電臺就可以從用戶的歷史行為中習得用戶的興趣模型,從而使用戶的播放列表越來越符合用戶對歌曲的興趣。

Pandora背后的音樂推薦算法主要來自于一個叫做音樂基因工程的項目。這個項目起始于2000年1月6日,它的成員包括音樂家和對音樂有興趣的工程師。Pandora的算法主要基于內容,其音樂家和研究人員親自聽了上萬首來自不同歌手的歌,然后對歌曲的不同特性(比如旋律、節奏、編曲和歌詞等)進行標注,這些標注被稱為音樂的基因。然后,Pandora會根據專家標注的基因計算歌曲的相似度,并給用戶推薦和他之前喜歡的音樂在基因上相似的其他音樂。

Last.fm于2002年在英國成立。Last.fm記錄了所有用戶的聽歌記錄以及用戶對歌曲的反饋,在這一基礎上計算出不同用戶在歌曲上的喜好相似度,從而給用戶推薦和他有相似聽歌愛好的其他用戶喜歡的歌曲。同時,Last.fm也建立了一個社交網絡,讓用戶能夠和其他用戶建立聯系,同時也能讓用戶給好友推薦自己喜歡的歌曲。和Pandora相比,Last.fm沒有使用專家標注,而是主要利用用戶行為計算歌曲的相似度。

音樂推薦是推薦系統里非常特殊的領域。2011年的Recsys大會專門邀請了Pandora的研究人員對音樂推薦進行了演講。演講人總結了音樂推薦的如下特點。
? 物品空間大 物品數很多,物品空間很大,這主要是相對于書和電影而言。
? 消費每首歌的代價很小 對于在線音樂來說,音樂都是免費的,不需要付費。
? 物品種類豐富 音樂種類豐富,有很多的流派。
? 聽一首歌耗時很少 聽一首音樂的時間成本很低,不太浪費用戶的時間,而且用戶大都把音樂作為背景聲音,同時進行其他工作。
? 物品重用率很高 每首歌用戶會聽很多遍,這和其他物品不同,比如用戶不會反復看一個電影,不會反復買一本書。
? 用戶充滿激情 用戶很有激情,一個用戶會聽很多首歌。
? 上下文相關 用戶的口味很受當時上下文的影響,這里的上下文主要包括用戶當時的心情(比如沮喪的時候喜歡聽勵志的歌曲)和所處情境(比如睡覺前喜歡聽輕音樂)。
? 次序很重要 用戶聽音樂一般是按照一定的次序一首一首地聽。
? 很多播放列表資源 很多用戶都會創建很多個人播放列表。
? 不需要用戶全神貫注 音樂不需要用戶全神貫注地聽,很多用戶將音樂作為背景聲音。
? 高度社會化 用戶聽音樂的行為具有很強的社會化特性,比如我們會和好友分享自己喜歡的音樂。
上面這些特點決定了音樂是一種非常適合用來推薦的物品。因此,盡管現在很多推薦系統都是作為一個應用存在于網站中,比如亞馬遜的商品推薦和Netflix的電影推薦,唯有音樂推薦可以支持獨立的個性化推薦網站,比如Pandora、Last.fm和豆瓣網絡電臺。

1.2.4 社交網絡

最近5年,互聯網最激動人心的產品莫過于以Facebook和Twitter為代表的社交網絡應用。在社交網絡中,好友們可以互相分享、傳播信息。社交網絡中的個性化推薦技術主要應用在3個方面:
? 利用用戶的社交網絡信息對用戶進行個性化的物品推薦;
? 信息流的會話推薦;
? 給用戶推薦好友。

Facebook最寶貴的數據有兩個,一個是用戶之間的社交網絡關系,另一個是用戶的偏好信息。因此,Facebook推出了一個推薦API,稱為Instant Personalization。該工具根據用戶好友喜歡的信息,給用戶推薦他們的好友最喜歡的物品。很多網站都使用了Facebook的API來實現網站的個性化。表1-1中是使用了Facebook的Instant Personalization的具有代表性的網站。圖1-14是著名的電視劇推薦網站Clicker使用Instant Personalization給用戶進行個性化視頻推薦的界面。


除了利用用戶在社交網站的社交網絡信息給用戶推薦本站的各種物品,社交網站本身也會利用社交網絡給用戶推薦其他用戶在社交網站的會話。如圖1-15所示,每個用戶在Facebook的個人首頁都能看到好友的各種分享,并且能對這些分享進行評論。每個分享和它的所有評論被稱為一個會話,如何給這些會話排序是社交網站研究中的一個重要話題。為此,Facebook開發了EdgeRank算法對這些會話排序,使用戶能夠盡量看到熟悉的好友的最新會話。
除了根據用戶的社交網絡以及用戶行為給用戶推薦內容,社交網站還通過個性化推薦服務給用戶推薦好友。圖1-16顯示了著名社交網站的好友推薦界面。

1.2.5 個性化閱讀

閱讀文章是很多互聯網用戶每天都會做的事情。個性化閱讀同樣符合前面提出的需要個性化推薦的兩個因素:首先,互聯網上的文章非常多,用戶面臨信息過載的問題;其次,用戶很多時候并沒有必須看某篇具體文章的需求,他們只是想通過閱讀特定領域的文章了解這些領域的動態。
目前互聯網上的個性化閱讀工具很多,國際知名的有Google Reader,國內有鮮果網等。同時,隨著移動設備的流行,移動設備上針對個性化閱讀的應用也很多,其中具有代表性的有Zite和Flipboard。
Google Reader是一款流行的社會化閱讀工具。它允許用戶關注自己感興趣的人,然后看到所關注用戶分享的文章。如圖1-17所示,如果單擊左側的People you follow(你關注的人),就可以看到其他用戶分享的文章。
和Google Reader不同,個性化閱讀工具Zite則是收集用戶對文章的偏好信息。如圖1-18所示,在每篇文章右側,Zite都允許用戶給出喜歡或不喜歡的反饋,然后通過分析用戶的反饋數據不停地更新用戶的個性化文章列表。Zite推出后獲得了巨大的成功,后被CNN收購。

另一家著名的新聞閱讀網站Digg也在首頁嘗試了推薦系統。Digg首先根據用戶的Digg歷史計算用戶之間的興趣相似度,然后給用戶推薦和他興趣相似的用戶喜歡的文章。根據Digg自己的統計,在使用推薦系統后,用戶的digg行為明顯更加活躍,digg總數提高了40%,用戶的好友數平均增加了24%,評論數增加了11%。

1.2.6 基于位置的服務

在中關村閑逛時,肚子餓了,打開手機,發現上面給你推薦了幾家中關村不錯的飯館,價格、環境、服務、口味都如你所愿,這幾乎就是基于位置的個性化推薦系統最理想的場景了。隨著移動設備的飛速發展,用戶的位置信息已經非常容易獲取,而位置是一種很重要的上下文信息,基于位置給用戶推薦離他近的且他感興趣的服務,用戶就更有可能去消費。

基于位置的服務往往和社交網絡結合在一起。比如Foursquare推出了探索功能,給用戶推薦好友在附近的行為(如圖1-19所示)。

1.2.7 個性化郵件

我們每天都會收到大量的郵件,這些郵件有些對我們很重要(比如領導交代任務的郵件),有些比較次要(比如別人邀約周末打球的郵件),還有些是垃圾郵件。垃圾郵件可以通過垃圾郵件過濾器去除,這是一個專門的研究領域,這里就不討論了。但在正常的郵件中,如果能夠找到對用戶重要的郵件讓用戶優先瀏覽,無疑會大大提高用戶的工作效率。

其實,目前在文獻中能夠查到的第一個推薦系統Tapestry①就是一個個性化郵件推薦系統,它通過分析用戶閱讀郵件的歷史行為和習慣對新郵件進行重新排序,從而提高用戶的工作效率。

谷歌的研究人員在這個問題上也進行了深入研究,于2010年推出了優先級收件箱功能。如圖1-20所示,該產品通過分析用戶對郵件的歷史行為,找到用戶感興趣的郵件,展示在一個專門的收件箱里。用戶每天可以先瀏覽這個郵箱里的郵件,再瀏覽其他郵件。

谷歌的研究表明,該產品可以幫助用戶節約6%的時間。在如今這個時間就是金錢的年代,6%的節約無疑是一大進步。

1.2.8 個性化廣告

廣告是互聯網公司生存的根本。很多互聯網公司的盈利模式都是基于廣告的,而廣告的CPC、CPM直接決定了很多互聯網公司的收入。目前,很多廣告都是隨機投放的,即每次用戶來了,隨機選擇一個廣告投放給他。這種投放的效率顯然很低,比如給男性投放化妝品廣告或者給女性投放西裝廣告多半都是一種浪費。因此,很多公司都致力于廣告定向投放(Ad Targeting)的研究,即如何將廣告投放給它的潛在客戶群。個性化廣告投放目前已經成為了一門獨立的學科——計算廣告學——但該學科和推薦系統在很多基礎理論和方法上是相通的,比如它們的目的都是聯系用戶和物品,只是在個性化廣告中,物品就是廣告。

個性化廣告投放和狹義個性化推薦的區別是,個性化推薦著重于幫助用戶找到可能令他們感興趣的物品,而廣告推薦著重于幫助廣告找到可能對它們感興趣的用戶,即一個是以用戶為核心,而另一個以廣告為核心。目前的個性化廣告投放技術主要分為3種。

? 上下文廣告 通過分析用戶正在瀏覽的網頁內容,投放和網頁內容相關的廣告。代表系統是谷歌的Adsense。
? 搜索廣告 通過分析用戶在當前會話中的搜索記錄,判斷用戶的搜索目的,投放和用戶目的相關的廣告。
? 個性化展示廣告 我們經常在很多網站看到大量展示廣告(就是那些大的橫幅圖片),它們是根據用戶的興趣,對不同用戶投放不同的展示廣告。雅虎是這方面研究的代表。

廣告的個性化定向投放是很多互聯網公司的核心技術,很多公司都秘而不宣。不過,雅虎公司是個例外,它發表了大量個性化廣告方面的論文。

在個性化廣告方面最容易獲得成功的無疑是Facebook,因為它擁有大量的用戶個人資料,可以很容易地獲取用戶的興趣,讓廣告商選擇自己希望對其投放廣告的用戶。圖1-21展示了Facebook的廣告系統界面,該界面允許廣告商選擇自己希望的用戶群,然后Facebook會根據廣告商的選擇告訴他們這些限制條件下廣告將會覆蓋的用戶數量。

1.3 推薦系統評測

什么才是好的推薦系統?這是推薦系統評測需要解決的首要問題。一個完整的推薦系統一般存在3個參與方(如圖1-22所示):用戶、物品提供者和提供推薦系統的網站。以圖書推薦為例,首先,推薦系統需要滿足用戶的需求,給用戶推薦那些令他們感興趣的圖書。其次,推薦系統要讓各出版社的書都能夠被推薦給對其感興趣的用戶,而不是只推薦幾個大型出版社的書。最后,好的推薦系統設計,能夠讓推薦系統本身收集到高質量的用戶反饋,不斷完善推薦的質量,增加用戶和網站的交互,提高網站的收入。因此在評測一個推薦算法時,需要同時考慮三方的利益,一個好的推薦系統是能夠令三方共贏的系統。

在推薦系統的早期研究中,很多人將好的推薦系統定義為能夠作出準確預測的推薦系統。比如,一個圖書推薦系統預測一個用戶將來會購買《C++ Primer中文版》這本書,而用戶后來確實購買了,那么這就被看做一次準確的預測。預測準確度是推薦系統領域的重要指標(沒有之一)。這個指標的好處是,它可以比較容易地通過離線方式計算出來,從而方便研究人員快速評價和選擇不同的推薦算法。但是,很多研究表明,準確的預測并不代表好的推薦。①比如說,該用戶早就準備買《C++ Primer中文版》了,無論是否給他推薦,他都準備購買,那么這個推薦結果顯然是不好的,因為它并未使用戶購買更多的書,而僅僅是方便用戶購買一本他本來就準備買的書。

那么,對于用戶來說,他會覺得這個推薦結果很不新穎,不能令他驚喜。同時,對于《C++ Primer中文版》的出版社來說,這個推薦也沒能增加這本書的潛在購買人數。所以,這是一個看上去很好,但其實卻很失敗的推薦。舉一個更極端的例子,某推測系統預測明天太陽將從東方升起,雖然預測準確率是100%,卻是一種沒有意義的預測。

所以,好的推薦系統不僅僅能夠準確預測用戶的行為,而且能夠擴展用戶的視野,幫助用戶發現那些他們可能會感興趣,但卻不那么容易發現的東西。同時,推薦系統還要能夠幫助商家將那些被埋沒在長尾中的好商品介紹給可能會對它們感興趣的用戶。這也正是《長尾理論》的作者在書中不遺余力介紹推薦系統的原因。

為了全面評測推薦系統對三方利益的影響,本章將從不同角度出發,提出不同的指標。這些指標包括準確度、覆蓋度、新穎度、驚喜度、信任度、透明度等。這些指標中,有些可以離線計算,有些只有在線才能計算,有些只能通過用戶問卷獲得。下面各節將會依次介紹這些指標的出發點、含義,以及一些指標的計算方法。

1.3.1 推薦系統實驗方法

在介紹推薦系統的指標之前,首先看一下計算和獲得這些指標的主要實驗方法。在推薦系統中,主要有3種評測推薦效果的實驗方法,即離線實驗(offline experiment)、用戶調查(user study)和在線實驗(online experiment)。下面將分別介紹這3種實驗方法的優缺點。
1. 離線實驗
離線實驗的方法一般由如下幾個步驟構成:
(1) 通過日志系統獲得用戶行為數據,并按照一定格式生成一個標準的數據集;
(2) 將數據集按照一定的規則分成訓練集和測試集;
(3) 在訓練集上訓練用戶興趣模型,在測試集上進行預測;
(4) 通過事先定義的離線指標評測算法在測試集上的預測結果。
從上面的步驟可以看到,推薦系統的離線實驗都是在數據集上完成的,也就是說它不需要一個實際的系統來供它實驗,而只要有一個從實際系統日志中提取的數據集即可。這種實驗方法的好處是不需要真實用戶參與,可以直接快速地計算出來,從而方便、快速地測試大量不同的算法。

它的主要缺點是無法獲得很多商業上關注的指標,如點擊率、轉化率等,而找到和商業指標非常相關的離線指標也是很困難的事情。表1-2簡單總結了離線實驗的優缺點。
2. 用戶調查
注意,離線實驗的指標和實際的商業指標存在差距,比如預測準確率和用戶滿意度之間就存在很大差別,高預測準確率不等于高用戶滿意度。因此,如果要準確評測一個算法,需要相對比較真實的環境。最好的方法就是將算法直接上線測試,但在對算法會不會降低用戶滿意度不太有把握的情況下,上線測試具有較高的風險,所以在上線測試前一般需要做一次稱為用戶調查的測試。

用戶調查需要有一些真實用戶,讓他們在需要測試的推薦系統上完成一些任務。在他們完成任務時,我們需要觀察和記錄他們的行為,并讓他們回答一些問題。最后,我們需要通過分析他們的行為和答案了解測試系統的性能。

用戶調查是推薦系統評測的一個重要工具,很多離線時沒有辦法評測的與用戶主觀感受有關的指標都可以通過用戶調查獲得。比如,如果我們想知道推薦結果是否很令用戶驚喜,那我們最好直接詢問用戶。但是,用戶調查也有一些缺點。首先,用戶調查成本很高,需要用戶花大量時間完成一個個任務,并回答相關的問題。有些時候,還需要花錢雇用測試用戶。因此,大多數情況下很難進行大規模的用戶調查,而對于參加人數較少的用戶調查,得出的很多結論往往沒有統計意義。因此,我們在做用戶調查時,一方面要控制成本,另一方面又要保證結果的統計意義。

此外,測試用戶也不是隨便選擇的。需要盡量保證測試用戶的分布和真實用戶的分布相同,比如男女各半,以及年齡、活躍度的分布都和真實用戶分布盡量相同。此外,用戶調查要盡量保證是雙盲實驗,不要讓實驗人員和用戶事先知道測試的目標,以免用戶的回答和實驗人員的測試受主觀成分的影響。

用戶調查的優缺點也很明顯。它的優點是可以獲得很多體現用戶主觀感受的指標,相對在線實驗風險很低,出現錯誤后很容易彌補。缺點是招募測試用戶代價較大,很難組織大規模的測試用戶,因此會使測試結果的統計意義不足。此外,在很多時候設計雙盲實驗非常困難,而且用戶在測試環境下的行為和真實環境下的行為可能有所不同,因而在測試環境下收集的測試指標可能在真實環境下無法重現。

3. 在線實驗
在完成離線實驗和必要的用戶調查后,可以將推薦系統上線做AB測試,將它和舊的算法進行比較。

AB測試是一種很常用的在線評測算法的實驗方法。它通過一定的規則將用戶隨機分成幾組,并對不同組的用戶采用不同的算法,然后通過統計不同組用戶的各種不同的評測指標比較不同算法,比如可以統計不同組用戶的點擊率,通過點擊率比較不同算法的性能。對AB測試感興趣的可以瀏覽一下網站http://www.abtests.com/,該網站給出了很多通過實際AB測試提高網站用戶滿意度的例子,從中我們可以學習到如何進行合理的AB測試。

AB測試的優點是可以公平獲得不同算法實際在線時的性能指標,包括商業上關注的指標。AB測試的缺點主要是周期比較長,必須進行長期的實驗才能得到可靠的結果。因此一般不會用AB測試測試所有的算法,而只是用它測試那些在離線實驗和用戶調查中表現很好的算法。其次,一個大型網站的AB測試系統的設計也是一項復雜的工程。一個大型網站的架構分前端和后端,從前端展示給用戶的界面到最后端的算法,中間往往經過了很多層,這些層往往由不同的團隊控制,而且都有可能做AB測試。如果為不同的層分別設計AB測試系統,那么不同的AB測試之間往往會互相干擾。比如,當我們進行一個后臺推薦算法的AB測試,同時網頁團隊在做推薦頁面的界面AB測試,最終的結果就是你不知道測試結果是自己算法的改變,還是推薦界面的改變造成的。因此,切分流量是AB測試中的關鍵,不同的層以及控制這些層的團隊需要從一個統一的地方獲得自己AB測試的流量,而不同層之間的流量應該是正交的。

圖1-23是一個簡單的AB測試系統。用戶進入網站后,流量分配系統決定用戶是否需要被進行AB測試,如果需要的話,流量分配系統會給用戶打上在測試中屬于什么分組的標簽。然后用戶瀏覽網頁,而用戶在瀏覽網頁時的行為都會被通過日志系統發回后臺的日志數據庫。此時,如果用戶有測試分組的標簽,那么該標簽也會被發回后臺數據庫。在后臺,實驗人員的工作首先是配置流量分配系統,決定滿足什么條件的用戶參加什么樣的測試。其次,實驗人員需要統計日志數據庫中的數據,通過評測系統生成不同分組用戶的實驗報告,并比較和評測實果。

一般來說,一個新的推薦算法最終上線,需要完成上面所說的3個實驗。
? 首先,需要通過離線實驗證明它在很多離線指標上優于現有的算法。
? 然后,需要通過用戶調查確定它的用戶滿意度不低于現有的算法。
? 最后,通過在線的AB測試確定它在我們關心的指標上優于現有的算法。
介紹完3種主要的實驗方法后,下一節將開始介紹推薦系統常用的實驗指標,這些指標大部分都可以通過本節介紹的3種實驗方法獲得。

1.3.2 評測指標

本節將介紹各種推薦系統的評測指標。這些評測指標可用于評價推薦系統各方面的性能。這些指標有些可以定量計算,有些只能定性描述,有些可以通過離線實驗計算,有些需要通過用戶調查獲得,還有些只能在線評測。對于重要的評測指標,后面幾章將會詳細討論如何優化它們,本章只給出指標的定義。但對于一些次要的指標,本章在給出定義的同時也會順便討論一下應該如何優化。下面幾節將詳細討論各個不同的指標。
1. 用戶滿意度
用戶作為推薦系統的重要參與者,其滿意度是評測推薦系統的最重要指標。但是,用戶滿意度沒有辦法離線計算,只能通過用戶調查或者在線實驗獲得。
用戶調查獲得用戶滿意度主要是通過調查問卷的形式。用戶對推薦系統的滿意度分為不同的層次。GroupLens曾經做過一個論文推薦系統的調查問卷,該問卷的調查問題是請問下面哪句話最能描述你看到推薦結果后的感受?
? 推薦的論文都是我非常想看的。
? 推薦的論文很多我都看過了,確實是符合我興趣的不錯論文。
? 推薦的論文和我的研究興趣是相關的,但我并不喜歡。
? 不知道為什么會推薦這些論文,它們和我的興趣絲毫沒有關系。

由此可以看出,這個調查問卷不是簡單地詢問用戶對結果是否滿意,而是從不同的側面詢問用戶對結果的不同感受。比如,如果僅僅問用戶是否滿意,用戶可能心里認為大體滿意,但是對某個方面還有點不滿,因而可能很難回答這個問題。因此在設計問卷時需要考慮到用戶各方面的感受,這樣用戶才能針對問題給出自己準確的回答。

在在線系統中,用戶滿意度主要通過一些對用戶行為的統計得到。比如在電子商務網站中,用戶如果購買了推薦的商品,就表示他們在一定程度上滿意。因此,我們可以利用購買率度量用戶的滿意度。此外,有些網站會通過設計一些用戶反饋界面收集用戶滿意度。比如在視頻網站Hulu的推薦頁面(如圖1-24所示)和豆瓣網絡電臺(如圖1-25所示)中,都有對推薦結果滿意或者不滿意的反饋按鈕,通過統計兩種按鈕的單擊情況就可以度量系統的用戶滿意度。更一般的情況下,我們可以用點擊率、用戶停留時間和轉化率等指標度量用戶的滿意度。


2. 預測準確度
預測準確度度量一個推薦系統或者推薦算法預測用戶行為的能力。這個指標是最重要的推薦系統離線評測指標,從推薦系統誕生的那一天起,幾乎99%與推薦相關的論文都在討論這個指標。這主要是因為該指標可以通過離線實驗計算,方便了很多學術界的研究人員研究推薦算法。

在計算該指標時需要有一個離線的數據集,該數據集包含用戶的歷史行為記錄。然后,將該數據集通過時間分成訓練集和測試集。最后,通過在訓練集上建立用戶的行為和興趣模型預測用戶在測試集上的行為,并計算預測行為和測試集上實際行為的重合度作為預測準確度。

由于離線的推薦算法有不同的研究方向,因此下面將針對不同的研究方向介紹它們的預測準確度指標。

● 評分預測
很多提供推薦服務的網站都有一個讓用戶給物品打分的功能(如圖1-26所示)。那么,如果知道了用戶對物品的歷史評分,就可以從中習得用戶的興趣模型,并預測該用戶在將來看到一個他沒有評過分的物品時,會給這個物品評多少分。預測用戶對物品評分的行為稱為評分預測。
評分預測的預測準確度一般通過均方根誤差(RMSE)和平均絕對誤差(MAE)計算。對于測試集中的一個用戶u和物品i,令rui是用戶u對物品i的實際評分,而 r?ui 是推薦算法給出的預測評分,那么RMSE的定義為:
MAE采用絕對值計算預測誤差,它的定義為:
假設我們用一個列表records存放用戶評分數據,令records[i] = [u,i,rui,pui],其中rui是用戶u對物品i的實際評分,pui是算法預測出來的用戶u對物品i的評分,那么下面的代碼分別實現了RMSE和MAE的計算過程。

def RMSE(records): return math.sqrt(\ sum([(rui-pui)*(rui-pui) for u,i,rui,pui in records])\ / float(len(records))) def MAE(records): return sum([abs(rui-pui) for u,i,rui,pui in records])\ / float(len(records))

關于RMSE和MAE這兩個指標的優缺點, Netflix認為RMSE加大了對預測不準的用戶物品評分的懲罰(平方項的懲罰),因而對系統的評測更加苛刻。研究表明,如果評分系統是基于整數建立的(即用戶給的評分都是整數),那么對預測結果取整會降低MAE的誤差。

● TopN推薦
網站在提供推薦服務時,一般是給用戶一個個性化的推薦列表,這種推薦叫做TopN推薦。TopN推薦的預測準確率一般通過準確率(precision)/召回率(recall)度量。
令R(u)是根據用戶在訓練集上的行為給用戶作出的推薦列表,而T(u)是用戶在測試集上的行為列表。那么,推薦結果的召回率定義為:

推薦結果的準確率定義為:

下面的Python代碼同時計算出了一個推薦算法的準確率和召回率

def PrecisionRecall(test, N): hit = 0 n_recall = 0 n_precision = 0 for user, items in test.items(): rank = Recommend(user, N) hit += len(rank & items) n_recall += len(items) n_precision += N return [hit / (1.0 * n_recall), hit / (1.0 * n_precision)]

有的時候,為了全面評測TopN推薦的準確率和召回率,一般會選取不同的推薦列表長度N,計算出一組準確率/召回率,然后畫出準確率/召回率曲線(precision/recall curve)。

● 關于評分預測和TopN推薦的討論
評分預測一直是推薦系統研究的熱點,絕大多數推薦系統的研究都是基于用戶評分數據的評分預測。這主要是因為,一方面推薦系統的早期研究組GroupLens的研究主要就是基于電影評分數據MovieLens進行的,其次,Netflix大賽也主要面向評分預測問題。因而,很多研究人員都將研究精力集中在優化評分預測的RMSE上。

對此,亞馬遜前科學家Greg Linden有不同的看法。2009年, 他在Communications of the ACM網站發表了一篇文章,指出電影推薦的目的是找到用戶最有可能感興趣的電影,而不是預測用戶看了電影后會給電影什么樣的評分。因此,TopN推薦更符合實際的應用需求。也許有一部電影用戶看了之后會給很高的分數,但用戶看的可能性非常小。因此,預測用戶是否會看一部電影,應該比預測用戶看了電影后會給它什么評分更加重要。因此,本書主要也是討論TopN推薦。

3. 覆蓋率
覆蓋率(coverage)描述一個推薦系統對物品長尾的發掘能力。覆蓋率有不同的定義方法,最簡單的定義為推薦系統能夠推薦出來的物品占總物品集合的比例。假設系統的用戶集合為U,推薦系統給每個用戶推薦一個長度為N的物品列表R(u)。那么推薦系統的覆蓋率可以通過下面的公式計算:

從上面的定義可以看到,覆蓋率是一個內容提供商會關心的指標。以圖書推薦為例,出版社可能會很關心他們的書有沒有被推薦給用戶。覆蓋率為100%的推薦系統可以將每個物品都推薦給至少一個用戶。此外,從上面的定義也可以看到,熱門排行榜的推薦覆蓋率是很低的,它只會推薦那些熱門的物品,這些物品在總物品中占的比例很小。一個好的推薦系統不僅需要有比較高的用戶滿意度,也要有較高的覆蓋率。

但是上面的定義過于粗略。覆蓋率為100%的系統可以有無數的物品流行度分布。為了更細致地描述推薦系統發掘長尾的能力,需要統計推薦列表中不同物品出現次數的分布。如果所有的物品都出現在推薦列表中,且出現的次數差不多,那么推薦系統發掘長尾的能力就很好。因此,可以通過研究物品在推薦列表中出現次數的分布描述推薦系統挖掘長尾的能力。如果這個分布比較平,那么說明推薦系統的覆蓋率較高,而如果這個分布較陡峭,說明推薦系統的覆蓋率較低。在信息論和經濟學中有兩個著名的指標可以用來定義覆蓋率。第一個是信息熵:

這里p(i)是物品i的流行度除以所有物品流行度之和。
第二個指標是基尼系數(Gini Index):

這里,ij是按照物品流行度p()從小到大排序的物品列表中第j個物品。下面的代碼可以用來計算給定物品流行度分布后的基尼系數:

def GiniIndex(p): j = 1 n = len(p) G = 0 for item, weight in sorted(p.items(), key=itemgetter(1)): G += (2 * j - n - 1) * weight return G / float(n - 1)


社會學領域有一個著名的馬太效應,即所謂強者更強,弱者更弱的效應。如果一個系統會增大熱門物品和非熱門物品的流行度差距,讓熱門的物品更加熱門,不熱門的物品更加不熱門,那么這個系統就有馬太效應。比如,首頁的熱門排行榜就有馬太效應。進入排行榜的都是熱門的物品,但它們因為被放在首頁的排行榜展示有了更多的曝光機會,所以會更加熱門。相反,沒有進入排行榜的物品得不到展示,就會更不熱門。搜索引擎的PageRank算法也具有一定的馬太效應,如果一個網頁的某個熱門關鍵詞排名很高,并因此被展示在搜索結果的第一條,那么它就會獲得更多的關注,從而獲得更多的外鏈,PageRank排名也越高。

那么,推薦系統是否有馬太效應呢?推薦系統的初衷是希望消除馬太效應,使得各種物品都能被展示給對它們感興趣的某一類人群。但是,很多研究表明現在主流的推薦算法(比如協同過濾算法)是具有馬太效應的。評測推薦系統是否具有馬太效應的簡單辦法就是使用基尼系數。如果G1是從初始用戶行為中計算出的物品流行度的基尼系數,G2是從推薦列表中計算出的物品流行度的基尼系數,那么如果G2 > G1,就說明推薦算法具有馬太效應。

4. 多樣性
用戶的興趣是廣泛的,在一個視頻網站中,用戶可能既喜歡看《貓和老鼠》一類的動畫片,也喜歡看成龍的動作片。那么,為了滿足用戶廣泛的興趣,推薦列表需要能夠覆蓋用戶不同的興趣領域,即推薦結果需要具有多樣性。多樣性推薦列表的好處用一句俗話表述就是“不在一棵樹上吊死”。盡管用戶的興趣在較長的時間跨度中是一樣的,但具體到用戶訪問推薦系統的某一刻,其興趣往往是單一的,那么如果推薦列表只能覆蓋用戶的一個興趣點,而這個興趣點不是用戶這個時刻的興趣點,推薦列表就不會讓用戶滿意。反之,如果推薦列表比較多樣,覆蓋了用戶絕大多數的興趣點,那么就會增加用戶找到感興趣物品的概率。因此給用戶的推薦列表也需要滿足用戶廣泛的興趣,即具有多樣性。

多樣性描述了推薦列表中物品兩兩之間的不相似性。因此,多樣性和相似性是對應的。假設si j ( , ) [0,1] ? 定義了物品i和j之間的相似度,那么用戶u的推薦列表R(u)的多樣性定義如下:

而推薦系統的整體多樣性可以定義為所有用戶推薦列表多樣性的平均值:

從上面的定義可以看到,不同的物品相似度度量函數s(i, j)可以定義不同的多樣性。如果用內容相似度描述物品間的相似度,我們就可以得到內容多樣性函數,如果用協同過濾的相似度函數描述物品間的相似度,就可以得到協同過濾的多樣性函數。

關于推薦系統多樣性最好達到什么程度,可以通過一個簡單的例子說明。假設用戶喜歡動作片和動畫片,且用戶80%的時間在看動作片,20%的時間在看動畫片。那么,可以提供4種不同的推薦列表:A列表中有10部動作片,沒有動畫片;B列表中有10部動畫片,沒有動作片;C列表中有8部動作片和2部動畫片;D列表有5部動作片和5部動畫片。在這個例子中,一般認為C列表是最好的,因為它具有一定的多樣性,但又考慮到了用戶的主要興趣。A滿足了用戶的主要興趣,但缺少多樣性,D列表過于多樣,沒有考慮到用戶的主要興趣。B列表即沒有考慮用戶的主要興趣,也沒有多樣性,因此是最差的。

5. 新穎性
新穎的推薦是指給用戶推薦那些他們以前沒有聽說過的物品。在一個網站中實現新穎性的最簡單辦法是,把那些用戶之前在網站中對其有過行為的物品從推薦列表中過濾掉。比如在一個視頻網站中,新穎的推薦不應該給用戶推薦那些他們已經看過、打過分或者瀏覽過的視頻。但是,有些視頻可能是用戶在別的網站看過,或者是在電視上看過,因此僅僅過濾掉本網站中用戶有過行為的物品還不能完全實現新穎性。

O’scar Celma在博士論文“Music Recommendation and Discovery in the Long Tail”中研究了新穎度的評測。評測新穎度的最簡單方法是利用推薦結果的平均流行度,因為越不熱門的物品越可能讓用戶覺得新穎。因此,如果推薦結果中物品的平均熱門程度較低,那么推薦結果就可能有比較高的新穎性。

但是,用推薦結果的平均流行度度量新穎性比較粗略,因為不同用戶不知道的東西是不同的。因此,要準確地統計新穎性需要做用戶調查。
最近幾年關于多樣性和新穎性的研究越來越受到推薦系統研究人員的關注。ACM的推薦系統會議在2011年有一個專門的研討會討論推薦的多樣性和新穎性。該研討會的組織者認為,通過犧牲精度來提高多樣性和新穎性是很容易的,而困難的是如何在不犧牲精度的情況下提高多樣性和新穎性。關心這兩個指標的讀者可以關注一下這個研討會最終發表的論文。

6. 驚喜度
驚喜度(serendipity)是最近這幾年推薦系統領域最熱門的話題。但什么是驚喜度,驚喜度與新穎性有什么區別是首先需要弄清楚的問題。注意,這里討論的是驚喜度和新穎度作為推薦指標在意義上的區別,而不是這兩個詞在中文里的含義區別(因為這兩個詞是英文詞翻譯過來的,所以它們在中文里的含義區別和英文詞的含義區別并不相同),所以我們首先要摒棄大腦中關于這兩個詞在中文中的基本含義。

可以舉一個例子說明這兩種指標的區別。假設一名用戶喜歡周星馳的電影,然后我們給他推薦了一部叫做《臨歧》的電影(該電影是1983年由劉德華、周星馳、梁朝偉合作演出的,很少有人知道這部有周星馳出演的電影),而該用戶不知道這部電影,那么可以說這個推薦具有新穎性。但是,這個推薦并沒有驚喜度,因為該用戶一旦了解了這個電影的演員,就不會覺得特別奇怪。但如果我們給用戶推薦張藝謀導演的《紅高粱》,假設這名用戶沒有看過這部電影,那么他看完這部電影后可能會覺得很奇怪,因為這部電影和他的興趣一點關系也沒有,但如果用戶看完電影后覺得這部電影很不錯,那么就可以說這個推薦是讓用戶驚喜的。這個例子的原始版本來自于Guy Shani的論文①,他的基本意思就是,如果推薦結果和用戶的歷史興趣不相似,但卻讓用戶覺得滿意,那么就可以說推薦結果的驚喜度很高,而推薦的新穎性僅僅取決于用戶是否聽說過這個推薦結果。

目前并沒有什么公認的驚喜度指標定義方式,這里只給出一種定性的度量方式。上面提到,令用戶驚喜的推薦結果是和用戶歷史上喜歡的物品不相似,但用戶卻覺得滿意的推薦。那么,定義驚喜度需要首先定義推薦結果和用戶歷史上喜歡的物品的相似度,其次需要定義用戶對推薦結果的滿意度。前面也曾提到,用戶滿意度只能通過問卷調查或者在線實驗獲得,而推薦結果和用戶歷史上喜歡的物品相似度一般可以用內容相似度定義。也就是說,如果獲得了一個用戶觀看電影的歷史,得到這些電影的演員和導演集合A,然后給用戶推薦一個不屬于集合A的導演和演員創作的電影,而用戶表示非常滿意,這樣就實現了一個驚喜度很高的推薦。因此提高推薦驚喜度需要提高推薦結果的用戶滿意度,同時降低推薦結果和用戶歷史興趣的相似度。

驚喜度的問題最近幾年獲得了學術界的一定關注,但這方面的工作還不是很成熟。相關工作可以參考Yuan Cao Zhang等的論文和Tomoko Murakami等的論文,本書就不對該問題進一步展開討論了。

7. 信任度
如果你有兩個朋友,一個人你很信任,一個人經常滿嘴跑火車,那么如果你信任的朋友推薦你去某個地方旅游,你很有可能聽從他的推薦,但如果是那位滿嘴跑火車的朋友推薦你去同樣的地方旅游,你很有可能不去。這兩個人可以看做兩個推薦系統,盡管他們的推薦結果相同,但用戶卻可能產生不同的反應,這就是因為用戶對他們有不同的信任度。

對于基于機器學習的自動推薦系統,同樣存在信任度(trust)的問題,如果用戶信任推薦系統,那就會增加用戶和推薦系統的交互。特別是在電子商務推薦系統中,讓用戶對推薦結果產生信任是非常重要的。同樣的推薦結果,以讓用戶信任的方式推薦給用戶就更能讓用戶產生購買欲,而以類似廣告形式的方法推薦給用戶就可能很難讓用戶產生購買的意愿。

度量推薦系統的信任度只能通過問卷調查的方式,詢問用戶是否信任推薦系統的推薦結果。因為本書后面的章節不太涉及如何提高推薦系統信任度的問題,因此這里簡單介紹一下如何提高用戶對推薦結果的信任度,以及關于信任度的一些研究現狀。

提高推薦系統的信任度主要有兩種方法。首先需要增加推薦系統的透明度(transparency),而增加推薦系統透明度的主要辦法是提供推薦解釋。只有讓用戶了解推薦系統的運行機制,讓用戶認同推薦系統的運行機制,才會提高用戶對推薦系統的信任度。其次是考慮用戶的社交網絡信息,利用用戶的好友信息給用戶做推薦,并且用好友進行推薦解釋。這是因為用戶對他們的好友一般都比較信任,因此如果推薦的商品是好友購買過的,那么他們對推薦結果就會相對比較信任。

關于推薦系統信任度的研究主要集中在評論網站Epinion的推薦系統上。這是因為Epinion創建了一套用戶之間的信任系統來建立用戶之間的信任關系,幫助用戶判斷是否信任當前用戶對某一個商品的評論。如圖1-27所示,當用戶在Epinion上瀏覽一個商品時,他會通過用戶評論判斷是否購買該商品。Epinion為了防止垃圾評論或者廣告評論影響用戶的決策,在每條用戶評論的右側都顯示了評論作者的信息,并且讓用戶判斷是信任該評論人還是將他加入黑名單。如果網站具有Epinion的用戶信任系統,那么可以在給用戶做推薦時,盡量推薦他信任的其他用戶評論過的物品。

8. 實時性
在很多網站中,因為物品(新聞、微博等)具有很強的時效性,所以需要在物品還具有時效性時就將它們推薦給用戶。比如,給用戶推薦昨天的新聞顯然不如給用戶推薦今天的新聞。因此,在這些網站中,推薦系統的實時性就顯得至關重要。

推薦系統的實時性包括兩個方面。首先,推薦系統需要實時地更新推薦列表來滿足用戶新的行為變化。比如,當一個用戶購買了iPhone,如果推薦系統能夠立即給他推薦相關配件,那么肯定比第二天再給用戶推薦相關配件更有價值。很多推薦系統都會在離線狀態每天計算一次用戶推薦列表,然后于在線期間將推薦列表展示給用戶。這種設計顯然是無法滿足實時性的。與用戶行為相應的實時性,可以通過推薦列表的變化速率來評測。如果推薦列表在用戶有行為后變化不大,或者沒有變化,說明推薦系統的實時性不高。

實時性的第二個方面是推薦系統需要能夠將新加入系統的物品推薦給用戶。這主要考驗了推薦系統處理物品冷啟動的能力。關于如何將新加入系統的物品推薦給用戶,本書將在后面的章節進行討論,而對于新物品推薦能力,我們可以利用用戶推薦列表中有多大比例的物品是當天新加的來評測

9. 健壯性
任何一個能帶來利益的算法系統都會被人攻擊,這方面最典型的例子就是搜索引擎。搜索引擎的作弊和反作弊斗爭異常激烈,這是因為如果能讓自己的商品成為熱門搜索詞的第一個搜索果,會帶來極大的商業利益。推薦系統目前也遇到了同樣的作弊問題,而健壯性(即robust,魯棒性)指標衡量了一個推薦系統抗擊作弊的能力。

2011年的推薦系統大會專門有一個關于推薦系統健壯性的教程。作者總結了很多作弊方法,其中最著名的就是行為注入攻擊(profile injection attack)。眾所周知,絕大部分推薦系統都是通過分析用戶的行為實現推薦算法的。比如,亞馬遜有一種推薦叫做“購買商品A的用戶也經常購買的其他商品”。它的主要計算方法是統計購買商品A的用戶購買其他商品的次數。那么,我們可以很簡單地攻擊這個算法,讓自己的商品在這個推薦列表中獲得比較高的排名,比如可以注冊很多賬號,用這些賬號同時購買A和自己的商品。還有一種攻擊主要針對評分系統,比如豆瓣的電影評分。這種攻擊很簡單,就是雇用一批人給自己的商品非常高的評分,而評分行為是推薦系統依賴的重要用戶行為。

算法健壯性的評測主要利用模擬攻擊。首先,給定一個數據集和一個算法,可以用這個算法給這個數據集中的用戶生成推薦列表。然后,用常用的攻擊方法向數據集中注入噪聲數據,然后利用算法在注入噪聲后的數據集上再次給用戶生成推薦列表。最后,通過比較攻擊前后推薦列表的相似度評測算法的健壯性。如果攻擊后的推薦列表相對于攻擊前沒有發生大的變化,就說明算法比較健壯。在實際系統中,提高系統的健壯性,除了選擇健壯性高的算法,還有以下方法。
? 設計推薦系統時盡量使用代價比較高的用戶行為。比如,如果有用戶購買行為和用戶瀏覽行為,那么主要應該使用用戶購買行為,因為購買需要付費,所以攻擊購買行為的代價遠遠大于攻擊瀏覽行為。
? 在使用數據前,進行攻擊檢測,從而對數據進行清理。

10. 商業目標
很多時候,網站評測推薦系統更加注重網站的商業目標是否達成,而商業目標和網站的盈利模式是息息相關的。一般來說,最本質的商業目標就是平均一個用戶給公司帶來的盈利。不過這種指標不是很難計算,只是計算一次需要比較大的代價。因此,很多公司會根據自己的盈利模式設計不同的商業目標。

不同的網站具有不同的商業目標。比如電子商務網站的目標可能是銷售額,基于展示廣告盈利的網站其商業目標可能是廣告展示總數,基于點擊廣告盈利的網站其商業目標可能是廣告點擊總數。因此,設計推薦系統時需要考慮最終的商業目標,而網站使用推薦系統的目的除了滿足用戶發現內容的需求,也需要利用推薦系統加快實現商業上的指標。
11. 總結
本節提到了很多指標,其中有些指標可以離線計算,有些只能在線獲得。但是,離線指標很多,在線指標也很多,那么如何優化離線指標來提高在線指標是推薦系統研究的重要問題。關于這個問題,目前仍然沒有什么定論,只是不同系統的研究人員有不同的感性認識。
表1-3對前面提到的指標進行了總結。

對于可以離線優化的指標,我個人的看法是應該在給定覆蓋率、多樣性、新穎性等限制條件下,盡量優化預測準確度。用一個數學公式表達,離線實驗的優化目標是:最大化預測準確度使得 覆蓋率 > A多樣性 > B新穎性 > C 其中,A、B、C的取值應該視不同的應用而定。

1.3.3 評測維度

上一節介紹了很多評測指標,但是在評測系統中還需要考慮評測維度,比如一個推薦算法,雖然整體性能不好,但可能在某種情況下性能比較好,而增加評測維度的目的就是知道一個算法在什么情況下性能最好。這樣可以為融合不同推薦算法取得最好的整體性能帶來參考。
一般來說,評測維度分為如下3種。

? 用戶維度 主要包括用戶的人口統計學信息、活躍度以及是不是新用戶等。
? 物品維度 包括物品的屬性信息、流行度、平均分以及是不是新加入的物品等。
? 時間維度 包括季節,是工作日還是周末,是白天還是晚上等。

如果能夠在推薦系統評測報告中包含不同維度下的系統評測指標,就能幫我們全面地了解推薦系統性能,找到一個看上去比較弱的算法的優勢,發現一個看上去比較強的算法的缺點。

總結

以上是生活随笔為你收集整理的推荐系统实践读书笔记-01好的推荐系统的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。