Matrix Factorization
Linear Network Hypothesis
- Netflix推荐问题:
- 对电影 m m m,有用户 n n n的评分 r n m r_{nm} rnm
- x ~ n = ( n ) , y n = r n m \bold {\tilde x}_n = (n),\ y_n = r_{nm} x~n=(n), yn=rnm
- 抽象特征,称之为类别特征
- 大部分ML模型都是处理数值特征
- 线性特征
- 拓展线性网络——NNet
- 决策树可以处理非数值特征
- 思路:将类别特征转换到数值特征——encoding
- 二元向量编码——one-hot
- 整合对每一个用户 n n n,有 y n = [ r n 1 , ? , ? , r n 4 , … , r n M ] y_n = [r_{n1}, ?, ?, r_{n4}, \ldots, r_{nM}] yn=[rn1,?,?,rn4,…,rnM],其中问号为未评分情况
- 思路:使用
N
−
d
~
−
M
N - \tilde d - M
N−d~−M的神经网络完成特征抽取
- 由于输入只有一个为1,其余为0,中间隐藏层的神经元可以为线性
- Linear Network
- 为了方便表示,将两层权重表示成两个矩阵 V N × d ~ T V^T_{N \times \tilde d} VN×d~T和 W d ~ × M W_{\tilde d \times M} Wd~×M
- 则整个线性网络表示为 h ( x ) = W T V x h(\bold x) = W^T V \bold x h(x)=WTVx
- 对每一个用户, h ( x n ) = W T v n h(\bold x_n) = W^T \bold v_n h(xn)=WTvn,其中 v n \bold v_n vn表示 V V V的第 n n n列
- 目标即学习这两个矩阵
Basic Matrix Factorization
- 对第 m m m个电影,可以视为一个简单的线性模型 h m ( x ) = w m T Φ ( x ) h_m(\bold x) = \bold w_m^T \Phi(\bold x) hm(x)=wmTΦ(x)
- 则有 r n m ≈ w m T v n r_{nm} \approx \bold w_m^T \bold v_n rnm≈wmTvn
- 回归任务,平方误差(省略参数): E i n ( { w m } , { v n } ) = ∑ ( r n , m − w m T v n ) 2 E_{in} (\{\bold w_m\}, \{\bold v_n\}) = \sum (r_{n,m} - \bold w_m^T \bold v_n)^2 Ein({wm},{vn})=∑(rn,m−wmTvn)2
- 特征转换和线性模型的联合学习
- 考虑对称性: r n m ≈ w m T v n = v n T w m r_{nm} \approx \bold w_m^T \bold v_n = \bold v_n^T \bold w_m rnm≈wmTvn=vnTwm
- 矩阵形式:
R
≈
V
T
W
R \approx V^T W
R≈VTW
- 通过对分解出的矩阵的学习,实现对 R R R中未知项的预测
- 抽象特征都可以使用这种解决思路
- 最小化目标:
min
W
,
V
E
i
n
(
{
w
m
}
,
{
v
n
}
)
\min_{W, V} E_{in} (\{\bold w_m\}, \{\bold v_n\})
minW,VEin({wm},{vn})
- 只在已知评分上计算误差
- 双组变量优化:交替优化?
- 固定 v n \bold v_n vn,优化 w m \bold w_m wm:在 D m \mathcal D_m Dm上的误差最小化,对每一步电影做线性回归
- 固定 w m \bold w_m wm,优化 v n \bold v_n vn:对称性的考虑,对每一个用户做线性回归
- 交替最小平方算法
- 初始化:随机初始化矩阵
- 可以认为自编码器是一个矩阵分解的特例(两个矩阵相同,所有项已知)
Stochastic Gradient Descent
- 对于每一个样本,有误差 err ( n , m , r n m ) = ( r n m − w m T v n ) 2 \operatorname{err}(n, m, r_{nm}) = (r_{nm} - \bold w_m^T \bold v_n)^2 err(n,m,rnm)=(rnm−wmTvn)2
- 对用户矩阵的梯度: ∇ v n = − 2 ( r n m − w m T v n ) w m \nabla_{\bold v_n} = -2 (r_{nm} - \bold w_m^T \bold v_n) \bold w_m ∇vn=−2(rnm−wmTvn)wm
- 对电影矩阵的梯度: ∇ w m = − 2 ( r n m − w m T v n ) v n \nabla_{\bold w_m} = -2 (r_{nm} - \bold w_m^T \bold v_n) \bold v_n ∇wm=−2(rnm−wmTvn)vn
- 梯度等价于 − ( r e s i d u a l ) ( o t h e r f a c t o r ) - (residual) (other \ factor) −(residual)(other factor)
- SGD用于矩阵分解
- 随机取得一个已知点 r n m r_{nm} rnm
- 计算residual r ~ n m = ( r n m − w m T v n ) \tilde r_{nm} = (r_{nm} - \bold w_m^T \bold v_n) r~nm=(rnm−wmTvn)
- SGD更新
- v n n e w ← v n + η r ~ n m w m \bold v_n^{new} \gets \bold v_n + \eta \tilde r_{nm} \bold w_m vnnew←vn+ηr~nmwm
- w m n e w ← w m + η r ~ n m v n \bold w_m^{new} \gets \bold w_m + \eta \tilde r_{nm} \bold v_n wmnew←wm+ηr~nmvn
Summary of Extraction Models
- 抽取模型:特征转换+线性模型
- 特征转换增强数据的表达性
- 优势:
- 对人很容易使用——减少人设计特征的麻烦
- 有足够的隐藏变量,足够强大
- 劣势:
- 优化过程比较难
- 复杂模型,有过拟合风险