FM算法:因子分解机

前言

在一些特征极度稀疏的情况下,甚至是one-hot编码下,也很难对整个模型起到作用,但如果组合分析,可能会对拟合数据起到作用,但是如何特征组合?组合的依据是什么?本文就来讲解这些。

场景

在电影的推荐场景中,用户的维度特别大,电影的维度也非常大,例如下图:

特征中:

  • 前四列表示用户u(one-hot编码,稀疏)
  • 五列表示电影i(ont-hot编码,稀疏)
  • 五列表示用户u对电影i的打分(归一化特征)
  • 一列表示时间(连续特征)
  • 五列表示用户u对电影i打分前评价过的最近一部电影(one-hot编码,稀疏)
  • 最后一列表示用户对item的评价

这样一个稀疏的特征,我们要估计用户A和电影ST的关系系数 w w w以更好地预测y,如果是简单地考虑特征之间的共现情况来估计 w w w,从已有的训练样本来看,这两者并没有共现,因此学习出来的 w = 0 w=0 w=0。而实际上,A和ST应该是存在某种联系的:

  • 从用户角度来看,A和B都看过SW,而B还看过ST,说明A也可能喜欢ST,说明A很有可能也喜欢ST。
  • 而通过向量v来表示用户和电影,任意两两之间的交互都会影响v的更新,从前面举的例子就可以看过,A和B看过SW,这样的交互关系就会导致v(ST)的学习更新.

因此通过向量v的学习方式能够更好的挖掘特征间的相互关系,尤其在稀疏条件下。所以我们假设每个特征都有一个隐藏向量 v v v,利用隐藏向量来分析两个特征之间的关系,公式:
y = w 0 + ∑ i = 1 w i x j + ∑ i = 0 n ∑ j = i + 1 n < v i , v j > x i x j y=w_0+\sum_{i=1}w_{i}x_j+\sum_{i=0}^{n}\sum_{j=i+1}^{n}<v_i,v_j>x_{i}x_j y=w0+i=1wixj+i=0nj=i+1n<vi,vj>xixj

后半部分表示组合特征,通过拆解可以将复杂度从 O ( k n 2 ) O(kn^2) O(kn2)降低到 O ( k n ) O(kn) O(kn),主要参考后面的博文,这里不具体详解,
可以给 < v i , v j > <v_i,v_j> <vi,vj>表示点乘,可以初始化 v i v_i vi,然后在损失函数中利用梯度下降法来更新 v i v_i vi

进阶算法

FFM算法、DeepFM算法等,

参考博客

python机器学习案例系列教程——CTR/CVR中的FM、FFM算法
FM算法解析
FM算法原理分析与实践
FM算法(一):算法理论
DeepFM算法解析及Python实现
FM系列算法解读(FM+FFM+DeepFM)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值