机器学习—推荐系统

推荐系统

上期内容

异常检测

问题举例

  假设我们有5部电影和4个用户,我们要求用户为电影打分,得到:

movieABCD
Love at last5500
Romance forever5??0
Cute puppies of love?40?
Nonstop car chases0054
Swords vs. karate005?

可以看出,A、B两人更倾向于前三部那种爱情片,C、D两人更倾向于后两部动作片。
  为了方便接下来对于算法的介绍,这里引入一些符号:
   n u n_u nu代表用户数量;
   n m n_m nm代表电影数量;
   r ( i , j ) = 1 r(i,j)=1 r(i,j)=1时表示用户 j j j给电影 i i i评过分;
   y ( i , j ) y^{(i,j)} y(i,j)代表用户 j j j给电影 i i i的评分;
   m j m_j mj代表用户 j j j评过分的电影数;

基于内容的推荐系统

movieABCDx1x2
Love at last55000.90
Romance forever5??01.00.01
Cute puppies of love?40?0.990
Nonstop car chases00540.11.0
Swords vs. karate005?00.9

其中, x 1 x_1 x1 x 2 x_2 x2代表电影的两个特征,分别是:romance和action。

基于电影特征推荐

  我们用 θ j \theta_j θj表示用户 j j j的参数向量; x ( i ) x^{(i)} x(i)表示电影 i i i的特征向量;对于用户 j j j和电影 i i i,我们预测评分为 ( θ ( j ) ) T x ( i ) (\theta^{(j)})^Tx^{(i)} (θ(j))Tx(i)。针对用户 j j j,该线性回归模型的代价函数可以表示如下:
m i n θ j   1 2 ∑ i : r ( i , j ) = 1 ( ( θ ( j ) ) T x ( i ) − y ( i , j ) ) 2 + λ 2 ( θ k ( j ) ) 2 min_{\theta_j}\ \frac12\sum_{i:r(i,j)=1}((\theta^{(j)})^Tx^{(i)}-y^{(i,j)})^2+\frac{\lambda}{2}(\theta_k^{(j)})^2 minθj 21i:r(i,j)=1((θ(j))Tx(i)y(i,j))2+2λ(θk(j))2
其中, i : r ( i , j ) i:r(i,j) i:r(i,j)表示我们只计算用户 j j j评过分的电影。为了学习所有的用户,我们将所有用户的代价函数求和:
m i n ( θ ( 1 ) , . . . , θ ( n u ) )   1 2 ∑ j = 1 n u ∑ i : r ( i , j ) = 1 ( ( θ ( j ) ) T x ( i ) − y ( i , j ) ) 2 + λ 2 ∑ j = 1 n u ∑ k = 1 n ( θ k ( j ) ) 2 min_{({\theta^{(1)}},...,\theta^{(n_u)})}\ \frac12\sum^{n_u}_{j=1}\sum_{i:r(i,j)=1}((\theta^{(j)})^Tx^{(i)}-y^{(i,j)})^2+\frac{\lambda}{2}\sum^{n_u}_{j=1}\sum^n_{k=1}(\theta_k^{(j)})^2 min(θ(1),...,θ(nu)) 21j=1nui:r(i,j)=1((θ(j))Tx(i)y(i,j))2+2λj=1nuk=1n(θk(j))2接下来用梯度下降算法求最优解:
θ k ( j ) : = θ k ( j ) − α ∑ i : r ( i , j ) = 1 ( ( θ ( j ) ) T x ( i ) − y ( i , j ) ) x k ( i )         f o r   k = 0 \theta_k^{(j)}:=\theta_k^{(j)}-\alpha\sum_{i:r(i,j)=1}((\theta^{(j)})^Tx^{(i)}-y^{(i,j)})x_k^{(i)}\ \ \ \ \ \ \ for\ k=0 θk(j):=θk(j)αi:r(i,j)=1((θ(j))Tx(i)y(i,j))xk(i)       for k=0 θ k ( j ) : = θ k ( j ) − α ( ∑ i : r ( i , j ) = 1 ( ( θ ( j ) ) T x ( i ) − y ( i , j ) ) x k ( i ) + λ θ k ( j ) )         f o r   k ≠ 0 \theta_k^{(j)}:=\theta_k^{(j)}-\alpha(\sum_{i:r(i,j)=1}((\theta^{(j)})^Tx^{(i)}-y^{(i,j)})x_k^{(i)}+\lambda\theta_k^{(j)})\ \ \ \ \ \ \ for\ k\neq0 θk(j):=θk(j)α(i:r(i,j)=1((θ(j))Tx(i)y(i,j))xk(i)+λθk(j))       for k=0

基于用户参数推荐

  相反地,当我们拥有用户的参数时,我们可以学习得出电影的特征:
m i n x ( 1 ) , . . . , x ( n m )   1 2 ∑ i = 1 n m ∑ j : r ( i , j ) = 1 ( ( θ ( j ) ) T x ( i ) − y ( i , j ) ) 2 + λ 2 ∑ i = 1 n m ∑ k = 1 n ( x k ( i ) ) 2 min_{x^{(1)},...,x^{(n_m)}}\ \frac12\sum^{n_m}_{i=1}\sum_{j:r(i,j)=1}((\theta^{(j)})^Tx^{(i)}-y^{(i,j)})^2+\frac{\lambda}{2}\sum^{n_m}_{i=1}\sum^n_{k=1}(x_k^{(i)})^2 minx(1),...,x(nm) 21i=1nmj:r(i,j)=1((θ(j))Tx(i)y(i,j))2+2λi=1nmk=1n(xk(i))2

