Shusen Wang推荐系统学习 --召回 ItemCF
学习b站up主Shusen Wang的推荐系统
基于物品的协同过滤(ItrmCF)
中心思想就是,如果你喜欢a,b,c三件商品,d商品与abc相似,那么你也可能喜欢d商品
对此就要计算物品的相似程度
物品相似度
物品相似度的思想是,一个物品的相同用户很多就意味着这两件物品是相似的
sim(i1,i2):=∣V∣∣W1∣∣W2∣
sim(i_{1},i_{2}) := {\frac{\big|\mathcal{V}\big|}{\sqrt{\big|\mathcal{W}_{1}\big|\big|\mathcal{W}_{2}\big|}}}
sim(i1,i2):=W1W2V
w1是喜欢物品1的用户集合,w2是喜欢物品2的用户集合,v是两个集合的交集
该公式没有考虑用户的喜欢程度
sim(i1,i2)=[∑v∈Vlike(v,i1)⋅like(v,i2)][∑u1∈W1like2(u1,i1)][∑u2∈W2like2(u2,i2)]
sim(i_{1}, i_{2}) = \frac{\left[\sum_{v \in \mathcal{V}} like(v, i_{1}) \cdot like(v, i_{2})\right]}{\left[\sqrt{\sum_{u_{1} \in \mathcal{W}_{1}} like^{2}(u_{1}, i_{1})}\right] \left[\sqrt{\sum_{u_{2} \in \mathcal{W}_{2}} like^{2}(u_{2}, i_{2})}\right]}
sim(i1,i2)=[∑u1∈W1like2(u1,i1)][∑u2∈W2like2(u2,i2)][∑v∈Vlike(v,i1)⋅like(v,i2)]
like(v,i)like(v,i)like(v,i)代表了用户对i的喜爱程度,其实观察公式,他和余弦相似度的公式长得很像,其实就是余弦相似度。他的值越接近1代表两个物品越相似,越接近-1代表两个物体越不相似
ItemCF的完整流程
离线计算和在线预测
离线计算
离线计算建立物品到物品的索引,一个物品对应前k个与他最相似的物品
在线推理
线上给出用户最近交互的几件商品,建立用户id到物品的索引,把与最近交互的几件物品的相似物品推荐给用户
Swing模型
如果某两件物品对应的用户重复度过高,可能存在以下情况:
两个视频,一个是关于鸡蛋涨价的,一个是关于军事战争的,但是这两个视频都被发送到一个微信群中,微信群中的用户都观看了这两个视频,导致用户重复度过高,推荐系统误认为这两个视频是相似的。
因此我们要减少这部分用户造成的影响,就提出了Swing模型。
sim(i1,i2)=∑u1∈V∑u2∈V1a+overlap(u1u2)
sim(i_{1},i_{2}) = \sum_{u_1\in\mathcal{V}}{\sum_{u_2\in\mathcal{V}}{\frac{1}{a+overlap(u_{1}u_{2})}}}
sim(i1,i2)=u1∈V∑u2∈V∑a+overlap(u1u2)1
设用户u1喜爱的物品为j1,用户u2喜欢的物品为j2
两个用户的重合度就为
overlap(u1u2)=J1∩J2overlap(u_1u_2) = J_1\cap J_2overlap(u1u2)=J1∩J2
两个用户的重合度高,就代表这两个用户可能来自同一个小团体,要减少这部分人的权重