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

一、推荐系统(Recommender Systems)

推荐系统是机器学习中的一个重要应用,有很多的网站都会通过推荐系统来推荐新产品给用户,如亚马逊推荐新书给你,网飞公司试图推荐新电影给你,这些推荐系统是根据浏览你过去买过什么书或评价过什么电影来判断。这些系统会为亚马逊和像网飞这样的公司带来很大一部分收入,因此,对推荐系统性能的改善,将对这些企业的有实质性和直接的影响。

我们首先来通过一个电影推荐例子来理解推荐系统是要解决什么样的问题。如下有五部电影四个用户,每个用户都对其中几部电影做出了评分,那么推荐系统要解决的就是根据已有的信息推断出用户没有评分的电影他可能会给出的评分,也就是补全这个矩阵中的缺失值,然后根据推断的评分推荐新电影给用户。

机器学习笔记(16)——推荐系统_第1张图片
如上就是推荐系统问题的大概形式,那么该如何解决呢?下面介绍如下几种推荐系统算法思想

1. 基于内容的推荐算法(Content-based Recommendations,CB)

CB的算法思想:根据用户过去喜欢的产品,为用户推荐和他过去喜欢的产品相似的产品。
CB的过程一般分为以下三步:

(1) 提取产品的特征

提取出产品的特征,为每个item抽取出一些特征来表示此item,每个产品都有一个由其每个特征的值组成的特征向量。假设每部电影都有两个特征,特征x1表示这部电影是爱情片的程度,x2表示是动作片的程度,再加上一个值为1的截距特征x0(待解释),那么对于每部电影都有一个自己的特征向量,如第一部电影的特征向量x(1) = [1, 0.9, 0]T
机器学习笔记(16)——推荐系统_第2张图片

(2) 学习用户的特征

即根据已有的用户记录推断计算出用户对产品的每个特征的偏好程度。
因此也要定义一个同样维度的用户特征向量θ。相关的符号定义如下:
机器学习笔记(16)——推荐系统_第3张图片
那么预测用户j对电影i的评分的预测函数就是产品的每个特征的值乘以用户对这个特征的偏好程度最后得出的总和,即用户喜好特征向量与产品特征向量的内积:
在这里插入图片描述
这就可以看作一个线性回归的问题,根据用户已有的电影评分记录求出使得预测值与真实值的平方误差最小的θ。代价函数如下:
机器学习笔记(16)——推荐系统_第4张图片
其中用户评分过的电影数m(j)是常数,可省去对θ结果无影响,可再加上一个正则化项,故对于单个用户的目标优化函数如下:
机器学习笔记(16)——推荐系统_第5张图片
而在构建推荐系统时,不仅是要学习一个用户的特征,而是要学习所有用户的特征,因此要追求的是总体误差的最小化,即将所有用户的目标优化叠加到一起计算求总体代价函数的最小点,故最终目标优化函数如下:
机器学习笔记(16)——推荐系统_第6张图片
用梯度下降算法求函数最小点:
机器学习笔记(16)——推荐系统_第7张图片
最终求出每个用户的喜好特征向量。

(3) 生成推荐列表

通过比较上一步得到的用户喜好特征与产品特征,得出相关性较大的产品推荐给用户。
即求用户喜好特征向量与产品特征向量的内积,假设求出的用户Alice的喜好特征向量θ(1) = [0, 5, 0]T,第三部电影的特征向量是x(3) = [1, 0.99, 0]T,故预测评分为4.95,预测评分较高即相关性较大故推荐此电影给用户。
机器学习笔记(16)——推荐系统_第8张图片

参考文章:
1.基于内容的推荐算法
2.基于内容推荐算法详解(比较全面的文章)

2. 协同过滤算法(Collaborative Filtering Recommendations,CF)

上述CB算法是假设我们可以直接提取出一部电影的特征,而现实情况是这些特征我们也很难直接得到,而且我们需要的特征也远不止这两个,那么该怎样得到用户和电影的特征呢?

首先我们假设我们已经有了用户对产品的每个特征的偏好程度,即喜好特征向量θ,那么根据每个用户的喜好特征和其对电影的评分建立一组方程(θ·x = 评分),从而大致解出电影的特征向量x
机器学习笔记(16)——推荐系统_第9张图片
可以看出这和CB算法中的已知产品特征x然后求用户特征θ一样,已知θ求x是一个同样的线性回归问题,求使得预测评分与真实评分误差最小的x,代价函数形式都一样,只不过这里的变量变成了x
机器学习笔记(16)——推荐系统_第10张图片

这样假设我们拥有所有用户的喜好特征向量,我们同样也可以利用梯度下降算法求出产品的特征向量,然而实际上用户的特征我们也很难直接全部拥有,当我们既没有产品特征值也没有用户特征值时该怎么办呢?下面体现协同过滤思想的地方就来了:

我们可以先假设一些θ值,然后用上述CB中的方法求出x,再用x就可以求出更好的θ…这样反复迭代,最后就能收敛得到一组相对合理的电影特征x(i)和用户特征θ(j)。这种方法是建立在每位用户都对数部电影进行了评价并且每部电影都有用户评价的情况下,这个迭代过程才能重复进行下去。这其中体现的协同过滤算法思想就是:每位用户的评分都在帮助改进算法学习出更好的特征,而这些特征又可以帮助更好的预测其他用户的评分,这就是协同过滤。
机器学习笔记(16)——推荐系统_第11张图片
当然,上述只是基本协同过滤的算法,在实际应用中更复杂多样,下面介绍一种

参考文章:推荐算法分类:协同过滤推荐、基于内容推荐、基于知识推荐、混合推荐

你可能感兴趣的:(机器学习笔记,机器学习)