FM和FFM的知识总结(特征组合、公式化简、FM与FFM之间的联系与区别)

FM


参考链接:

点击率预估算法:FM与FFM

读论文:FFM

FM–2010–论文

FFM–2014–论文

FM在特征组合中的应用

FFM原理及公式推导


是2010年Stedden Rendle提出的,目的是解决稀疏数据的特征组合问题。

逻辑回归

公式1
y = w 0 + ∑ i = 1 n w i x i y=w_{0}+\sum_{i=1}^{n} w_{i} x_{i} y=w0+i=1nwixi
w 0 , w i w_{0},w_{i} w0,wi 是参数, n n n表示数据总量, x i x_{i} xi表示某条数据。

二阶多项式模型(Poly2模型)

公式2
y ^ ( x ) = w 0 + ∑ i = 1 n w i x i + ∑ i = 1 n ∑ j = i + 1 n w i j x i x j \hat{y}(\mathbf{x})=w_{0}+\sum_{i=1}^{n} w_{i} x_{i}+\sum_{i=1}^{n} \sum_{j=i+1}^{n} w_{i j} x_{i} x_{j} y^(x)=w0+i=1nwixi+i=1nj=i+1nwijxixj
一次项有 n + 1 n+1 n+1个,二次项(即组合特征的参数)共有
d ( d − 1 ) 2 \frac{d(d-1)}{2} 2d(d1),而参数与参数之间彼此独立,在稀疏场景下,二次项的训练是很困难的。因为要训练 w i j w_{ij} wij,需要大量的 x i x_{i} xi x j x_{j} xj都非0的样本(只有非0组合才有意义)。而样本本身是稀疏的,满 x i x j ≠ 0 x_{i} x_{j} \neq 0 xixj̸=0的样本会非常少,那么样本少就难以估计参数 w i j w_{ij} wij,训练出来的模型容易过拟合。

为了缓解上述问题,Rendle在2010提出了FM模型,它可以缓解公式2,特定如下:

  • FM模型可以在非常稀疏的情况下进行参数估计
  • FM模型是线性时间复杂度的,可以直接使用原问题进行求解,而且不用像SVM一样依赖支持向量。
  • FM模型是一个通用的模型,其训练数据的特征取值可以是任意实数。
    ###对参数 W i j W_{ij} Wij进行分解

公式3
y ^ ( x ) = w 0 + ∑ i = 1 d w i x i + ∑ i = 1 d ∑ j = i + 1 d ( v i ⋅ v j ) x i x j \hat{y}(\mathbf{x})=w_{0}+\sum_{i=1}^{d} w_{i} x_{i}+\sum_{i=1}^{d} \sum_{j=i+1}^{d}\left(\mathbf{v}_{i} \cdot \mathbf{v}_{j}\right) x_{i} x_{j} y^(x)=w0+i=1dwixi+i=1dj=i+1d(vivj)xixj
其中 v i v_{i} vi是第 i i i维特征的隐向量,其长度为 k ( k &lt; &lt; n ) k(k&lt;&lt;n) k(k<<n) , ( v i ⋅ v j ) \left(\mathbf{v}_{i} \cdot \mathbf{v}_{j}\right) (vivj) 为内积,其乘积为原来 w i j w_{ij} wij, 也就是
w ^ i j = ( v i ⋅ v j ) = ∑ f = 1 k v i , f ⋅ v j , f \hat{w}_{i j}=\left(\mathbf{v}_{i} \cdot\mathbf{v}_{j}\right)=\sum_{f=1}^{k} v_{i, f} \cdot v_{j, f} w^ij=(vivj)=f=1kvi,fvj,f

w i j w_{ij} wij进行分解,使得不同的特征对不再是完全独立的,而它们的关联性可以用隐式因子表示,这将使得有更多的数据可以用于模型参数的学习。比如 x i x_i xi, x j x_j xj x i x_i xi, x k x_k xk 的参数分别为: ⟨ v i , v j ⟩ ⟨v_i,v_j⟩ vi,vj ⟨ v i , v k ⟩ ⟨v_i,v_k⟩ vi,vk,它们都可以用来学习 v i v_i vi,更一般的,包含 x i x j ≠ 0 &amp; i ≠ j x_{i} x_{j} \neq 0 \&amp; i \neq j xixj̸=0&i̸=j的所有样本都能用来学习 v i v_i vi,很大程度上避免了数据稀疏性的影响。

时间复杂度O( k d 2 kd^2 kd2)—>O( k d kd kd)

A = 1 2 ( 2 A + B ) − 1 2 B . A = ∑ i = 1 n ∑ j = i + 1 n ⟨ v i ,

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值