协同过滤(Collaborative Filtering)算法原理
一、基于记忆的协同过滤(Memory-Based CF)
1. 用户-用户协同过滤(User-Based CF)
核心思想
通过计算用户之间的相似度,利用相似用户的评分预测目标用户的兴趣。
算法步骤
-
相似度计算
使用余弦相似度或皮尔逊相关系数:
sim(u,v)=∑i∈Iuv(rui−rˉu)(rvi−rˉv)∑i∈Iuv(rui−rˉu)2∑i∈Iuv(rvi−rˉv)2 \text{sim}(u, v) = \frac{\sum_{i \in I_{uv}}(r_{ui} - \bar{r}_u)(r_{vi} - \bar{r}_v)}{\sqrt{\sum_{i \in I_{uv}}(r_{ui} - \bar{r}_u)^2} \sqrt{\sum_{i \in I_{uv}}(r_{vi} - \bar{r}_v)^2}} sim(u,v)=∑i∈Iuv(rui−rˉu)2∑i∈Iuv(rvi−rˉv)2∑i∈Iuv(rui−rˉu)(rvi−rˉv)- IuvI_{uv}Iuv:用户 uuu 和 vvv 共同评分的物品集合
- rˉu\bar{r}_urˉu:用户 uuu 的平均评分
-
评分预测
r^ui=rˉu+∑v∈N(u)sim(u,v)⋅(rvi−rˉv)∑v∈N(u)∣sim(u,v)∣ \hat{r}_{ui} = \bar{r}_u + \frac{\sum_{v \in N(u)} \text{sim}(u, v) \cdot (r_{vi} - \bar{r}_v)}{\sum_{v \in N(u)} |\text{sim}(u, v)|} r^ui=rˉu+∑v∈N(u)∣sim(u,v)∣∑v∈N(u)sim(u,v)⋅(rvi−rˉv)- N(u)N(u)N(u):用户 uuu 的最近邻集合
优缺点
- 优点:直观易实现,适合用户行为稳定的场景。
- 缺点:计算复杂度高(O(m2)O(m^2)O(m2)),冷启动问题严重。
2. 物品-物品协同过滤(Item-Based CF)
核心思想
通过计算物品之间的相似度,基于用户历史喜欢的物品预测其对新物品的兴趣。
算法步骤
-
相似度计算
sim(i,j)=∑u∈Uijrui⋅ruj∑u∈Uijrui2∑u∈Uijruj2 \text{sim}(i, j) = \frac{\sum_{u \in U_{ij}} r_{ui} \cdot r_{uj}}{\sqrt{\sum_{u \in U_{ij}} r_{ui}^2} \sqrt{\sum_{u \in U_{ij}} r_{uj}^2}} sim(i,j)=∑u∈Uijrui2∑u∈Uijruj2∑u∈Uijrui⋅ruj- UijU_{ij}Uij:对物品 iii 和 jjj 均有评分的用户集合
-
评分预测
r^ui=∑j∈S(i)sim(i,j)⋅ruj∑j∈S(i)∣sim(i,j)∣ \hat{r}_{ui} = \frac{\sum_{j \in S(i)} \text{sim}(i, j) \cdot r_{uj}}{\sum_{j \in S(i)} |\text{sim}(i, j)|} r^ui=∑j∈S(i)∣sim(i,j)∣∑j∈S(i)sim(i,j)⋅ruj- S(i)S(i)S(i):与物品 iii 最相似的物品集合
优缺点
- 优点:物品相似度更稳定,适合物品数远小于用户数的场景。
- 缺点:稀疏性问题突出,新物品冷启动困难。
二、基于模型的协同过滤(Model-Based CF)
1. 矩阵分解(Matrix Factorization, MF)
核心思想
将用户-物品评分矩阵分解为低维用户隐向量和物品隐向量的乘积,捕捉潜在特征。
数学模型
预测评分为:
r^ui=μ+bu+bi+qiTpu
\hat{r}_{ui} = \mu + b_u + b_i + q_i^T p_u
r^ui=μ+bu+bi+qiTpu
- μ\muμ:全局平均评分
- bub_ubu:用户偏置项(用户 uuu 的评分倾向)
- bib_ibi:物品偏置项(物品 iii 的受欢迎程度)
- qi∈Rkq_i \in \mathbb{R}^kqi∈Rk:物品隐向量
- pu∈Rkp_u \in \mathbb{R}^kpu∈Rk:用户隐向量
优化目标
最小化正则化平方误差:
minp,q,b∑(u,i)∈K(rui−r^ui)2+λ(∥pu∥2+∥qi∥2+bu2+bi2)
\min_{p, q, b} \sum_{(u,i) \in \mathcal{K}} \left( r_{ui} - \hat{r}_{ui} \right)^2 + \lambda \left( \|p_u\|^2 + \|q_i\|^2 + b_u^2 + b_i^2 \right)
p,q,bmin(u,i)∈K∑(rui−r^ui)2+λ(∥pu∥2+∥qi∥2+bu2+bi2)
- K\mathcal{K}K:已知评分的集合
- λ\lambdaλ:正则化系数
SGD参数更新
通过随机梯度下降(SGD)更新参数:
bu←bu+γ(eui−λbu)
b_u \leftarrow b_u + \gamma (e_{ui} - \lambda b_u)
bu←bu+γ(eui−λbu)
bi←bi+γ(eui−λbi)
b_i \leftarrow b_i + \gamma (e_{ui} - \lambda b_i)
bi←bi+γ(eui−λbi)
pu←pu+γ(eui⋅qi−λpu)
p_u \leftarrow p_u + \gamma (e_{ui} \cdot q_i - \lambda p_u)
pu←pu+γ(eui⋅qi−λpu)
qi←qi+γ(eui⋅pu−λqi)
q_i \leftarrow q_i + \gamma (e_{ui} \cdot p_u - \lambda q_i)
qi←qi+γ(eui⋅pu−λqi)
- eui=rui−r^uie_{ui} = r_{ui} - \hat{r}_{ui}eui=rui−r^ui
- γ\gammaγ:学习率
优缺点
- 优点:处理稀疏数据能力强,隐向量可解释性高。
- 缺点:需手动调参,无法捕捉动态兴趣。
2. SVD++
核心改进
在MF基础上引入隐式反馈(如用户浏览、点击行为),增强用户隐向量的表达能力。
数学模型
r^ui=μ+bu+bi+qiT(pu+1∣N(u)∣∑j∈N(u)yj) \hat{r}_{ui} = \mu + b_u + b_i + q_i^T \left( p_u + \frac{1}{\sqrt{|N(u)|}} \sum_{j \in N(u)} y_j \right) r^ui=μ+bu+bi+qiTpu+∣N(u)∣1j∈N(u)∑yj
- N(u)N(u)N(u):用户 uuu 的隐式反馈物品集合
- yj∈Rky_j \in \mathbb{R}^kyj∈Rk:隐式反馈物品的隐向量
优化目标
min∑(u,i)(rui−r^ui)2+λ(∥pu∥2+∥qi∥2+bu2+bi2+∥yj∥2) \min \sum_{(u,i)} \left( r_{ui} - \hat{r}_{ui} \right)^2 + \lambda \left( \|p_u\|^2 + \|q_i\|^2 + b_u^2 + b_i^2 + \|y_j\|^2 \right) min(u,i)∑(rui−r^ui)2+λ(∥pu∥2+∥qi∥2+bu2+bi2+∥yj∥2)
优点
- 融合显式和隐式反馈,提升预测精度。
- 解决了MF对隐式信息利用不足的问题。
三、用户和物品偏置项的深度解析
参数 | 定义 | 数学表达 | 作用 |
---|---|---|---|
用户偏置 bub_ubu | 用户整体评分倾向 | r^ui=μ+bu+…\hat{r}_{ui} = \mu + b_u + \dotsr^ui=μ+bu+… | 量化用户评分偏离全局平均值的程度(如用户A习惯性打高分) |
物品偏置 bib_ibi | 物品整体受欢迎程度 | r^ui=μ+⋯+bi\hat{r}_{ui} = \mu + \dots + b_ir^ui=μ+⋯+bi | 量化物品评分偏离全局平均值的程度(如热门物品得分普遍高) |
偏置项的意义
-
用户偏置
- 解释用户个体差异(如严苛用户评分普遍低)。
- 公式贡献:μ+bu\mu + b_uμ+bu 表示用户 uuu 的基准评分。
-
物品偏置
- 解释物品固有属性(如高质量物品得分高)。
- 公式贡献:μ+bi\mu + b_iμ+bi 表示物品 iii 的基准评分。
四、模型对比总结
模型 | 核心特征 | 适用场景 | 偏置项作用 |
---|---|---|---|
User-Based CF | 用户相似度计算 | 用户行为稳定的中小规模系统 | 无偏置项,依赖用户平均评分 |
Item-Based CF | 物品相似度计算 | 物品更新缓慢的电商平台 | 无偏置项,依赖物品平均评分 |
MF | 隐向量+偏置项 | 大规模稀疏数据 | 显式建模用户/物品整体偏差 |
SVD++ | 隐向量+隐式反馈+偏置项 | 需利用隐式行为数据的场景 | 增强用户隐向量,保留偏置项 |
五、关键公式速查表
-
User-Based CF预测公式
r^ui=rˉu+∑vsim(u,v)(rvi−rˉv)∑v∣sim(u,v)∣ \hat{r}_{ui} = \bar{r}_u + \frac{\sum_{v} \text{sim}(u, v) (r_{vi} - \bar{r}_v)}{\sum_{v} |\text{sim}(u, v)|} r^ui=rˉu+∑v∣sim(u,v)∣∑vsim(u,v)(rvi−rˉv) -
MF预测公式
r^ui=μ+bu+bi+qiTpu \hat{r}_{ui} = \mu + b_u + b_i + q_i^T p_u r^ui=μ+bu+bi+qiTpu -
SGD更新规则
bu←bu+γ(eui−λbu) b_u \leftarrow b_u + \gamma (e_{ui} - \lambda b_u) bu←bu+γ(eui−λbu) -
SVD++预测公式
r^ui=μ+bu+bi+qiT(pu+1∣N(u)∣∑j∈N(u)yj) \hat{r}_{ui} = \mu + b_u + b_i + q_i^T \left( p_u + \frac{1}{\sqrt{|N(u)|}} \sum_{j \in N(u)} y_j \right) r^ui=μ+bu+bi+qiTpu+∣N(u)∣1j∈N(u)∑yj