前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >论文笔记-Factorization Machines

论文笔记-Factorization Machines

作者头像
公众号-不为谁写的歌
发布2020-08-28 15:26:39
7110
发布2020-08-28 15:26:39
举报
文章被收录于专栏:桃花源记桃花源记

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

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

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

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+2ab

,

ab=\frac1{2}[(a+b)^2-(a^2+b^2)]

在知道了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?


本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-08-26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • FM
    • 公式
      • 优化
      • 应用
      • 个人思考
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档