推荐系统是机器学习中的一个重要应用,有很多的网站都会通过推荐系统来推荐新产品给用户,如亚马逊推荐新书给你,网飞公司试图推荐新电影给你,这些推荐系统是根据浏览你过去买过什么书或评价过什么电影来判断。这些系统会为亚马逊和像网飞这样的公司带来很大一部分收入,因此,对推荐系统性能的改善,将对这些企业的有实质性和直接的影响。
我们首先来通过一个电影推荐例子来理解推荐系统是要解决什么样的问题。如下有五部电影四个用户,每个用户都对其中几部电影做出了评分,那么推荐系统要解决的就是根据已有的信息推断出用户没有评分的电影他可能会给出的评分,也就是补全这个矩阵中的缺失值,然后根据推断的评分推荐新电影给用户。
如上就是推荐系统问题的大概形式,那么该如何解决呢?下面介绍如下几种推荐系统算法思想
CB的算法思想:根据用户过去喜欢的产品,为用户推荐和他过去喜欢的产品相似的产品。
CB的过程一般分为以下三步:
提取出产品的特征,为每个item抽取出一些特征来表示此item,每个产品都有一个由其每个特征的值组成的特征向量。假设每部电影都有两个特征,特征x1表示这部电影是爱情片的程度,x2表示是动作片的程度,再加上一个值为1的截距特征x0(待解释),那么对于每部电影都有一个自己的特征向量,如第一部电影的特征向量x(1) = [1, 0.9, 0]T
即根据已有的用户记录推断计算出用户对产品的每个特征的偏好程度。
因此也要定义一个同样维度的用户特征向量θ。相关的符号定义如下:
那么预测用户j对电影i的评分的预测函数就是产品的每个特征的值乘以用户对这个特征的偏好程度最后得出的总和,即用户喜好特征向量与产品特征向量的内积:
这就可以看作一个线性回归的问题,根据用户已有的电影评分记录求出使得预测值与真实值的平方误差最小的θ。代价函数如下:
其中用户评分过的电影数m(j)是常数,可省去对θ结果无影响,可再加上一个正则化项,故对于单个用户的目标优化函数如下:
而在构建推荐系统时,不仅是要学习一个用户的特征,而是要学习所有用户的特征,因此要追求的是总体误差的最小化,即将所有用户的目标优化叠加到一起计算求总体代价函数的最小点,故最终目标优化函数如下:
用梯度下降算法求函数最小点:
最终求出每个用户的喜好特征向量。
通过比较上一步得到的用户喜好特征与产品特征,得出相关性较大的产品推荐给用户。
即求用户喜好特征向量与产品特征向量的内积,假设求出的用户Alice的喜好特征向量θ(1) = [0, 5, 0]T,第三部电影的特征向量是x(3) = [1, 0.99, 0]T,故预测评分为4.95,预测评分较高即相关性较大故推荐此电影给用户。
参考文章:
1.基于内容的推荐算法
2.基于内容推荐算法详解(比较全面的文章)
上述CB算法是假设我们可以直接提取出一部电影的特征,而现实情况是这些特征我们很难直接得到,而且我们需要的特征也远不止这两个
对机器学习来说,特征是很重要的,你所选择的特征,将对你学习算法的性能有很大的影响。而在机器学习中有一种大思想,它针对一些问题有算法可以为你自动学习一套好的特征。推荐系统就是这种算法,通过学习推荐系统,可以领略一小部分特征学习的思想。
参考文章:推荐算法分类:协同过滤推荐、基于内容推荐、基于知识推荐、混合推荐
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)