搜索微信公众号:‘AI-ming3526’或者’计算机视觉这件小事’ 获取更多人工智能、机器学习干货
第十六章 推荐系统
16.1 问题规划
16.1.1 为什么要将推荐系统
- **推荐系统(recommender system)**是机器学习中的一个重要的应用。现在,在硅谷有很多团体试图建立很好的推荐系统。因此,如果你考虑网站像亚马逊,或网飞公司或易趣,或iTunes Genius,有很多的网站或系统试图推荐新产品给用户。如,亚马逊推荐新书给你,网飞公司试图推荐新电影给你,等等。这些推荐系统,根据浏览你过去买过什么书,或过去评价过什么电影来判断。这些系统会带来很大一部分收入,比如为亚马逊和像网飞这样的公司。因此,对推荐系统性能的改善,将对这些企业的有实质性和直接的影响。同时,推荐系统在学术界它占了很小的份额,但在许多有能力构建这些系统的科技企业,他们似乎在很多企业中占据很高的优先级。
- 我们想通过推荐系统讨论机器学习中的一些大思想,并和大家分享。在之前的课程中,我们也看到了,对机器学习来说,特征是很重要的,你所选择的特征,将对你学习算法的性能有很大的影响。因此,在机器学习中有一种大思想,它针对一些问题,可能并不是所有的问题,而是一些问题,有算法可以为你自动学习一套好的特征。因此,不要试图手动设计。
16.1.2 例子:预测电影评分
假设我们有一个视频网站,并让用户用0到5星来评价不同的电影。现在我们有四名用户,五部电影,他们分别对电影进行打分。
下面我们下来介绍一些符号及其含义:
- n u n_u nu:用户数量。
- n m n_m nm:电影数量。
- r ( i , j ) r(i,j) r(i,j):用户 j j j是否给电影 i i i评分, r ( i , j ) = 1 r(i,j)=1 r(i,j)=1时表示评价。
- y ( i , j ) y(i,j) y(i,j):用户 j j j给电影 i i i的评分,它是从0到5的数字(这一项只有在 r ( i , j ) = 1 r(i,j)=1 r(i,j)=1时才被定义)。
因此,推荐系统的问题是,给出了 r ( i , j ) r(i,j) r(i,j)和 y ( i , j ) y(i,j) y(i,j)的数据,然后去查找那些没有被评级的电影,并试图预测这些电影的评级。那我们的工作就是相处一个学习算法,让它能自动为我们填补这些缺失值的算法,从而为用户推荐他们感兴趣的内容。
16.2 基于内容的推荐算法
16.2.1 基于内容的推荐算法
为了给没有被打分的电影预测分数,我们假设每一部电影都有一个对应的特征集。特别的,假设有特征 x 1 x_1 x1用来衡量一部电影为爱情片的程度, x 2 x_2 x2来衡量一部电影为动作片的程度。
如果我们有这样的特征,那么每部电影就可以用一个特征向量来表示。例如第一部电影,我们再给它加一个额外的截距特征 x 0 = 1 x_0=1 x0=1,之后我们就得到了 x ( 1 ) = [ 1 , 0.9 , 0 ] x^{(1)}=[1,0.9,0] x(1)=[1,0.9,0]。
现在,为了预测评分,我们可以把每个用户的评价预测值看做一个线性回归问题。对于每一个用户 j j j,我们要学习参数向量 θ ( j ) ∈ R n + 1 \theta^{(j)}\in R^{n+1} θ(j)∈Rn+1,然后预测用户 j j j评价电影的 i i i值,也就是参数向量 θ \theta θ与特征向量 x ( i ) x^{(i)} x(i)的内积。
假设现在我们要预测Alice对第三部电影的评价,其学习参数为向量 θ ( 1 ) \theta^{(1)} θ(1),那么这部电影就会有某个参数向量 x ( 3 ) = [ 1 , 0.99 , 0 ] x^{(3)}=[1,0.99,0] x(3)=[1,0.99,0]。假设我们现在已经得到了其学习参数向量 θ ( 1 ) = [ 0 , 5 , 0 ] \theta^{(1)}=[0,5,0] θ(1)=[0,5,0],那我们的预测值将会是 ( θ ( 1 ) ) T x ( 3 ) = 4.95 (\theta^{(1)})^Tx^{(3)}=4.95 (θ