论文笔记-Factorization Machines

因子分解机Factorization Machine的提出是对标SVM和矩阵分解,如SVD++、PITF、FPMC模型。

FM集成了SVM的优点,可以应用在任意的实值特征向量上。相比于SVM,FM可以通过分解参数对变量之间的交互建模,因此可以应用于数据稀疏的问题上,来对特征之间的交互进行估计,SVM在这类问题上没有很好的发挥。FM的计算时间可以优化到线性时间,因此FM可以直接优化。不同于对偶SVM,FM不用对原问题进行对偶求解,模型参数可以直接估计计算,不需要支持向量。

其他的分解方法,如矩阵分解、并行因子分析,或特定模型,如SVD++、PITF、FPMC。这些模型对于更general的问题不能很好的适用,而且对输入数据有特定的格式要求。而且,它们的求解和优化方法需要根据具体的问题来确定、推导。FM和它们相比,只是在输入数据上相似,但是更容音应用,而且不需要特定的先验知识。

FM

公式

对于二阶交叉特征来说,FM计算公式为:

FM

其中,

vi表示V中由k个元素组成的第i行向量,k是一个决定特征向量维度的超参数;

w0表示全局的偏置;wi表示对应特征的权重参数;wij=<vi, vj>表示第i个、第j个特征的交叉值。FM不是直接用wij,而是用分解来对其进行建模,这正是FM可以用于高稀疏数据场景的关键。

优化

对于FM的交叉项来说,如果直接计算时间复杂度为O(k*n*n);但是我们可以对这个计算过程进行进一步的优化,将时间复杂度简化为O(k*n)。

简化

这个过程相当于完全平方公式,我们只要交叉项,所以 ( a + b ) 2 = a 2 + b 2 + 2 a b (a+b)^2=a^2+b^2+2ab a+b2=a2+b2+2ab, a b = 1 2 [ ( a + b ) 2 − ( a 2 + b 2 ) ] ab=\frac1{2}[(a+b)^2-(a^2+b^2)] ab=21[(a+b)2(a2+b2)]

在知道了FM的表达式之后,其中的参数可以借助于梯度下降方法进行求解。

参数求解

应用

FM可以用于各种监督学习任务,比如

  • 回归问题。FM的输出值作为预测;
  • 二分类问题。FM的输出正负作为分类结果;
  • 排序问题。根据FM的输出对x进行排序,使用pair-wise loss作为损失函数。

个人思考

FM的关键点在于使用分解向量来对交叉项系数进行建模;每个特征对应一个向量。使用这种方法建模,将xixj的关联关系打破,原来的建模wij系数的训练依赖于xixj样本,但对于非常稀疏的场景中,这样的数据是非常稀少的,就会导致wij学习不到,始终为0(初始化为0);**使用分解建模后,将wij变为vi,vj;**而所有与xi发生交叉的特征样本都可以用来训练vi,vi能很好地训练,vj类似;这样通过<vi, vj>就可以得到wij,提升了模型的泛化能力。

vi、vj本质上也属于一种embedding方式。

对于推荐系统、计算广告来说,场景数据非常稀疏;此外,交叉特征对于模型的预测非常有帮助。比如,“男性”+“大学生”,对于“LoL”广告感兴趣的可能性会很大,发生点击的概率比“女性”+“白领”要大。

自己如何产生合理的idea?


欢迎关注公众号,一起学习

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值