- Author: Summer;
- Email: huangmeihong11@sina.com
- Datawhale
协同过滤简介
协同过滤是推荐算法中最常用的算法之一,它根据user与item的交互,发现item之间的相关性,或者发现user之间的相关性,进行推荐。
- 比如你有位朋友看电影的爱好跟你类似,然后最近新上了《调音师》,他觉得不错,就会推荐给你,这是最简单的基于user的协同过滤算法(user-based collaboratIve filtering)
- 还有一种是基于item的协同过滤算法(item-based collaborative filtering),比如你非常喜欢电影《当幸福来敲门的时候》,那么观影系统可能会推荐一些类似的励志片给你,比如《风雨哈佛路》等。
以下主要分析user-based,item-based。
导图
核心公式:
符号
r u , i r_{u,i} ru,iuser u u u 对 item i i i 的评分
r ˉ u \bar{r}_{u} rˉu:user u u u 的平均评分
P a , b P_{a,b} Pa,b:用户 a a a, b b b都有评价的items集合
公式
1.item-based CF 邻域方法预测公式
Pred ( u , i ) = r ‾ u + ∑ j ∈ S i ( sim ( i , j ) × r u , j ) ∑ j ∈ S i sim ( i , j ) \operatorname{Pred}(u, i)=\overline{r}_{u}+\frac{\sum_{j \in S_{i}}\left(\operatorname{sim}(i, j) \times r_{u, j}\right)}{\sum_{j \in S_{i}} \operatorname{sim}(i, j)} Pred(u,i)=ru+∑j∈Sisim(i,j)∑j∈Si(sim(i,j)×ru,j)
2.偏差优化目标
min b ∑ ( u , i ) ∈ K ( r ( u , i ) − μ − b u − b i ) 2 \min _{b} \sum_{(u, i) \in K}\left(r_{(u, i)}-\mu-b_{u}-b_{i}\right)^{2} bmin(u,i)∈K∑(r(u,i)−μ−bu−bi)2其中 ( u , i ) ∈ K (u,i) \in K (u,i)∈K表示所有的评分, μ \mu μ总评分均值, b u b_u bu为user u u u的偏差, b i b_i bi为item i i i 的偏差。
- 加入正则项后的Funk SVD 优化公式
min u v ∑ ( u , i ) ∈ k n o w n ( r u , i − u u v i ) + λ ( ∣ u ∣ 2 + ∣ v ∣ 2 ) \min _{u v} \sum_{(u, i) \in k n o w n}\left(r_{u,i}-u_{u} v_{i}\right)+\lambda\left(|u|^{2}+|v|^{2}\right) uvmin(u,i)∈known∑(ru,i−uuvi)+λ(∣u∣2+∣v∣2)其中 u u u_u uu为user u u u的偏好,即为user特征矩阵 U U U的第 u u u行, v i v_i vi为item i i i的特征,即为特征矩阵 V V V的第 i i i列
算法十问
- 相似度与距离之间的关系?
距离越大,相似度越小;距离越小,相似度越高。即在求解最大相似度的时候可以转为求解最小距离。
- 在协同过滤中,常用的相似度函数有哪些?
- 杰卡德相似度(Jaccard similarity)
公式: s i m j a c c a r d ( u 1 , u 2 ) =