协同过滤

  在搭建一个推荐系统时,如果我们既没有用户参数,也没有电影的特征时,可以通过协同过滤算法来同时学习这两者。代价函数改为:
J ( x ( 1 ) , . . . , x ( n m ) , θ ( 1 ) , . . . , θ ( n u ) ) = 1 2 ∑ ( r : j ) : r ( i , j ) = 1 ( ( θ ( j ) ) T x ( i ) − y ( i , j ) ) 2 + λ 2 ∑ i = 1 n m ∑ k = 1 n ( x k ( i ) ) 2 + λ 2 ∑ j = 1 n u ∑ k = 1 n ( θ k ( j ) ) 2 J(x^{(1)},...,x^{(n_m)},\theta^{(1)},...,\theta^{(n_u)})=\frac12\sum_{(r:j):r(i,j)=1}((\theta^{(j)})^Tx^{(i)}-y^{(i,j)})^2+\frac{\lambda}{2}\sum^{n_m}_{i=1}\sum^n_{k=1}(x_k^{(i)})^2+\frac{\lambda}{2}\sum^{n_u}_{j=1}\sum^n_{k=1}(\theta_k^{(j)})^2 J(x(1),...,x(nm),θ(1),...,θ(nu))=21(r:j):r(i,j)=1((θ(j))Tx(i)y(i,j))2+2λi=1nmk=1n(xk(i))2+2λj=1nuk=1n(θk(j))2对代价函数求偏导,结果如下:
x k ( i ) : = x k ( i ) − α ( ∑ j : r ( i , j ) = 1 ( ( θ ( j ) ) T x ( i ) − y ( i , j ) ) θ k ( j ) + λ x k ( i ) ) x_k^{(i)}:=x_k^{(i)}-\alpha(\sum_{j:r(i,j)=1}((\theta^{(j)})^Tx^{(i)}-y^{(i,j)})\theta_k^{(j)}+\lambda x_k^{(i)}) xk(i):=xk(i)α(j:r(i,j)=1((θ(j))Tx(i)y(i,j))θk(j)+λxk(i)) θ k ( j ) : = θ k ( j ) − α ( ∑ i : r ( i , j ) = 1 ( ( θ ( j ) ) T x ( i ) − y ( i , j ) ) x k ( i ) + λ θ k ( j ) ) \theta_k^{(j)}:=\theta_k^{(j)}-\alpha(\sum_{i:r(i,j)=1}((\theta^{(j)})^Tx^{(i)}-y^{(i,j)})x_k^{(i)}+\lambda\theta_k^{(j)}) θk(j):=θk(j)α(i:r(i,j)=1((θ(j))Tx(i)y(i,j))xk(i)+λθk(j))协同过滤算法使用步骤如下:

  1. 初始化 X X X Θ \Theta Θ为一些随机小值
  2. 使用梯度下降算法最小化代价函数
  3. 训练完后,使用 ( θ ( j ) ) T x ( i ) (\theta^{(j)})^Tx^{(i)} (θ(j))Tx(i)为用户 j j j给电影 i i i评分

均值归一化

  如果我们新增一名新用户E,并且E未曾对任何电影进行评分,那我们的推荐过程可以如下进行:

  1. 对已有用户评分结果进行均值归一化处理
  2. 系统将会认为E对电影的评分是该电影的平均分
  3. 接下来的步骤同上述推荐算法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本教程为官方授权出品伴随着大数据时代的到来,作为发掘数据规律的重要手段,机器学习已经受到了越来越多的关注。而作为机器学习算法在大数据上的典型应用,推荐系统已成为各行业互联网公司营销体系中不可或缺的一部分,而且已经带来了真实可见的收益。目前,推荐系统机器学习已经成为各大公司的发力重点,众多知名公司(如亚马逊、netflix、facebook、阿里巴巴、京东、腾讯、新浪、头条等)都在着眼于将蕴含在庞大数据中的宝藏发掘出来,懂机器学习算法的大数据工程师也成为了新时代最紧缺的人才。精心打造出了机器学习推荐系统课程,将机器学习理论与推荐系统项目实战并重,对机器学习推荐系统基础知识做了系统的梳理和阐述,并通过电影推荐网站的具体项目进行了实战演练,为有志于增加大数据项目经验、扩展机器学习发展方向的工程师提供更好的学习平台。本课程主要分为两部分,机器学习推荐系统基础,与电影推荐系统项目实战。第一部分主要是机器学习推荐系统基础理论的讲解,涉及到各种重要概念和基础算法,并对一些算法用Python做了实现;第二部分以电影网站作为业务应用场景,介绍推荐系统的开发实战。其中包括了如统计推荐、基于LFM的离线推荐、基于模型的实时推荐、基于内容推荐等多个模块的代码实现,并与各种工具进行整合互接,构成完整的项目应用。通过理论和实际的紧密结合,可以使学员对推荐系统这一大数据应用有充分的认识和理解,在项目实战中对大数据的相关工具和知识做系统的回顾,并且可以掌握基本算法,入门机器学习这一前沿领域,为未来发展提供更多的选择,打开通向算法工程师的大门。谁适合学:1. 有一定的 Java、Scala 基础,希望了解大数据应用方向的编程人员2. 有 Java、Scala 开发经验,了解大数据相关知识,希望增加项目经验的开发人员3. 有较好的数学基础,希望学习机器学习推荐系统相关算法的求职人员

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值