1. 程式人生 > >推薦系統評測方法

推薦系統評測方法

推薦系統

什麽才是好的推薦系統?以圖書推薦系統為例:

首先推薦系統要滿足用戶的需求,要盡可能地覆蓋各種圖書,要能收集到高質量的用戶反饋,增加用戶和圖書網站的交互,提高網站的收入。要能夠準確預測用戶的行為,還要擴展用戶的視野,幫助用戶發現那些他們可能會感興趣的但卻不那麽容易發現的東西。本文主要從用戶,網站,內容提供方提出不同的指標。

三種推薦系統實驗方法

1、離線實驗(offline experiment)

實施步驟:

(1)將從日誌系統收集來的用戶行為數據,生成為一個標準的數據集;

(2)按照一定的規則,將數據集分成訓練集和測試集兩個部分;

(3)在訓練集上訓練用戶興趣模型,在測試集上進行測試;

(4)利用定義好的離線指標評測算法,在測試集上進行結果預測。

優點:所有實驗在數據集(從系統日誌中提取而來)上完成,對實際系統和用戶參與依賴度低,方便快捷;

缺點:對商業上關註的指標獲取能力弱;

2、用戶調查(user study)

用戶調查,是一種通過分析被調查用戶(真實的用戶),在被測推薦系統上完成任務時的行為和回答問題的情況,來了解測試系統性能的一種實驗方法。它旨在為上線測試提供準備工作,以防範上線測試所潛在的降低用戶滿意度的問題。

優點:在離線測試解決不了的“用戶主觀感受相關指標”的獲取上,有著優越的性能;風險易控。

缺點:實驗成本高,難組織大規模測試;雙盲實驗設計困難,影響測評結果。

3、在線實驗(online experiment)

這裏的在線實驗方法,偏指AB測試方法。

實施步驟:

(1)通過一定規則將用戶隨機分組;

(2)對不同組的用戶采用不同算法;

(3)統計不同組用戶的不同評測指標,以比較不同的算法。

優點:公平獲得不同算法實際在線的性能指標,包括商業上關註的指標。

缺點:試驗周期較長;設計AB測試系統的工程量大,且流量切分設計一般必不可少。

評測指標:

1、用戶滿意度:

基本在實際操作中不可用,首先這是一個相對主觀的指標,一般依靠用戶調研獲取,而用戶基本也不知道自己想要什麽,最多談一個表面上的感受,參考價值不大。其次最關心推薦系統好壞的往往是這個項目的PM,用戶滿意度的概念很容易被偷換成PM滿意度或老板滿意度。以前有個朋友在遊戲公司,結果各個需求都以老板的滿意為準,最後倒閉了。所以在實際情況下,會用衡量準確度的客觀指標來參考,比如通過點擊率的統計看用戶對推出內容的滿意程度。

2、預測準確度:

應用中,按場景可以將推薦系統分為TopN推薦和評分推薦兩種,評分推薦一般用RMSE( 均方根誤差)和MAE(絕對平均)誤差計算。其中RMSE加大了對預測不準的項的懲罰,評測更加嚴格。而對於另一種TopN推薦的預測準確率,一般用Recall(召回率)和Precision(準確率)來評測,需要的時候還可以計算多對準確率和召回率,然後畫出PR曲線進行評測。

3、覆蓋率:

覆蓋率用於描述系統對於長尾物品的發掘能力,簡單說就是對所有用戶推薦的物品能夠包括的物品種類越多,覆蓋率越大,這樣就引出了覆蓋率最簡單的一種定義方式:系統能夠推薦的物品占總物品集合的比例。但是這樣的計算方法沒有考慮推薦列表中每種物品出現的頻率,如果列表中不但出現的比例大,而且每種物品出現的頻率也相近,那麽對長尾的挖掘能力越好。通過物品在推薦列表中出現次數定義覆蓋率的方式有信息熵和基尼系數兩種。這兩個指標的計算又會涉及到流行度的計算,一種商品的流行度就是它和多少用戶發生了用戶行為。
長尾效應如下圖:
技術分享圖片
長尾效應,英文名稱Long Tail Effect。“頭”(head)和“尾”(tail)是兩個統計學名詞。正態曲線中間的突起部分叫“頭”;兩邊相對平緩的部分叫“尾”。從人們需求的角度來看,大多數的需求會集中在頭部,而這部分我們可以稱之為流行,而分布在尾部的需求是個性化的,零散的小量的需求。而這部分差異化的、少量的需求會在需求曲線上面形成一條長長的“尾巴”,而所謂長尾效應就在於它的數量上,將所有非流行的市場累加起來就會形成一個比流行市場還大的市場。
簡單來說就是熱門的商品和 冷門商品貧富差距太大

4、多樣性:
推薦列表中物品的兩兩不相似性,可以用相似度來定義,相似度越高,多樣性就越低。

5、新穎性:
推出那些用戶之前沒有接觸過的內容。

6、驚喜度:
推薦一個和用戶興趣一點關系沒有但是用戶覺得還很不錯的內容。

7、信任度:
要讓用戶認同推薦系統的推薦結果和推薦理由。

8、實時性:
產生了新的用戶行為之後能不能實時更新推薦裏列表
加入了新的物品能不能立即推薦給用戶(物品的冷啟動問題)

9、健壯性:
又稱魯棒性,抗擊作弊的能力
可以通過模擬攻擊進行評測
提高健壯性的方法:
1、設計推薦系統是使用代價高的用戶行為
2、使用數據訓練模型前進行攻擊檢測,對數據進行清理

推薦系統評測方法