机器学习(14)推荐算法
基于内容的推荐算法

有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)