机器学习(14)推荐算法
推荐算法基于内容的推荐算法协同过滤算法低秩矩阵分解均值规范化基于内容的推荐算法有5个电影,4个人对电影的评分,假设每部电影有2种特征量,即x(i)∈R(2)x^{(i)} \in R^{(2)}x(i)∈R(2),如何估算出图中问号的值呢?我们假设每个用户jjj有一个参数向量θ(j)\theta^{(j)}θ(j),在此例中θ(j)∈R(2)\theta^{(j)}\in R^{(2)}θ(j)∈
基于内容的推荐算法

有5个电影,4个人对电影的评分,假设每部电影有2种特征量,即 x ( i ) ∈ R ( 2 ) x^{(i)} \in R^{(2)} x(i)∈R(2),如何估算出图中问号的值呢?
我们假设每个用户 j j j有一个参数向量 θ ( j ) \theta^{(j)} θ(j),在此例中 θ ( j ) ∈ R ( 2 ) \theta^{(j)}\in R^{(2)} θ(j)∈R(2)。用户的参数向量与电影的特证向量维度是相同的。那么与用户对每部电影的评分为: ( θ ( j ) ) T x ( i ) (\theta^{(j)})^{T} x^{(i)} (θ(j))Tx(i)。
例如第一个用户对第三部电影的预测评分为:
两个向量三维的原因是有一个偏置数,对结果影响不大,暂不考虑。
总结一下条件:
已知:每部电影的特征向量、用户对电影的评价、评分公式: ( θ ( j ) ) T x ( i ) (\theta^{(j)})^{T} x^{(i)} (θ(j))Tx(i)、求每个用户的参数向量: θ ( j ) \theta^{(j)} θ(j)。
这就转化为线性回归问题:

最后再使用梯度下降算法或者其他算法求解,得到最终表达式:
在知道每部电影的特征向量,求解每个用户的参数向量,以上就是基于内容的推荐算法。
协同过滤算法
我们把上面的例子调整一下,假设我们不知道每部电影的特征向量,但是我们知道每个打分用户的参数向量 θ ( j ) \theta^{(j)} θ(j)。
这时候求解每部电影的特征向量 x ( i ) x^{(i)} x(i)。
计算流程和上面基于内容的推荐算法相同,结果如下:
结合两个流程:
两个流程结合就出现这样的情况:先得到 θ ( j ) \theta^{(j)} θ(j)然后求解 x ( i ) x^{(i)} x(i),再求解 θ ( j ) \theta^{(j)} θ(j),这样反复迭代,所以被称为协同过滤。
仔细看两个流程的最后结果的前半部分其实是同一个东西,所以可以得到最终的计算式:
协同过滤算法的总流程:
低秩矩阵分解

假设我们知道 θ ( j ) \theta^{(j)} θ(j), x ( i ) x^{(i)} x(i),怎么快速计算评分呢?
可以把得分矩阵进行分解:
Y = x θ T Y= x \theta^{T} Y=xθT
如何找到两个相似的电影呢?
均值规范化

假设新加入第五用户,根据最下面的代价函数,此时新用户 θ ( 5 ) \theta^{(5)} θ(5)应该全是0,此时评分也全是0,这就没有意义了。
那么如何让新用户的0参数向量有意义呢?
使用均值归一化!
然后改变得分公式:
( θ ( j ) ) T x ( i ) + u (\theta^{(j)})^{T} x^{(i)} + u (θ(j))Tx(i)+u
这样即使新用户的参数向量是0向量,它的评分结果也不会是0,而是每个电影的平均得分,这时候就变得有意义。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)