推薦系統評測



在推薦系統的早期研究中,很多人將好的推薦系統定義爲能夠作出準確預測的推薦系統。比如,一個圖書推薦系統預測一個用戶將來會購買《 C++ Primer中文版》這本書,而用戶後來確實購買了,那麼這就被看做一次準確的預測。預測準確度是推薦系統領域的重要指標(沒有之一)。這個指標的好處是,它可以比較容易地通過離線方式計算出來,從而方便研究人員快速評價和選擇不同的推薦算法。

但是,很多研究表明,準確的預測並不代表好的推薦。 比如說,該用戶早
就準備買《 C++ Primer中文版》了,無論是否給他推薦,他都準備購買,那麼這個推薦結果顯然是不好的,因爲它並未使用戶購買更多的書,而僅僅是方便用戶購買一本他本來就準備買的書。那麼,對於用戶來說,他會覺得這個推薦結果很不新穎,不能令他驚喜。同時,對於《 C++ Primer中文版》的出版社來說,這個推薦也沒能增加這本書的潛在購買人數。所以,這是一個看上去很好,但其實卻很失敗的推薦。舉一個更極端的例子,某推測系統預測明天太陽將從東方升起,雖然預測準確率是100%,卻是一種沒有意義的預測。

所謂好的推薦系統不僅僅能夠準確預測用戶的行爲,而且能夠擴展用戶的視野,幫助用戶發現那些他們可能會感興趣,但卻不那麼容易發現的東西。同時,推薦系統還要能夠幫助商家將那些被埋沒在長尾中的好商品介紹給可能會對它們感興趣的用戶。

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

一、推薦系統實驗方法

在介紹推薦系統的指標之前,首先看一下計算和獲得這些指標的主要實驗方法。在推薦系統中,主要有3種評測推薦效果的實驗方法,即離線實驗( offline experiment)、用戶調查( user study)和在線實驗( online experiment)。

1.1 離線實驗

離線實驗的方法一般由如下幾個步驟構成:

  • (1) 通過日誌系統獲得用戶行爲數據,並按照一定格式生成一個標準的數據集;
  • (2) 將數據集按照一定的規則分成訓練集和測試集;
  • (3) 在訓練集上訓練用戶興趣模型,在測試集上進行預測;
  • (4) 通過事先定義的離線指標評測算法在測試集上的預測結果。

推薦系統的離線實驗都是在數據集上完成的,也就是說它不需要一個實際的系統來供它實驗,而只要有一個從實際系統日誌中提取的數據集即可。

優點:不需要真實用戶參與,可以直接快速地計算出來,從而方便、快速地測試大量不同的算法。

缺點:無法獲得很多商業上關注的指標,如點擊率、轉化率等,而找到和商業指標非常相關的離線指標也是很困難的事情。

在這裏插入圖片描述

1.2 用戶調查

離線實驗的指標和實際的商業指標存在差距,比如預測準確率和用戶滿意度之間就存
在很大差別,高預測準確率不等於高用戶滿意度。因此,如果要準確評測一個算法,需要相對比較真實的環境。最好的方法就是將算法直接上線測試,但在對算法會不會降低用戶滿意度不太有把握的情況下,上線測試具有較高的風險,所以在上線測試前一般需要做一次稱爲用戶調查的測試。

用戶調查是推薦系統評測的一個重要工具,很多離線時沒有辦法評測的與用戶主觀感受有關的指標都可以通過用戶調查獲得。比如,如果我們想知道推薦結果是否很令用戶驚喜,那我們最好直接詢問用戶。

優點:可以獲得很多體現用戶主觀感受的指標,相對在線實驗風險很低,出現錯誤後很容易彌補。

缺點:招募測試用戶代價較大,很難組織大規模的測試用戶,因此會使測試結果的統計意義不足。此外,在很多時候設計雙盲實驗非常困難,而且用戶在測試環境下的行爲和真實環境下的行爲可能有所不同,因而在測試環境下收集的測試指標可能在真實環境下無法重現。

1.3 在線實驗

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

AB測試*:是一種很常用的在線評測算法的實驗方法。它通過一定的規則將用戶隨機分成幾組,並對不同組的用戶採用不同的算法,然後通過統計不同組用戶的各種不同的評測指標比較不同算法,比如可以統計不同組用戶的點擊率,通過點擊率比較不同算法的性能。

優點:可以公平獲得不同算法實際在線時的性能指標,包括商業上關注的指標。
缺點:週期比較長,必須進行長期的實驗才能得到可靠的結果。此外,一個大型網站的AB測試系統的設計也是一項複雜的工程。

