推荐系统中的协同过滤算法一般分为两大类:
- 基于行为的协同过滤算法(Memory-Based CF),利用用户行为数据计算相似度,包括用户之间的相似度和物品之间的相似度。
- 基于模型的协同过滤算法(Model-Based CF),利用机器学习算法预测用户的喜好程度,一般用户数据较为稀疏的时候更适合这种方法。
本文主要介绍Model-Based协同过滤算法
1、Model-Based CF基于模型协同过滤算法
利用用户-物品评分矩阵训练机器学习模型,从而预测用户对物品的评分,主要可以分为以下几类:
- 基于分裂、回归或者聚类算法
- 基于矩阵分解的推荐算法
- 基于神经网络算法
- 基于图模型算法
2、基于回归模型算法的协同过滤
回归模型的前提是连续的值,我们将评分看做连续的值,采用以下Baseline(基准预测)实现策略。其思想是运用每个人的偏好不同:
有些用户比较好心,他的评分高于其他用户,有些用户比较苛刻,他的评分低于其他用户;而部分物品比较受欢迎,它的评分高于一般物品,部分物品可能会被嫌弃,它的评分会低于一般物品。
而Baseline则是通过找出每个用户与其他用户的评分偏置值 b u b_u bu,每个物品与其他物品的偏置值 b i b_i bi,最终的目标也就变成了寻找最优的 b u b_u bu和 b i b_i bi。所以Baseline算法的步骤如下:
- 计算所有电影的平均评分 u u u;
- 计算每个用户的评分与平均评分的偏置值 b u b_u bu;
- 计算每部电影的评分与平均评分的偏置值 b i b_i bi;
- 预测用户对电影的评分:
r ^ u i = b u i = u + b u + b i \hat{r}_{ui} = b_{ui} = u+b_u+b_i r^ui=bui=u+bu+bi
以用户A对《封神第一部》的评分为例:
- 首先计算所有电影的平均评分 u = 3.5 u=3.5 u=3.5;
- 用户A比较好心,普遍比平均分高1分,偏置值 b u = 1 b_u=1 bu=1;
- 《封神第一部》一开始差评比较多,评分比平均分低0.5分,偏置值 b i = − 0.5 b_i=-0.5 bi=−0.5;
- 则用户A对《封神第一部》的评分为:3.5+1-0.5=4.1分。
在线性回归问题中,我们用平方差构建损失函数:
C o s t = ∑ u , i ∈ R ( r u i − r ^ u i ) 2 = ∑ u , i ∈ R ( r u i − u − b u − b i ) 2 Cost = \sum_{u,i∈R}(r_{ui}-\hat{r}_{ui})^2 = \sum_{u,i∈R}(r_{ui}-u-b_u-b_i)^2 Cost=u,i∈R∑(rui−r^ui)2=u,i∈R∑(rui−u−bu−bi)2
为了防止过拟合,需要加入L2范式,最后的公示如下:
C o s t = ∑ u , i ∈ R ( r u i − u − b u − b i ) 2 + λ ( ∑ u b u 2 + ∑ i b i 2 ) Cost = \sum_{u,i∈R}(r_{ui}-u-b_u-b_i)^2 + \lambda(\sum_u{b_u}^2+\sum_i{b_i}^2) Cost=u,i∈R∑(rui−u−bu−bi)2+λ(u∑bu2+i∑bi</