推薦系統一般可分爲兩部分召回與排序,粗排和精排算法
首先明確一點,計算廣告或者推薦系統中數據特色,大可能是高維離散型數據。框架
1 召回函數
召回框架以下圖所示:學習
經常使用的召回算法:優化
1基於共現關係的collaborative Filtering:利用用戶的行爲數據建模。這裏須要注意用戶活躍度與物品流行度,僅僅基於用戶行爲數據設計的推薦算法通常稱爲協同過濾算法
spa
如下展現常見的類似度計算公式: 設計
1 用戶類似度 blog
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,後續總結。