推薦系統通常可分為兩部分召回與排序,粗排和精排
首先明確一點,計算廣告或者推薦系統中數據特點,大多是高維離散型數據。
1 召回
召回框架如下圖所示:
常用的召回算法:
1基於共現關系的collaborative Filtering:利用用戶的行為數據建模。這里需要注意用戶活躍度與物品流行度,僅僅基於用戶行為數據設計的推薦算法一般稱為協同過濾算法
以下展示常見的相似度計算公式:
1 用戶相似度
A:
B: UserCF算法中用戶u對物品i的感興趣程度:
其中, S(u, K)包含和用戶u興趣最接近的K個用戶, N(i)是對物品i有過行為的用戶集合, wuv是用戶u和用戶v的興趣相似度, rvi代表用戶v對物品i的興趣,因為使用的是單一行為的隱反饋數據,所以所有的rvi=1
C:
可以看到,該公式懲罰了用戶u和用戶v共同興趣列表中熱門物品對他們相似度的影響
2 基於物品的協同過濾
這里,分母|N(i)|是喜歡物品i的用戶數,而分子 N i N j ( ) ( ) 是同時喜歡物品i和物品j的用戶數。因此,上述公式可以理解為喜歡物品i的用戶中有多少比例的用戶也喜歡物品j
上述公式雖然看起來很有道理,但是卻存在一個問題。如果物品j很熱門,很多人都喜歡那么Wij就會很大,接近1。因此,該公式會造成任何物品都會和熱門的物品有很大的相似度,這對於致力於挖掘長尾信息 的推薦系統來說顯然不是一個好的特性。為了避免推薦出熱門的物品,
可以用下面的公式:
這個公式懲罰了物品j的權重,因此減輕了熱門物品會和很多物品相似的可能性。
下圖是一個根據上面的程序計算物品相似度的簡單例子。圖中最左邊是輸入的用戶行為記錄,每一行代表一個用戶感興趣的物品集合。然后,對於每個物品集合,我們將里面的物品兩兩加一,得到一個 矩陣。最終將這些矩陣相加得到上面的C矩陣。其中C[i][j]記錄了同時喜歡物品i和物品j的用戶數。最后,將C矩陣歸一化可以得到物品之間的余弦相似度矩陣W。
改進版ItemToItem:
2 Model based CF:
MF
SVD
FISM: 用評價過的Item表示用戶:
SVD++: 嵌入ID類型數據以及用戶表示過的物品表示用戶:
FM:
通過用戶偏好建模選取key,通過k近鄰搜索來查找value
查找算法: LSH KD tree ball tree
2 排序
推薦系統中的排序是多目標排序, 比如CTR與CVR預估,按照優化方式的不同,也就是learn to rank的三種方式,可分為Pointwise CTR預估,Pairwise bpr Lambed MART,listWise
常用的pointwise方式,也就是ctr預估模型,之前已經介紹過,現在來看pair-wise方式。
pointwise在優化L2 loss ,
但是很多證據表明
一個低MSE模型不⼀定代表排序效果好。。
– Possible Reasons:
1) 均方誤差(e.g., RMSE) and 排序指標之間的分歧
2) 觀察有偏 – 用戶總是去對喜歡的電影打分 現在的工作開始逐步朝着優化pairwise ranking loss
優化相對序關系,不是優化絕對值。
首先明確排序模型的評價指標:
NDCG:
AUC: 有兩層含義,1 ROC曲線下的面積,2 任給一個正樣本,排在負樣本之前的概率有多大。
但是AUC通常不可導:所以引入了BPR,
可以看出BPR可以近似看做AUC。類似的還有RankNet,常見的排序指標⽆法求梯度
• 通過概率損失函數學習Ranking Function
• 兩個候選集之間的相對排序位置作為⽬標概率
• 交叉熵(cross entropy loss function)作為概率損失函數 ,模型有LambdaNet與LambdaMart,后續總結。