FM因式分解机

好文推荐:https://www.hrwhisper.me/machine-learning-fm-ffm-deepfm-deepffm/

强调一点,FM的适用对象是稀疏数据。这一点之后会有更深入的介绍。实际中,很多特征类型是categorical型,比如性别特征,有男、女两个选项,如果将男性标记为1,女性标记为2是不太合理的,因为数字是具有意义的,2是1的2倍,而不能说女性是男性的2倍,所以对于categorical feature都会使用独热编码one-hot encoding,将男性标记为[1,0],女性标记为[0,1]。其他的categorical feature还有很多,比如文章类型,娱乐、运动、军事、科技等等,这些类别之间不具有数值意义的关系,同理需要使用one-hot encoding,关于one-hot encoding,如果你还不太了解,请看https://www.imooc.com/article/35900
categorical feature做完one-hot encoding之后是非常稀疏的,这在实际中十分常见,而许多方法对于稀疏数据都束手无策,比如SVM,它无法在非常稀疏的数据下学习复杂的非线性内核空间中的参数。

为什么用 one-hot,而不是直接编码 1,2,3,4,5 呢?

我们在面对 category 类型的变量的时候,一个常用的方法就是进行 one-hot encoding,但是为什么这么做呢?举个例子,假设有一列叫婚姻状态,可能值有:单身,已婚,离异。我们可以将其直接编码为 0,1,2,这样子的话,我们在一些计算距离的算法中,0 和 1 会比 0 和 2 离的更近,但其实 0,1,2 都是一样的,所有一个解决方法就是将婚姻状态这列转换为 3 列,每列都用 0,1 来表示是否是该值,这样子彼此之间的距离就一样了,保证了语义的一致性。

FM公式推导

 这里解释一下上面公式的形成(原文中说的不太容易理解):我们记\large B=\sum_{i=1}^{n}\sum_{j=1}^{n}<v_i,v_j>x_ix_j,其中\large <v_i,v_j>=w_{ij}是一个常数,所以B可以看做是一个多项式的集合,我们记作\large A=\sum_{i=1}^{n}\sum_{j=i+1}^{n}<v_i,v_j>x_ix_j\large C=\sum_{i=1}^{n}\sum_{j=1}^{i-1}<v_i,v_j>x_ix_j           \large D=\sum_{i=1}^{n}<v_i,v_i>x_ix_i

我们可以得到B=A+C+D。A和C可以看做B的上三角部分和下三角部分,D是B的斜对角线部分,举个例子来说吧,假设有n个特征,B的每项可以看做是:

\large \begin{bmatrix} \\ x_1\\ x_2\\ ....\\ x_n \end{bmatrix}\cdot \begin{bmatrix} & x_1 & x_2 & ...... &x_n\end{bmatrix}=\begin{bmatrix} &x_1^2 &x_1x_2 &..... & x_1x_n\\ &x_2x_1 & x_2^2 & ..... & x_2x_n\\ &...... &...... & ...... &...... \\ &x_nx_1 & x_nx_2 & ..... & x_n^2\\\end{bmatrix}

\large <v_i,v_j>=w_{ij}是其中每一项的系数(但是B和这个矩阵是不相同的,B是一个表达式之和,相当于矩阵的每一项之和),A可以看做B的上三角形之和,C可以看作B 的下三角形之和,D是B的主对角线之和。由于B的对称性,并且\large <v_i,v_j>=<v_j,v_i>=w_{ij}, 所以A和C具有相同的每一项,即A=C,故带入B=2*A+D,得到\large A=\frac{1}{2}(B-D),故产生了(2)式。

最后一句话总结,FM最大特点和优势:

FM模型对稀疏数据有更好的学习能力,通过交互项可以学习特征之间的关联关系,并且保证了学习效率和预估能力。

我们发现,代码跑得很慢,并且精度也很差。因此,一个新的封装了FM和FFM的工具包xLearn应运而生。

xlearn的优势:
1.通用性好,包括主流的算法(lr, fm, ffm 等),用户不用再切换于不同软件之间
2.性能好,测试 xLearn 可以比 libfm 快13倍,比 libffm 和 liblinear 快5倍
3.易用性和灵活性,xLearn 提供简单的 python 接口,并且集合了机器学习比赛中许多有用的功能
4.可扩展性好。xLearn 提供 out-of-core 计算,利用外存计算可以在单机处理 1TB 数据


 

FM优点

1、可以对稀疏数据中的特征进行组合
2、计算时间复杂度为O(kn)
3、FM是一种可以与任何实值特征向量一起使用的通用预测器。

缺点

你发现了没?在做特征组合的时候,我们不确定是同一域内的特征相组合(这不太合理,比如男性【1,0】两个维度数据,如果组合的是性别本身这两个维度,不太有意义),还是组合的是域间维度,比如性别和商品类别之间的组合是有意义的,对FM的一个改进是FFM, FFM是使得特征有自己的归属域,比如男性【1,0】是性别域,这两维数据不能拆开,下次我们再详细介绍一下FFM.


原文:https://www.jianshu.com/p/ccec122072cd
原文:https://blog.csdn.net/anshuai_aw1/article/details/83747171

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值