切分流量是AB測試中的關鍵,不同的層以及控制這些層的團隊需要從一個統一的地
方獲得自己AB測試的流量,而不同層之間的流量應該是正交的。

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

一般來說,一個新的推薦算法最終上線,需要完成上面所說的3個實驗。

  • 首先,需要通過離線實驗證明它在很多離線指標上優於現有的算法。
  • 然後,需要通過用戶調查確定它的用戶滿意度不低於現有的算法。
  • 最後,通過在線的AB測試確定它在我們關心的指標上優於現有的算法。

二、評測指標

本節將介紹各種推薦系統的評測指標。這些評測指標可用於評價推薦系統各方面的性能。這些指標有些可以定量計算,有些只能定性描述,有些可以通過離線實驗計算,有些需要通過用戶調查獲得,還有些只能在線評測。

1. 用戶滿意度

用戶作爲推薦系統的重要參與者,其滿意度是評測推薦系統的最重要指標。但是,用戶滿意度沒有辦法離線計算,只能通過用戶調查或者在線實驗獲得。
用戶調查獲得用戶滿意度主要是通過調查問卷的形式。用戶對推薦系統的滿意度分爲不同的層次。

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

2. 預測準確度

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

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

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

(1)評分預測

很多提供推薦服務的網站都有一個讓用戶給物品打分的功能。那麼,如果知道了用戶對物品的歷史評分,就可以從中習得用戶的興趣模型,並預測該用戶在將來看到一個他沒有評過分的物品時,會給這個物品評多少分。預測用戶對物品評分的行爲稱爲評分預測。

評分預測的預測準確度一般通過均方根誤差( RMSE)和平均絕對誤差( MAE)計算。對於測試集中的一個用戶u和物品i,令ruir_{ui}是用戶uu對物品ii的實際評分,而r^ui\hat{r}_{ui} 是推薦算法給出的預測評分,那麼RMSE的定義爲:
在這裏插入圖片描述
MAE採用絕對值計算預測誤差,它的定義爲:
在這裏插入圖片描述
關於RMSE和MAE這兩個指標的優缺點, Netflix認爲RMSE加大了對預測不準的用戶物品評分的懲罰(平方項的懲罰),因而對系統的評測更加苛刻。研究表明,如果評分系統是基於整數建立的(即用戶給的評分都是整數),那麼對預測結果取整會降低MAE的誤差。

(2)TopN推薦

網站在提供推薦服務時,一般是給用戶一個個性化的推薦列表,這種推薦叫做TopN推薦。TopN推薦的預測準確率一般通過準確率( precision) /召回率( recall)度量.

令R(u)是根據用戶在訓練集上的行爲給用戶作出的推薦列表,而T(u)是用戶在測試集上的行爲列表。那麼,推薦結果的召回率定義爲:
在這裏插入圖片描述
推薦結果的準確率定義爲:
在這裏插入圖片描述
有的時候,爲了全面評測TopN推薦的準確率和召回率,一般會選取不同的推薦列表長度N,計算出一組準確率/召回率,然後畫出準確率/召回率曲線( precision/recall curve)。

3. 覆蓋率

覆蓋率( coverage)描述一個推薦系統對物品長尾的發掘能力。覆蓋率有不同的定義方法,最簡單的定義爲推薦系統能夠推薦出來的物品佔總物品集合的比例。假設系統的用戶集合爲U,推薦系統給每個用戶推薦一個長度爲N的物品列表R(u)。那麼推薦系統的覆蓋率可以通過下面的公式計算:
在這裏插入圖片描述
上面的定義過於粗略。覆蓋率爲100%的系統可以有無數的物品流行度分佈。爲了更細
致地描述推薦系統發掘長尾的能力,需要統計推薦列表中不同物品出現次數的分佈。如果所有的物品都出現在推薦列表中,且出現的次數差不多,那麼推薦系統發掘長尾的能力就很好。因此,可以通過研究物品在推薦列表中出現次數的分佈描述推薦系統挖掘長尾的能力。如果這個分佈比較平,那麼說明推薦系統的覆蓋率較高,而如果這個分佈較陡峭,說明推薦系統的覆蓋率較低。

在信息論和經濟學中有兩個著名的指標可以用來定義覆蓋率。

第一個是信息熵:
在這裏插入圖片描述
這裏p(i)是物品i的流行度除以所有物品流行度之和。

第二個指標是基尼係數( Gini Index):
在這裏插入圖片描述
這裏, iji_j是按照物品流行度p()p()從小到大排序的物品列表中第j個物品。

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

