Recommender System(推荐系统)
Recommender System (推荐系统)是机器学习中一个极为常见且重要的应用,本节就来做一下介绍。
###为什么要介绍「推荐系统」
有两个原因:
「推荐系统」在很多公司中被作为一项战略级别的应用,是盈利的重要来源,例如亚马逊、Netflix。这些网站根据用户的使用历史,推荐用户可能喜欢、感兴趣的产品。
机器学习中有一个很重要的理念,就是“自动选择特征”,而「推荐系统」就是一个很好的应用实例。
例子:电影推荐系统。新上一部电影或尚未评分的电影,如何自动评分,推荐给用户。需要用到的数据,网站上不同用户对不同电影的评分情况(1-5)。
###第一种解决方案:基于内容的推荐系统
左栏是五部电影,电影数用nm表示。上横栏是五个用户,用户数用nu表示。右栏是电影的特征向量,有两个特征。中间是不同用户对电影的评分,问号表示未看过。
预测电影评分的原理就是:每个用户有一个偏好参数,每部电影有个类型特征值(例如浪漫指数、动作指数),我们需要找到一个函数,将用户偏好和电影类型结合起来,生成评分。
上图的底部以Alice对第三部电影的评价为例:x代表电影的类型特征值,θ代表用户对不同类型电影的偏好程度,两个特征值进行点乘,得到评分。
注意,这里用到了有监督学习中的「线性回归算法」。
问题来了,用户偏好θ是怎么求得的呢?
这里就回到了线性回归算法。假设每个用户评价过m部电影,我们的cost function应该是下面的形式(下式为所有用户偏好):
与之前的线性回归算法类似,我们使用「梯度下降算法」学习参数θ,这里不再赘述。
###第二种解决方案:Collaborative Filtering
在第一种方案中,需要事先知道每部电影的类型特征向量,有时候不是很现实。第二方案中,我们会用到的算法可以进行feature learning,自动学习要使用哪些特征。
这里,每部电影的类型特征x未知,但每个用户的偏好特征θ会给出。接下来的cost function和梯度下降算法求x,跟第一种方案几乎一样。
我们的routine是:随机给出θ,估计x,优化θ,优化x…… 也可以换种思路,同时将x和θ最小化:
这里正式给出「Collaborative Filtering Algorithm」
初始化θ、x,求出θ、x,预测。
###「相关」推荐
有时候网站需要根据用户看过的某部电影推荐另外一部类似的影片,原理很简单。每部电影都有一个特征向量,如果两部电影的特征向量之间的距离很近,那么这两部电影就是相关的,或者说类似。
距离也有很多计算方式:有欧氏距离、绝对值距离、切比雪夫距离、马氏距离、兰氏距离、相似系数、定性指标的距离等,最常用的是欧氏距离。
###其他
如果某个用户尚未对任何电影评分,那么怎样推荐电影给他呢?
方法是:将每个用户对该电影的评分计算平均值,作为上述用户对此电影的默认评分,根据评分的高低决定是否要推荐给该用户。
总结:本节推荐系统,实质上是线性回归算法的一个应用实例,用到的算法都是前面的课程讲到的,这里只是结合「推荐系统」这个例子形象地讲解一下。