机器学习入门之【Matrix Factorization】林轩田机器学习技法
小标 2018-10-18 来源 : 阅读 814 评论 0

摘要:本文主要向大家介绍了机器学习入门之【Matrix Factorization】林轩田机器学习技法,通过具体的内容向大家展现,希望对大家学习机器学习入门有所帮助。

本文主要向大家介绍了机器学习入门之【Matrix Factorization】林轩田机器学习技法,通过具体的内容向大家展现,希望对大家学习机器学习入门有所帮助。

在NNet这个系列中讲了Matrix Factorization感觉上怪怪的,但是听完第一小节课程就明白了。

林首先介绍了机器学习里面比较困难的一种问题:categorical features

这种问题的特征就是一些ID编号这类的,不是numerical的。
如果要处理这种情况,需要encoding from categorical to numerical
最常用的一种encoding方法就是binary vector encoding(也是实习工作中用过的路子),将binary vector作为输入。
联系之前学过的模型,可以用NNet来学习这种映射关系。

但是,binary vector毕竟不是numerical vector,由于每个输入只在一个维度上是1,其余都是0,因此,NNet中的tanh就没啥必要了(因为每个输入数据x喂到每个tanh的只有一个维度的值,输出也只受这个一个维度的值影响,且tanh是关于x是单调的)。
所以,有了如下的简化版的Linear Network,即把tanh换成了Σ求和。

这里对符号进行一下说明:
1)V是d×N的矩阵(d是hidden unit的个数,N是user的个数):V的每个column代表每个user对hidden unit的权重。
2)W’是M×d的矩阵(M是movie的个数):M的每个row代表的是每个movie关于hidden unit的权重。
考虑每个xn是binary vector,则h(xn) = W’vn(动笔推导一下就OK了):Linear Network的输出h(xn)是一个M维的vector,代表每个user对于各个movie的rating。
综上,Linear Network对于recommender system来说,需要学习的一个是V矩阵(user-hidden unit或latent factor),另一个是W矩阵(item-hidden或latent factor)。
在介绍学习方法之前,林重新整理了一下Linear Network问题。

linear network对于m-th movie来说:就是有一个对应的Wm‘来对转换后的x进行线性加权hm(x) = Wm‘ fi(x)。
因此,学习目标也了然了:
1)transform的系数矩阵
2)linear model的系数矩阵

综上,由于Linear Network的输入是binary vector的,因此对原Linear Network问题做一个变形:rnm = Wm‘Vn → R = V‘W,即转化成一个matrix factorization问题。(个人非常喜欢这段motivation的讲解,matrix factorization为什么在NNet这部分出现也理解了)
关于Linear Network转化成Matrix Factorization问题的推导,按照个人理解,我再多写两笔:
h(x) = W‘Vx (在前面的PPT中找)
    = (Vx)‘W (由于h(x)是一个向量所以颠倒一下没关系了,输出h(x)由原来的列向量变成了行向量了,但对应位置的值不变)
    = x‘V‘W ((AB)‘=B‘A‘, 矩阵转置运算性质)
则h(X) = X‘V‘W (按行补上所有的输入xn=1...N)
     = I(N) V‘W (X’矩阵每一行代表一个输入的binary vector,这里按照编号顺序排布X,所以X‘就是一个单位阵喽)
       = V‘W (原始的Linear Network问题转化为Basic Matrix Factorization问题了)
并且,这种分解是可以加上些物理意义的:可以把每个hidden unit当成是一种隐含特征(喜剧、动作...)。V和W代表user与movie与hidden unit的关系。
下面讲求解模型的方法:

最优化的问题有两组变量,可以模仿K-means学过的alternating minimization模式:轮流最优化,即alternating least square algorithm。
1)固定V(相当于user对hidden unit的权重固定):需要挨个学习Wm(m=1,...,M);学习每个Wm的时候,喂进去的是 n=1,...M,详单与少了bias的linear regression
这里容易产生一个思维误区:矩阵大部分的位置上都是空的,这些位置的值在linear regression中怎么处理呢?
想了一下,这些值根本就不在linear regression的求解范围中(注意,只对有rating评分的那些点计算误差)
2)V与M的关系类似,学的方法也类似,不赘述
整个Alternating Least Squares的算法流程如下:

1)初始化的时候randomly一下
2)由于Ein是有下限的,所以能converge
这里,林还提了一句:Linear Autoencoder(PCA)是一种特殊的Matrix Factorization。

另一种求解Matrix Factorzation的方法,也是更常用的一种就是Stochastic Gradient Descent方法。

在最优化Ein的时候,不考虑前面的常数项,考虑后面的式子。

由于有两个变量,因此需要分别求梯度。可以自行查阅SGD的算法,这里就是最简单的求导,不再赘述。
这里多提一句:为啥对Vn的求导只用考虑 (rnm - Wm‘Vn)²这一项呢?
因为,这里求导有两个变量,Vn和Wm:
1)不含有Vn的项自然不用考虑了
2)含有Vn同时含有W1,...WM的项中:
  a. 如果是batch gradient,这些含有Vn的项都应该考虑(挨个求出来,再取个平均这类的)
  b. 如果是stochastic gradient的方法,只需要考虑Wm这一个点即可了(前提是rnm有值),所以梯度的式子也就留下这一项了
(个人感觉细节还是扣清楚好,有助于理解复杂的问题)
这里有一个讲梯度算法并行化的文章://www.superchun.com/machine-learning/parallel-matrix-factorization.html
总体的算法流程如下:

最后,林还稍稍讲了一下KDD cup中的SGD使用trick:

这个trick叫time-deterministic GD : 即,在GD的最后一轮,不再用随机选点的策略了,改用选择时间轴上最近的几个点。这样对于有时间属性的数据,可以达到更好的效果。

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标人工智能机器学习频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程