4. 多樣性

多樣性描述了推薦列表中物品兩兩之間的不相似性。因此,多樣性和相似性是對應的。假設s(i,j)[0,1]s( i ,j ) \in[0,1] 定義了物品i和j之間的相似度,那麼用戶u的推薦列表R(u)的多樣性定義如下:
在這裏插入圖片描述
而推薦系統的整體多樣性可以定義爲所有用戶推薦列表多樣性的平均值:
在這裏插入圖片描述
從上面的定義可以看到,不同的物品相似度度量函數s(i,j)s(i, j)可以定義不同的多樣性。如果用內容相似度描述物品間的相似度,我們就可以得到內容多樣性函數,如果用協同過濾的相似度函數描述物品間的相似度,就可以得到協同過濾的多樣性函數。

5. 新穎性

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

6. 驚喜度

驚喜度( serendipity)是最近這幾年推薦系統領域最熱門的話題。但什麼是驚喜度,驚喜度與新穎性有什麼區別是首先需要弄清楚的問題。注意,這裏討論的是驚喜度和新穎度作爲推薦指標在意義上的區別,而不是這兩個詞在中文裏的含義區別(因爲這兩個詞是英文詞翻譯過來的,所以它們在中文裏的含義區別和英文詞的含義區別並不相同), 驚喜度指如果推薦結果和用戶的歷史興趣不相似,但卻讓用戶覺得滿意,那麼就可以說推薦結果的驚喜度很高,而推薦的新穎性僅僅取決於用戶是否聽說過這個推薦結果。

驚喜度的問題最近幾年獲得了學術界的一定關注,但目前並沒有什麼公認的驚喜度指標定義方式,這方面的工作還不是很成熟。

7. 信任度

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

量推薦系統的信任度只能通過問卷調查的方式,詢問用戶是否信任推薦系統的推薦結果。

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

8. 實時性

在很多網站中,因爲物品(新聞、微博等)具有很強的時效性,所以需要在物品還具有時效性時就將它們推薦給用戶。

推薦系統的實時性包括兩個方面。首先,推薦系統需要實時地更新推薦列表來滿足用戶新的行爲變化。如果推薦列表在用戶有行爲後變化不大,或者沒有變化,說明推薦系統的實時性不高。實時性的第二個方面是推薦系統需要能夠將新加入系統的物品推薦給用戶。這主要考驗了推薦系統處理物品冷啓動的能力。

9. 健壯性

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

算法健壯性的評測主要利用模擬攻擊。首先,給定一個數據集和一個算法,可以用這個算法給這個數據集中的用戶生成推薦列表。然後,用常用的攻擊方法向數據集中注入噪聲數據,然後利用算法在注入噪聲後的數據集上再次給用戶生成推薦列表。最後,通過比較攻擊前後推薦列表的相似度評測算法的健壯性。如果攻擊後的推薦列表相對於攻擊前沒有發生大的變化,就說明算法比較健壯。

在實際系統中,提高系統的健壯性,除了選擇健壯性高的算法,還有以下方法。

  • 設計推薦系統時儘量使用代價比較高的用戶行爲。比如,如果有用戶購買行爲和用戶瀏覽行爲,那麼主要應該使用用戶購買行爲,因爲購買需要付費,所以攻擊購買行爲的代價遠遠大於攻擊瀏覽行爲。
  • 在使用數據前,進行攻擊檢測,從而對數據進行清理。

10. 商業目標

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

11. 總結
本節提到了很多指標,其中有些指標可以離線計算,有些只能在線獲得。但是,離線指標很多,在線指標也很多,那麼如何優化離線指標來提高在線指標是推薦系統研究的重要問題。關於這個問題,目前仍然沒有什麼定論,只是不同系統的研究人員有不同的感性認識。

表1-3對前面提到的指標進行了總結。

在這裏插入圖片描述
對於可以離線優化的指標,我個人的看法是應該在給定覆蓋率、多樣性、新穎性等限制條件下,儘量優化預測準確度。用一個數學公式表達,離線實驗的優化目標是:

在這裏插入圖片描述
其中, A、 B、 C的取值應該視不同的應用而定。

三、測評維度

在評測系統中還需要考慮評測維度,比如一個推薦算法,雖然整體性能不好,但可能在某種情況下性能比較好,而增加評測維度的目的就是知道一個算法在什麼情況下性能最好。這樣可以爲融合不同推薦算法取得最好的整體性能帶來參考。

一般來說,評測維度分爲如下3種。

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

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

發佈了90 篇原創文章 · 獲贊 37 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章