机器学习技法15: 矩阵分解(Matrix Factorization)



上节课介绍了径向基函数网络(RBFNet),它实际上是以距离计算相似性的线性融合模型。通过k-Means聚类算法来找到具有代表性的中心点,从而使用RBFNet进一步计算距离。本节课介绍矩阵分解(Matrix Factorization)。

15.1 Linear Network Hypothesis

首先回顾在机器学习基石课程第一节所学:
在这里插入图片描述
机器学习的目标是从输入数据中学习映射关系。并且还举了网飞的电影评分预测的例子。假设有类似的数据集,只有抽象的特征和历史评分,如何让算法从中学习到用户的喜好,从而准确预测评分。首先看一下特征的编码:
在这里插入图片描述
多类别特征例如ID,血型,编程语言等等;大多数机器学习模型只能处理数值特征,像线性模型,神经网络;有个例外是决策树,可以处理任意特征,不限于数值特征。所以在大多数情况下,尤其是深度神经网络盛行的今天,需要将多特征转换为数字编码,也就是熟悉的one-hot编码,也叫作哑变量(dummies)。例如四个类别的one-hot编码:
在这里插入图片描述
接下来看一下神经网络如何从编码向量中提取特征:
在这里插入图片描述
对于数据集 DmD_m ,其中包含 nn 个用户对 mm 步电影的评分。首先对用户 xnx_n 编码成one-hot编码,其对应的期望输出值为一个向量 yny_n ,各元素一次对应该用户 xnx_nmm 步电影的评分 rnmr_{nm},该用户没有评过的电影标记为 “?” 。

如果用神经网络从这个数据集中提取特征(为了简化计算,不考虑偏差 x0x_0),该模型的网络结构是 Nd~MN-\tilde{d}-M,其中,NN 表示输入层样本个数, d~\tilde{d} 表示隐藏层神经元个数,MM 表示输出层电影评分个数。输入数据 (xn,yn)(x_n, y_n),输出该用户 xnx_n 对各部电影的预测评分 y1,y2,...,ymy_1,y_2,...,y_m

由于输入数据是经过编码的数据,只有一个元素为1,其余为0,也就是说每次只有一个权重向量 wniw_{ni} 与样本的乘积进入隐藏层神经元进行激活,从效果上来说,激活函数选择 tanh()tanh() 与选择 Identity()Identity() 无异,所以可以使用 Identity()Identity() 激活函数。替换之后得到:
在这里插入图片描述
修改之后,重新做一些约定:

  • 将两层权重分别记为 N×d~N \times \tilde{d}VTV^Td~×M\tilde{d} \times MWW
  • 假设函数 h(x)=WTVxh(x) = W^TVx,其中 xxN×1N \times 1 的列向量,VVd~×N\tilde{d} \times N 的矩阵,WTW^TM×d~M \times \tilde{d} 的矩阵;
  • 每位用户的评分预测输出为 h(xn)=WTvnh(x_n) = W^Tv_nvnv_n 是矩阵 VV 的第 nn 列元素,其尺寸为 d~×1\tilde{d} \times 1

习题1:
在这里插入图片描述


15.2 Basic Matrix Factorization

上一小节介绍了神经网络模型和假设函数,其中 VxVx 可以看做对用户的特征转换 Φ(x)\Phi(x) ,对于第 mm 部电影,其预测评分为:
在这里插入图片描述
使用平方误差衡量,其误差函数 EinE_{in} 为:
在这里插入图片描述
线性网络本质上是从所有 DmD_m 中学习变换和组合的线性模型。接下来要求出最小化 EinE_{in} 时对应的 VVWW。模型的目标是要让真实评分和预测评分尽可能相同,即 rnmwmTvn=vnTwmr_{nm} \approx w^T_mv_n = v^T_nw_m,记为 RVTWR \approx V^TW,这种方式称为矩阵分解(Matrix Factorization),矩阵 RR 表示用户对各电影的评分矩阵。
在这里插入图片描述
分解后,VTV^T 表示用户的特征,WW 表示某部电影的权重。类似的矩阵分解建模还可以用于其它抽象特征。
在这里插入图片描述
接下来看一下矩阵分解如何学习:
在这里插入图片描述
其目标函数有两组变量需要求解,与上节课求解 k-Means 的方法类似,固定一组变量,求解另一组变量,迭代求解,这种方式称为交替最小二乘法(alternating least squares)。其流程是:

  • 固定用户特征 vnv_n ,对每部电影做线性回归,得到每部电影的 d~\tilde{d} 维特征值 wmw_m
  • 固定电影特征 wmw_m ,对每位用户做线性回归,得到每位用户对电影的特征 vnv_n

算法流程为:
在这里插入图片描述
交替最小二乘法通常需要随机选取 vnv_nwnw_n 的初始值;由于每次迭代跟新都能减小 EinE_{in} ,保证了算法的收敛。下面比较上节课所学的线性自动编码器和矩阵分解的异同点:
在这里插入图片描述
二者具有很强的相似性,实际上,线性自动编码器可以看做完整X的特殊矩阵分解。


习题2:
在这里插入图片描述


15.3 Stochastic Gradient Descent

上一小节介绍了迭代最小二乘法求解矩阵分解。本小节介绍随机梯度下降求解矩阵分解。
在这里插入图片描述
随机梯度下降每次只随机选取一个样本,然后在与这个样本有关的误差函数上使用梯度下降算法。随机梯度下降算法的优势是每次迭代中处理的样本数量少,效率高;算法实现简单;容易扩展到其它误差函数的计算。接下来对误差求偏导:
在这里插入图片描述
容易看出 vn∇v_nwm∇w_m 的形式一致,都是系数乘以残差 (rnmwmTvn)(r_{nm}− w^T_mv_n),再乘以特征(wmw_mvnv_n)。SGD for Matrix Factorization的算法流程为:
在这里插入图片描述
在实际应用中,SGD是求解矩阵分解常用的方法。下面看一个实际应用,根据现有数据集,预测未来的趋势,这是一个与时间有关的预测模型。
在这里插入图片描述
台大在2011的KDDCup中,通过改进SGD算法,即使用先前最后的几个样本来进行梯度下降,改进之后取得了不俗的表现。这也告诉我们说,要了解算法的原理与细节,这样才能在实际应用过程中灵活运用,对算法做出适合业务需求的改进。


习题3:
在这里插入图片描述


15.4 Summary of Extraction Models

从第12节课程到本节课程共4节课程,讲解了Extraction Models,这个定义是个模糊的概念,实际上其是通过一边做特征转换,一边做组合的模型。这样就可以做到提取特征的同时,还能够结合各个假设函数的优点。各模型对比如下:
在这里插入图片描述
各模型的特征提取方法如下:
在这里插入图片描述
各模型的优缺点如下:
在这里插入图片描述


习题4:
在这里插入图片描述


Summary

在这里插入图片描述
恭喜你成为Extraction Model的砖家!本节课介绍了矩阵分解。首先介绍了线性网络的假设,通过编码的向量中提取特征;然后介绍了基本的矩阵分解,通过电影评分的例子,介绍了迭代最小二乘法来求解矩阵分解中的待解参数。第三小节介绍了使用梯度下降算法那求解矩阵分解中的待解参数。最后一小节总结了Extraction Model。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章