协同过滤(Collaborative Filtering)
Problem Motivation

在之前的基于内容的推荐系统中,对于每一部电影,我们都掌握了可用的特征,通过使用这些特征,并运用线性回归模型,可训练得每一个用户对某一电影的评分。 相反地,如果我们拥有用户对每一部电影的评分,我们就可以学习得电影得特征。

但如果我们既无法得到电影的特征,也没有用户对每一部电影得的评分,之前我们所介绍的方法就无法适用了。因此,我们引入协同过滤。
Collaborative Filtering
在协同过滤中,我们需要对x和θ同时优化,其基本算法为:
- 随机给定θ^(1), ···, θ^(nu),计算x^1, ···, x^nm
- 随机给定x^1, ···, x^nm,计算θ^(1), ···, θ^(nu)
其中,这两步骤交替进行,直至得到合理的θ和x的值。
注:在协同过滤中,我们通常不使用偏置项,如若需要,算法会自动学得。

协同过滤算法优化目标

协同过滤算法
- 对x(1), ···, x^(nm), θ(1), ···, θ^(nu)随机赋值小值
- 使用梯度下降算法(或者其他高级算法)最小化代价函数,例如:梯度下降算法最小化代价函数,其数学表达式为:

- 在得到合理的参数θ和电影特征x后,利用θTx预测电影评分
上述算法除了能预测某一用户对某一电影评分,其还能根据用户的喜好来推荐相关电影。例如,某一用户爱好观看动作类电影x(i),推荐系统会根据这一特征推荐相关的电影x(j),这两部电影的特征向量之间的距离为||x(i) - x(j)||。