推荐系统:I2I召回
·
1. 基准
i2i召回只需要考虑两个点
- 如何表示一个商品item
- 相似度量函数是什么
1. 常规的Item-CF
- 所有点击的用户拼接成一个向量,以此来表示一个item。假如我们有100个用户,每个用户是否点击过这个商品可以编码为一个向量
| user-item | u1 | u2 | u3 | … | u100 |
|---|---|---|---|---|---|
| i1 | 1 | 0 | 0 | 0 | 1 |
| i2 | 1 | 0 | 1 | 0 | 1 |
| i3 | 0 | 0 | 1 | 0 | 1 |
- 度量函数使用cosin函数,一个优点是分母部分可以抑制热度商品,缓解哈利波特问题。
sim(I1,I2)=∑u∈I1∩I21NI1NI2=重合用户数点击I1用户数∗点击I2用户数sim(I_1,I_2)=\frac{\sum_{ u \in I_1 \cap I_2} 1}{\sqrt{N_{I_1}N_{I_2}}}=\frac{重合用户数}{点击I_1用户数*点击I_2用户数} sim(I1,I2)=NI1NI2∑u∈I1∩I21=点击I1用户数∗点击I2用户数重合用户数
2. IUF(Inverse User Frequence)
- 可以继续做一点改进,如果一个用户越活跃,交互的商品也就会越多,这样的用户兴趣就非常的广泛,他们的权重就应该小一点,之前只要有两个用户重合,那么就+1,现在是,如果这个用户非常活跃,就很容易与其他用户重合,我们分数就加的小一点
score=1log (1+Nu)score = \frac{1}{\text{log}\ (1+N_{u})}score=log (1+Nu)1
其中NuN_uNu表示用户交互过的商品,交互的商品越多,这个用户的权重就会降低,新的度量函数为
sim(I1,I2)=∑u∈I1∩I21log (1+Nu)NI1NI2sim(I_1,I_2)=\frac{\sum_{ u \in I_1 \cap I_2} \frac{1}{\text{log}\ (1+N_{u})}}{\sqrt{N_{I_1}N_{I_2}}}sim(I1,I2)=NI1NI2∑u∈I1∩I2log (1+Nu)1
3. Swing
- 反正就是好
sim(i,j)=∑u∈Ui∩Uj∑v∈Ui∩Uj1α+∣Iu∩Iv∣sim(i,j)=\sum_{u \in U_i \cap U_j } \sum_{v \in U_i \cap U_j}\frac{1}{\alpha + |I_{u} \cap I_v|}sim(i,j)=u∈Ui∩Uj∑v∈Ui∩Uj∑α+∣Iu∩Iv∣1
看了好久这个式子,总算是明白了一点。首先就是Ui,UjU_i,U_jUi,Uj表示的是,商品i,ji,ji,j重合的用户集合,Iu,IvI_u,I_vIu,Iv表示的是用户u,vu,vu,v的交互商品集合。
a. 首先找到商品i,ji,ji,j重合的两个用户u,vu,vu,v
b. 然后得到用户u,vu,vu,v的交互过的商品结合Iu,IvI_u,I_vIu,Iv
c.最后计算交互的商品中重合的商品数,重合的越多说明这两个用户越相似,那么他们共同购买的商品i,ji,ji,j就很难说明相似度了。
例如有两个用户u,vu,vu,v,他们都喜欢看手机,电脑,女装和旅行箱,这两个用户非常的相似,他们购买的两个商品手机和电脑就很难说是相似的。
此时有一个用户www,他喜欢看手机,电脑,椅子,加湿器,恒温箱,可以发现用户www和用户u,vu,vu,v有很大的差别,但是他们都购买了两个商品,手机和电脑,说明即使差异很大的人也会同时交互这两个商品,因此这两个商品是非常相似的。
更多推荐
所有评论(0)