【推薦算法工程師技術棧系列】推薦系統--數據效果與評估

推薦系統上線的基本條件

一個新的推薦算法最終上線,需要完成上面所說的3個實驗:
(1)首先,需要通過離線實驗證明它在很多離線指標上優于現有的算法;
(2)然后,需要通過用戶調查(或內部人工評測)確定它的用戶滿意度不低于現有的算法;
(3)最后,通過在線等AB測試確定它在我們關心的指標上優于現有的算法。

AB實驗

(1)AB test 的好處是顯而易見的,可以公平獲得不同算法實際在線時的性能指標;
(2)AB test 和用戶調查一樣,同樣需要考慮到分布的隨機,盡量要將與最終指標有相關性的因素都列出來,總而言之就是切分流量是AB test 的關鍵;
(3)AB test 的一個重要缺點就是實驗周期長,這樣才能得到可靠的結果,因此AB test 不應該測試所有的算法,而是只測試在離線實驗和用戶調查中表現很好的算法;
(4)如果有用戶標簽庫的話,會極大的幫助在線實驗。

功能列表

功能 描述
分流 支持召回排序等指定方式分流,比如尾號哈希,或分層哈希
白名單 實驗開始前預置一些用戶白名單到實驗組
實驗管理 支持實驗創建,實驗列表,實驗修改等
指標管理 指標計算定義
效果圖表 diff,AAdiff;以及對應圖表
可信度分析 根據實驗組的置信區間(95%置信區間)和p值(當p值小于等于0.05時,實驗結果是顯著的)判定實驗是否可信

數據指標

這里對應到推薦的指標集一般包括點擊率(ctr),關注率,觀看時長,MAU/DAU等;
而線下一般采用(特征/召回)覆蓋率,AUC,gAUC,相關性&準確率(人工評測)等指標;

覆蓋率

其中特征覆蓋率\(coverage = \frac{N_1}{N} ; 其中N_1是特征i中非空個數,N是總樣本數; 對應到召回覆蓋率,N_1是有召回結果的用戶數(或召回的內容數),N是總用戶數(或可推薦的內容數)\)

不得不提的是在項亮的《推薦系統實踐》中推薦系統的覆蓋率是度量一個推薦系統挖掘長尾商品的能力(曝光內容分散程度,越集中頭部效應/馬太效應越嚴重):

\[ Coverage = \frac{|\cup_{u \in U} R(u)|}{|I|} ;其中U是用戶集合,I是物品集合,R(u)是為用戶u推薦的N個物品的集合\]

在度量推薦系統覆蓋率更科學的一個指標是基尼系數(Gini Index),因為其考慮了每個物品被推薦次數是否平均,系數越大,表示越不均等,系數越小,表示越均等。gini系數最開始是被用來量度貧富懸殊程度,具體推導見附錄洛倫茨曲線和基尼系數:

gini
1905年,統計學家洛倫茨提出了洛倫茨曲線,如圖一。將社會總人口按收入由低到高的順序平均分為10個等級組,每個等級組均占10%的人口,再計算每個組的收入占總收入的比重。然后以人口累計百分比為橫軸,以收入累計百分比為縱軸,繪出一條反映居民收入分配差距狀況的曲線,即為洛倫茨曲線。

\[ Gini = \frac{1}{n-1} \sum^n_{j=1} (2j-n-1)p(j) ;其中p(j)是從小到大排序的物品列表中第j個物品被推薦的比例,也即p(j)=\frac{物品j被推薦次數}{\sum^n_{j=1}物品j被推薦次數} \]

AUC及gAUC

AUC(Area under curve)是機器學習常用的二分類評測手段,直接含義是ROC曲線下的面積;進一步說其實就是隨機抽出一對樣本(一個正樣本,一個負樣本),然后用訓練得到的分類器來對這兩個樣本進行預測,預測得到正樣本的概率大于負樣本概率的概率。

ROC
ROC曲線的橫軸為假正率(False Positive Rate,FPR);縱軸為“真正率”(True Positive Rate,TPR)
\[ TPR = \frac{fp}{p} ; FPR = \frac{tp}{n} ; fp是實際為負預測為正的樣本個數;tp是實際為正預測也為正的個數;n是真實負樣本總數;p是真實正樣本總數 \]
\[ AUC = \frac{ \sum_{i \in postitiveClass} rank_i - \frac{M(1+M)}{2}}{M+N} ;其中rank_i實代表了樣本i預測概率超過的樣本的數目(最高的概率的rank為n,第二高的為n-1);M是正樣本個數,N是負樣本個數\]

AUC反映的是整體樣本間的一個排序能力,而實際用戶的結果是個性化的,我們更關注的是同一個用戶對不同物品間的排序能力,gAUC(group auc)實際是計算每個用戶的auc,然后加權平均,最后得到group auc,這樣就能減少不同用戶間的排序結果不太好比較這一影響。

\[ gAUC = \frac{\sum_{(u,p)} w_{(u,p)} * AUC_{(u,p)}}{\sum_{(u,p)} w_{(u,p)}} \]

實際處理時權重一般可以設為每個用戶view的次數,或click的次數,而且一般計算時,會過濾掉單個用戶全是正樣本或負樣本的情況。
但是實際上一般還是主要看auc這個指標,但是當發現auc不能很好的反映模型的好壞(比如auc增加了很多,實際效果卻變差了),這時候可以看一下gauc這個指標。

指標展示

這方面一般由數據平臺的產品進行支持,簡單的也可以自己寫SQL跑數據;在此就不詳細展開了。

指標監控

這方面一般依托監控報警平臺和數據平臺;業務方也可以自己寫腳本監控;在此就不詳細展開了。

人工評測

數據指標和真實的用戶體驗存在差異,Bad case的反饋是優化推薦系統的一大途徑

附錄

posted @ 2019-10-13 11:57  混沌戰神阿瑞斯  閱讀(...)  評論(... 編輯 收藏
ag二分彩