1. 程式人生 > >推薦系統的評測方法及指標

推薦系統的評測方法及指標

首先宣告,以下內容是看了項亮的《推薦系統實踐》後 寫的,內容基本出自該書,只是我自己再歸納總結一下而已(以免噴子又噴)

推薦系統中,主要有三種評測推薦效果的實驗方法:

1)離線實驗。 往往是從日誌系統中取得使用者的行為資料,然後將資料集分成訓練資料和測試資料,比如80%的訓練資料和20%的測試資料(還可以交叉驗證),然後在訓練資料集上訓練使用者的興趣模型,在測試集上進行測試。 優點:只需要一個數據集即可,不需要實際的推薦系統(實際的也不可能直接拿來測試),離線計算,不需要人為干預,能方便快捷的測試大量不同的演算法。缺點是無法獲得很多實際推薦系統的指標,比如點選率,比如轉化率(誰讓沒有人為干預呢。。)

2)使用者調查。 離線實驗往往測的最多的就是準確率,但是準確率不等於滿意度,所以在演算法上線之前,需要使用者調查一下,測試一下使用者滿意度。

3)AB測試,通過一定的規則把使用者隨機分成幾組,並對不同組的使用者採用不同的推薦演算法,這樣的話能夠比較公平的獲得不同演算法在實際線上時的一些效能指標。但是缺點是週期比較長,需要長期的實驗才能得到可靠的結果。

如何判斷一個推薦系統好不好,主要的測量指標如下:

1)使用者滿意度。這是最最關鍵的指標,推薦系統推薦物品幹嘛,就是希望推薦出來的物品能讓使用者滿意。可以有兩種方法,一是使用者問卷調查,二是線上評測滿意度,比如豆瓣的推薦物品旁邊都有滿意和不滿意的按鈕,亞馬遜這種可以計算推薦的物品有沒有被使用者購買等等,一般用點選率,使用者停留時間,轉化率等指標來度量。

2)預測準確度。如果是類似電影評分機制,則一般計算均方根誤差(誤差平方和取均值)和平均絕對誤差(誤差絕對值和取平均)。如果是topN推薦的話,則主要計算召回率和準確率。準確率就是指我推薦的n個物品中有多少個是對的,其所佔的比重。 召回率則是指正確結果中有多少比率的物品出現在了推薦結果中。兩者的不同就是前者已推薦結果個數當除數,後者已正確結果個數當除數。

3)覆蓋率。 就是指推薦出來的結果能不能很好的覆蓋所有的商品,是不是所有的商品都有被推薦的機會。最簡單的方法就是計算所有被推薦的商品佔物品總數的比重,當然這個比較粗糙,更精確一點的可以資訊熵和基尼係數來度量。

4)多樣性。推薦結果中要體現多樣性,比如我看電影,我既喜歡看格鬥類的電影,同時又喜歡愛裝文藝,那麼給我的推薦列表中就應該這兩個型別的電影都有,而且得根據我愛好比例來推薦,比如我平時80%是看格鬥類的,20%是看文藝類的,那麼推薦結果中最好也是這個比例。可以根據物品間的相似度來計算,一個推薦列表中如果所有物品間的相似度都比較高,那麼往往說明都是同一類物品,缺乏多樣性。

5)新穎性。不能說系統推薦的物品其實我都知道,那這樣推薦系統就完全失去了存在的意義,一般都希望推薦一些使用者不知道的商品或者沒看過沒買過的商品。方法一是取出已經看到過買過的商品,但這還不夠,一般會計算推薦商品的平均流行度,因為通常越不熱門的物品越會讓使用者覺得新穎。比如我愛周星馳,那麼推薦《臨岐》就很有新穎性,因為大家都不知道這是周星馳出演的

6)驚喜度。 這個和新穎度還是有區別的,驚喜度是講我直覺想不出來為什麼會給我推薦這物品,比如電影,但是我看了之後覺得很符合我的胃口,這就是驚喜度。像上面一個例子,只要我知道是周星馳演的,那可能就沒什麼驚喜度,因為我知道是因為演員才給我推薦的這部電影。 注:新穎性和驚喜度暫時沒有什麼可以度量的標準

7)信任度。如果使用者信任推薦系統,那麼往往會增加與推薦系統的互動,從而獲得更好的個性化推薦。增加信任的方法往往是提供推薦解釋,即為什麼推薦這個商品,做到有理有據。也可以通過類似facebook間的好友關係來增加信任度,一般相比於陌生人的推薦,總會選擇好友給的推薦。

8)實時性。新聞等一些物品具有很強的實時性,一般得在具有有效性的時候進行推薦,必須考慮推薦系統處理物品冷啟動的能力。

9)健壯性。要能防止被攻擊,例如有些商家為了提高自己的排名,註冊很多假的帳號,給與自己的商品高分這樣類似的情況,要能防止。

10)商業目標。 一般推薦系統都是為了更好的盈利。。。。。當然這個比較難測。。。