FM详解

1. 基本概念

常见的线性表达式如下:

y = ω 0 + ∑ i = 1 n ω i x i y=\omega_0 + \sum^{n}_{i=1}\omega_ix_i y=ω0+i=1nωixi

其中 ω 0 \omega_0 ω0为初始权值,或者理解为偏置项, ω i \omega_i ωi为每个特征 x i x_i xi对应的权值。可以看到,这种线性表达式只描述了每个特征与输出的关系。FM的表达式如下,可观察到,只是在线性表达式后面加入了新的交叉项特征及对应的权值。

y = ω 0 + ∑ i = 1 n ω i x i + ∑ i = 1 n − 1 ∑ j = i + 1 n ω i j x i x j y=\omega_0 + \sum^{n}_{i=1}\omega_ix_i+\sum^{n-1}_{i=1}\sum^n_{j=i+1}\omega_{ij}x_ix_j y=ω0+i=1nωixi+i=1n1j=i+1nωijxixj

上面公式中, n n n代表特征数量, x i x_i xi是第i个特征得值, ω \omega ω是模型权重,从公式来看,模型得前半部分就是普通得LR线性组合,后半部分是交叉项:特征得组合。单单从模型的能力上讲,FM的表达能力强于LR,当交叉项参数全部为0得时候退化为普通得LR模型。从公式中,我们可以看出组合特征得参数一共有 1 2 n ( n − 1 ) \frac{1}{2n(n-1)} 2n(n1)1个,任意两个参数都是独立的。然而在数据稀疏性普遍存在的实际场景中,二次项参数的训练是很困难的。原因是:每个参数 ω i j \omega_{ij} ωij的训练都需要大量 x i x_i xi x j x_j xj都非零的样本;由于样本数据本来就比较稀疏,满足 x i x_i xi x j x_j xj都非零的样本将会非常的少。训练样本不足,很容易导致参数 w i j w_{ij} wij不准确,最终将严重影响模型的性能。

矩阵分解提供了一种解决数据稀疏性的思路。在基于模型的协同过滤中,一个评分矩阵可以分解为user矩阵和item矩阵,每个user 和item都可以采用一个隐向量表示。这里,采用的方法是:给每个特征分量 x i x_i xi,引入一个辅助向量 v i = ( v 1 , v 2 , . . . . . . . v k ) v_i=(v_1,v_2,.......v_k) vi=(v1,v2,.......vk),然后利用 v i ∗ v j v_i*v_j vivj对交叉项的系数 w i j w_{ij} wij进行估计(为什么可以这样估计还存在疑问),即 ω i j = < v i , v j > = ∑ f = 1 k v i , f ⋅ v j , f \omega_{ij}=\left<v_i,v_j\right>=\sum^k_{f=1}v_{i,f} \cdot v_{j,f} ωij=vi,vj=f=1kvi,fvj,f

在这种情况下,我们只需要求出特征分量 x i x_i xi的辅助向量 v i = ( v 1 , v 2 , . . . . . . . v k ) vi=(v_1,v_2,.......v_k) vi=(v1,v2

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值