机器学习技法 Lecture15: Matrix Factorization

Linear Network Hypothesis

推荐系统问题有个经典的给电影评分的预测。
在这里插入图片描述
还有2006年Netflix的一个比赛:
在这里插入图片描述
这个问题就是如何从已有的评分数据中推断用户对未知电影的喜好程度。但是首先就有个问题,这个问题中无论用户id还是电影id,都是一个序数的特征,没有实际的数值意义。而我们以前学的模型除了决策树之外都是建立在数值特征上面的:
在这里插入图片描述
可以通过one-hot编码解决这个问题:
在这里插入图片描述
因此数据可以表示为如下形式:
在这里插入图片描述
有个想法就是通过神经网络做特征抽取来进行拟合:
在这里插入图片描述
但实际上我们发现非线性激活函数tanh并不是必要的,因为输入x中只有一个值是1,其它都是0,因此隐藏层中也只与x中的一个维度有关,因此不需要非线性函数。去掉之后就得到了一个线性网络的假设函数:
在这里插入图片描述
对这样一个函数,需要训练出前后两个部分的系数。

Basic Matrix Factorization

这个假设中Vx可以看作是一个特征抽取的函数:
在这里插入图片描述
其中x是用户的id特征。抽取后的特征是一个向量。对于每个电影而言,得到的结果是一个数值,用来拟合已知的分数。
在这里插入图片描述
在特征抽取的基础上,对W的训练只是相当于训练一个线性模型。从这个结果可以看出来,W和V的每一个分量都分别代表了一个电影的特征以及一个用户的特征。那么数据R表示的矩阵就可以看成它们的乘积:
在这里插入图片描述
反过来说,W和V可以通过对R的分解来得到,而它们又有着各自的物理意义,因此也可以用来做其它任务中的特征提取。
在这里插入图片描述
在这个任务中,有两个部分的参数需要学习。因此也可以考虑交替优化的方式,固定其中一个矩阵,对另一个矩阵进行优化相当于是做线性回归:
在这里插入图片描述
这两个矩阵实际上是对称的,分别代表着用户与电影。优化的算法过程如下:
在这里插入图片描述
它们最终也会到达收敛状态。

可以对比一下线性autoencoder以及矩阵分解算法:
在这里插入图片描述
他们有着各自的特点与解法。但实际上线性autoencoder可以看成矩阵分解的一个特例。

Stochastic Gradient Descent

除了使用直接解线性回归的方式来解这个问题,也可以通过SGD的方式,这样做更简单有效。
在这里插入图片描述
在MF里,每个样本的err的梯度只与其对应的用户与电影有关,其它的梯度为0.
在这里插入图片描述
因此SGD算法解MF过程如下:
在这里插入图片描述
在KDDCup2011的比赛中,样本是随着时间变化的。而需要预测的是更后面时间对应的结果。因此调整了SGD算法,让它更看中时间靠后的样本,得到了更好的结果。
在这里插入图片描述

Summary of Extraction Models

最后为特征提取的模型做个总结:
在这里插入图片描述
除了模型本身之外,它们提取特征所使用的技巧也很重要,而且也很具有多样性:
在这里插入图片描述
对于特征提取的模型来说,它们有着自己的优缺点,使用的时候需要注意。
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值