1. 程式人生 > >項亮《推薦系統實踐》讀書筆記1-推薦系統評價指標

項亮《推薦系統實踐》讀書筆記1-推薦系統評價指標

推薦系統評價指標

1.評分預測
預測準確度:
均方根誤差(RMSE): 這裡寫圖片描述
平均絕對誤差(MAE): 這裡寫圖片描述
關於這兩個指標的優缺點,Netflix認為RMSE加大了對預測不準的使用者物品評分的懲罰(平方項的懲罰),因為對系統的評測更加苛刻。研究表明,如果評分系統是基於整數建立的(即使用者給的評分都是整數),那麼對預測結果取整會降低MAE的誤差。

2.Top N推薦:給使用者一個個性化的推薦列表,預測準確率一般通過準確率和召回率度量。
令 R(u)是根據使用者在訓練集上的行為給使用者作出的推薦列表,而T(u)是使用者在測試集上的行為列表。
那麼,推薦結果的召回率定義為:
這裡寫圖片描述
推薦結果的準確率定義為: 這裡寫圖片描述


為了全面評測Top N推薦的準確率和召回率,一般會選取不同的推薦列表長度N,計算出一組準確率/召回率,然後畫出準確率/召回率曲線。
3.覆蓋率
覆蓋率(coverage)描述了一個推薦系統對物品長尾的發掘能力,覆蓋率有不同的定義方法,最簡單的定義為推薦系統能夠推薦出來的物品佔總物品集合的比例。假設系統的使用者集合為U,推薦系統給每個使用者推薦一個長度為N的物品列表R(u),那麼:
這裡寫圖片描述
覆蓋率為100%的推薦系統可以將每個物品都推薦給至少一個使用者。熱門排行榜的推薦覆蓋率是很低的,它只會推薦那些熱門的物品,這些物品在總物品中佔的比例很小。一個好的推薦系統不僅需要有比較高的使用者滿意度,也要有較高的覆蓋率。
但是上面的定義過於粗略。覆蓋率為100%的系統可以有無數的物品流行度分佈。為了更細緻地描述推薦系統發掘長尾的能力,需要統計推薦列表中不同物品出現次數的分佈。如果所有的物品都出現在推薦列表中,且出現的次數差不多,那麼推薦系統發掘長尾的能力就很好。可以用物品在推薦列表中出現次數的分佈描述推薦系統挖掘長尾的能力。如果這個分佈比較平,那麼說明推薦系統的覆蓋率較高,而如果這個分佈比較陡峭,說明推薦系統的覆蓋率較低。有兩個比較著名的指標可以用來定義覆蓋率。
第一個是資訊熵:這裡寫圖片描述
,其中p(i)是物品i的流行度除以所有物品流行度之和。
第二個指標是基尼係數(Gini Index): 這裡寫圖片描述, 這裡寫圖片描述是按照物品流行度p()從小到大排序的物品列表中第j個物品。
評測推薦系統是否具有馬太效應的簡單辦法就是使用基尼係數,如果G1是從初始使用者行為中計算出的物品流行度的基尼係數,G2是從推薦列表中計算出的物品流行度的基尼係數,如果G2>G1,就說明推薦演算法具有馬太效應。
4.多樣性
為了滿足使用者廣泛的興趣,推薦列表需要能夠覆蓋使用者不同的興趣領域,即推薦結果需要具有多樣性。多樣性推薦列表的好處用一句俗語表述就是“不在一棵樹上吊死”。儘管使用者的興趣在較長的時間跨度中是不一樣的,但具體到使用者訪問推薦系統的某一個刻,其興趣往往是單一的,那麼如果推薦列表只能覆蓋使用者的一個興趣點,而這個興趣點不是使用者這個時刻的興趣點,推薦列表就不會讓使用者滿意。反之,如果推薦列表比較多樣,覆蓋了使用者絕大多數的興趣點,那麼就會增加使用者找到感興趣物品的概率。因此給使用者的推薦列表也需要滿足使用者廣泛的興趣,即具有多樣性。
多樣性描述了推薦列表中物品兩兩之間的不相似性。假設 這裡寫圖片描述
定義了物品i和j之間的相似度,那麼使用者u的推薦列表 這裡寫圖片描述的多樣性定義如下:
這裡寫圖片描述
而推薦系統的整體多樣性可以定義為所有使用者推薦列表多樣性的平均值:
這裡寫圖片描述
不同的物品相似度度量函式 這裡寫圖片描述可以定義不同的多樣性。如果用內容相似度描述物品間的相似度,我們就可以得到內容多樣性函式,如果用協同過濾的相似度函式描述物品間的相似度,就可以得到協同過濾的多樣性函式。
5.新穎性
新穎的推薦是指給使用者推薦那麼他們以前沒有聽說過的物品。在一個網站中實現新穎性的最簡單辦法是,把那些使用者之前在網站在對其有過行為的物品從推薦列表裡過濾掉,當然最好是把在其它網站有過行為的物品也過濾掉。
評測新穎度的最簡單方法是利用推薦結果的平均流行度,因為越不熱門的物品越可能讓使用者覺得新穎。因此,如果推薦結果中物品的平均熱門程度較低,那麼推薦結果就越有可能有比較高的新穎性。但是,用推薦結果的平均度度量新穎性比較粗略,因為不同使用者不知道的東西是不同的。因此,要準確地統計新穎性需要做使用者調查。
通過犧牲精度來提高多樣性和新穎性是很容易的,而困難的是如何在不犧牲精度的情況下提高多樣性和新穎性。
6.驚喜度
如果推薦結果和使用者的歷史興趣不相似,但卻讓使用者覺得滿意,那麼就可以說推薦結果的驚喜度很高,而推薦的新穎性僅僅取決於使用者是否聽說過和這個推薦結果。(具體參考Guy Shani的論文。)
7.信任度
同樣的推薦結果,以讓使用者信任的方式推薦給使用者就更能讓使用者產生購買慾,而類似廣告形式的方法推薦給使用者就可能很難讓使用者產生購買的意願。
提高推薦系統的信任度主要有兩種方法。首先需要增加推薦系統的透明度(transparency),而增加推薦系統透明度的主要辦法是提供推薦解釋。只有讓使用者瞭解推薦系統的執行機制,讓使用者認同推薦系統的執行機制,才會提高使用者對推薦系統的信任度。其次是考慮使用者的社交網路資訊,利用使用者的好友資訊給使用者做推薦,並且用好友進行推薦解釋。這是因為使用者一般對他們的好友一般都比較信任,因此如果推薦的商品是好友購買過的,那麼他們對推薦結果就和比較信任。
8.實時性
在一些網站中,因為物品(新聞、微博等)具有很強的時效性,所以需要在物品還具有時效性時就將他們推薦給使用者。
推薦系統的實時性包括兩個方面。首先,推薦系統需要實時地更新推薦列表來滿足使用者新的行為變化。很多推薦系統都會在離線狀態每天計算一次使用者推薦列表,然後於線上期間將推薦列表展示給使用者。這種設計顯然是無法滿足實時性的。與使用者行為相應的實時性,可以通過推薦列表的變化速率來預測。如果推薦列表在使用者有行為後變化不大,或者沒有變化,說明推薦系統的實時性不高。
實時性的第二個方面是推薦系統需要能夠將新加入系統的物品推薦給使用者,這主要考驗了推薦系統處理物品冷啟動的能力。對於新物品推薦能力,我們可以利用使用者推薦列表中有多大比例的物品是當天新加的來預測。
9.健壯性(Robust,魯棒性)
衡量一個推薦系統抗擊作弊的能力。
在實際系統中,提高系統的健壯性,除了選擇健壯性高的演算法,還有以下方法:
(1) 設計推薦系統時儘量使用代價比較高的使用者行為。比如攻擊購買行為的代價遠遠大於攻擊瀏覽行為。
(2) 在使用資料前,進行攻擊檢測,從而對資料進行清理。
10.商業目標
設計推薦系統時需要考慮最終的商業目標,而網站使用推薦系統的目的除了滿足使用者發現內容的需求,也需要利用推薦系統加快實現商業上的指標。
11.推薦系統評價指標簡表
這裡寫圖片描述
–《推薦系統評價指標綜述》朱鬱筱,呂琳媛

[1]: 項亮《推薦系統實踐》