机器学习笔记——推荐系统(recommender system)

推荐系统

我们在平时最常见的就是某个网站给你推荐广告,豆瓣给你推荐电影,网易云给你推荐你喜欢的歌,这种系统我们统一称作推荐系统

基于内容的推荐

我们举一个电影打分的例子

我们可以为某一部电影选定特征,不同人对不同的特征有不同的偏爱特性,借此我们可以预测某个人对某部特定电影的打分,输入x是某部电影的特征,θ是某个人对电影特征的偏爱参数

以下是该问题的一些参数

因此对于给定电影的参数与某个人的打分,我们可以求出θ

以下是利用梯度下降法的更新过程

扫描二维码关注公众号,回复: 4734283 查看本文章

协同过滤

对于数量极大的电影,我们不可能对于每一部都去人工进行特征的标注,因此让我们来考虑另外一个问题,我们已知每个人对不同特征的偏爱程度θ,我们可以反求出电影的特征x使得预测打分与真实结果最接近

为此我们有以下的优化算法

我们可以看出来以上两个过程实际上是个互补的过程,由此我们可以循环往复的循环以上两个过程,这样我们可以通过已有的数据让算法自动学习到电影的特征,并且通过此特征来对电影进行预测打分。我们让算法自动学习特征可以让其学到一些更加抽象复杂的特征,而不像浪漫、动作、喜剧这样过于简单的特征。这些特征可能我们很难直观地去理解它们,但是它们实际上是有意义的,确实代表着电影中某种有特点的元素

我们可以将以上两个步骤整合起来,写成一个完整的算法,我们把这个算法叫做协同过滤(collaborative filtering)。也就是我们可以将两个优化目标循环出现的过程写成一个共同优化的目标

以下是具体的算法过程

矢量化

我们可以将我们的优化过程用矩阵的形式表示来更快地进行计算

预测值我们可以写作X矩阵和θ矩阵相乘的结果,我们把这个过程叫做低秩矩阵分解

如果我们要寻找最相似的电影只需要比较电影的特征向量即可

均值归一化

让我们考虑以下情况,此时我们来了一个新用户,它没有给任何电影打过分,那么根据算法我们将预测它对所有电影打分都是0,这种情况下我们很难给他推荐电影

为此我们可以进行均值归一化(mean normalization),也就是计算所有用户对某一电影打分的平均值,再将每个用户打分减去均值,相当于将电影的均分统一化作0了,这样我们在预测打分的时候就要加上均分。这样有什么好处呢,对于一个新用户,它对每个电影的预测结果实际上就是零加上其他用户对这部电影打的平均分。这样在用户没有任何偏好(即没有对任何电影打过分)的情况下,我们也能对其进行电影推荐了

猜你喜欢

转载自blog.csdn.net/shanwenkang/article/details/85526900
今日推荐