一、区别特征交互作用

这部分模型的演进思路就是根据假设来增加参数量 ( 即模型复杂度 ) 来提高模型表达能力。FFM 模型参数量太大,一则容易过拟合,二则不利于线上大规模部署 ( 内存压力 ) 。 笔者更倾向于 Field-weighted FM,简单有效,在效果和实际应用上做了很好的 tradeoff 。

1.1 FM

Factorization Machines

https://www.csie.ntu.edu.tw/~b97053/paper/Rendle2010FM.pdf

1.2 Field-aware FM

Field-aware Factorization Machines

https://www.csie.ntu.edu.tw/~r01922136/slides/ffm.pdf

FM 中一个特征只对应一个向量,而在实际场景中特征和不同 field 的特征交互时应该使用不同的向量,这就是 Field-aware FM ( FFM ) 的提出动机。FFM 最早由阮毓钦提出,最早在 kaggle 上大放异彩,现在在业界也有一定使用。

1.3 Attentional FM

Attentional Factorization Machines : Learning the Weight of Feature Interactions via Attention Networks

https://arxiv.org/abs/1708.04617v1

这篇文章发表在 IJCAI 2017 。区分不同特征相互作用的方式不再像 ffm 那么笨重,而且用一个神经网络学习得到参数,总体参数量增加不明显。

1.4 Field-weighted FM

Field-weighted Factorization Machines for Click-Through Rate Prediction in Display Advertising

https://arxiv.org/abs/1806.03514

这篇文章发表在 WWW 2018 。区分不同特征相互作用非常简单直接。具体方法是针对每两个特征增加一个参数,这样相对 FM 模型只增加 个参数 ( k 是 field 数目 ) 。

二、和深度学习结合

这部分模型的思路,特别是 DeepFM,已经被工业界快速跟进和借鉴到推荐、搜索等业务场景。

2.1 DeepFM

DeepFM : A Factorization-Machine based Neural Network for CTR Prediction

https://arxiv.org/abs/1703.04247

这篇发表在 IJCAI 2017 。DeepFM 主要是基于 Wide&Deep 框架改进,将其中 wide 部分换成 fm 进行二阶交叉。

2.2 NFM

Neural Factorization Machines for Sparse Predictive Analytics

https://arxiv.org/abs/1708.05027v1

这篇发表在 SIGIR 2017 。FM 最终二阶交叉相加后得到 k 维的向量,NFM 是将该 k 维的向量输入给全连接,而不是像 FM 直接加起来作为最终结果。可以认为 FM 模型是 NFM 的一个子集。

三、和Learning to Rank结合

这部分和工业界中的排序场景联系紧密,可做参考。

3.1 Pairwise FM

Exploiting ranking factorization machines for microblog retrieval

https://dl.acm.org/citation.cfm?id=2505648

这篇文章发表在 CIKM 2013 。LTR 中的 pairwise 是挑选一个正负样本对作为一个新的样本,具体就是 。如果 ,则就是 PairWise FM 。那如果 则就是很有名的 RANKSVM 。

3.2 Lambda FM

https://dl.acm.org/citation.cfm?id=2983758

这篇文章发表在 CIKM 2016 。主要贡献是将 LambdaRank 的思想加入到 Pairwise FM 中。github 上有个开源实现 CastellanZhang/lambdaFM ( https://github.com/CastellanZhang/lambdaFM ),支持 FTRL 优化,支持单机多线程。

四、分布式训练

在实际应用中,一旦训练数据量上升到大几百 G 或者 1T 以上的级别,即使采用单机多线程训练,也会严重阻碍模型调研的速度。所以说在工业界做模型的分布式训练是有真实的业务需求驱动,相信大厂都有成熟的基于 ps 的 FM 轮子。对于大规模分布式机器学习感兴趣的读者建议细读下面两篇文章。

4.1 DiFacto

DiFacto — Distributed Factorization Machines

https://www.cs.cmu.edu/~muli/file/difacto.pdf

这篇发表在 WSDM 2016 。主要针对 FM 算法,基于 Parameter Server 进行梯度的异步更新。在 github 上也有开源,但是后面不怎么维护了。

4.2 F2M

http://net.pku.edu.cn/vc/papers/f2m.pdf

这篇发表在 NIPS 2016 。这篇文章主要是提出了基于 Ps 架构的 FFM 算法。

五、更高阶特征交叉

High-Order FM

Higher-Order Factorization Machines

https://arxiv.org/abs/1607.07195

这篇文章发表在 NIPS 2016 。传统意义上讲 FM 都是二阶交叉,计算复杂度可通过数学变换将时间复杂度改进到线性时间,在实际应用中一般也只用到二阶交叉。这篇文章解决了三阶甚至更高阶的特征交叉问题。

六、其他变种

6.1 Robust FM

Robust Factorization Machines for User Response Prediction

https://dl.acm.org/citation.cfm?id=3186148

这篇发表在 WWW 2018 。文章引入了 robust optimization 的思想,增加 和 分别在一次项和二次项的时候表示噪声。

6.2 Discrete FM

Discrete Factorization Machines for Fast Feature-based Recommendation

https://arxiv.org/abs/1805.02232

这篇发表在 IJCAI 2018 。这篇文章主要解决 FM 在一些特殊场景下模型容量和计算耗时偏大的问题。FM 中隐向量 ,每个元素是实数值,而在 Discrete FM 中,隐向量 。最终模型效果相对 FM 有下降,但是效率大大提升。

6.3 SFTRL FM

Sketched Follow-The-Regularized-Leader for Online Factorization Machine

https://www.kdd.org/kdd2018/accepted-papers/view/sketched-follow-the-regularized-leader-for-online-factorization-machine

这篇发表在 KDD 2018 。针对 FM 算法如何在线学习,提出了 Sketched Follow-The-Regularizer-Leader 的优化算法,并和 OGD、OCG 和 FTRL 算法进行了对比。

引自:https://zhuanlan.zhihu.com/p/52877868

FM及其变种(转载)相关推荐

  1. RDS的FM发射机FM Transmitter(转载)

    BD7BQ老弟一直是我的偶像,以前说过软硬一流--刚好最近他做了个RDS的FM发射电路,转过来给各位欣赏一下- 手痒,心痒,有空就整点东西玩玩. 一个偶然的机会,因为EBAY的原因,对RDS发生了兴趣 ...

  2. Android FM模块学习之一 FM启动流程

    转自:http://blog.csdn.net/tfslovexizi/article/details/41283743 最近在学习FM模块,FM是一个值得学习的模块,可以从上层看到底层.上层就是FM ...

  3. 挨踢脱口秀精选集汇总

    后端服务怎么做测试 http://www.lizhi.fm/200893/2643094188280038406 送给那些有代码基础仍学不好测试的朋友 http://www.lizhi.fm/2008 ...

  4. 国家集训队 小Z的袜子

    传送门 自从"HH的项链"被树状数组干爆了之后,莫队终于扬眉吐气了一把. 很经典的莫队模板题,好像没什么好说的-- 代码有(十)些(分)冗长,将就着看吧-- #include< ...

  5. web2.0网站的配色参考方案

    web2.0网站的配色参考方案 Shiny silver [#EEEEEE] Reddit white [#FFFFFF] Magnolia Mag.nolia [#F9F7ED] Interacti ...

  6. 互联网公司的岗位英文简写

    RD – Research & Develop 研发工程师 FE – Front End 前端工程师 BE – Back End 后端工程师 QA – Quality Assurance 测试 ...

  7. Web 2.0网站流行使用的颜色元素

    以下是三套目前Web 2.0网站流行试用的颜色元素: Neutrals Shiny silver [#EEEEEE] Reddit white [#FFFFFF] Magnolia Mag.nolia ...

  8. 推荐系统[二]:召回算法超详细讲解[召回模型演化过程、召回模型主流常见算法(DeepMF/TDM/Airbnb Embedding/Item2vec等)、召回路径简介、多路召回融合]

    搜索推荐系统专栏简介:搜索推荐全流程讲解(召回粗排精排重排混排).系统架构.常见问题.算法项目实战总结.技术细节以及项目实战(含码源) 专栏详细介绍:搜索推荐系统专栏简介:搜索推荐全流程讲解(召回粗排 ...

  9. 小强不一样的2015总结,不煽情不装逼,只是很直白而已

    PS:这个是看到大家转发的一篇文章,觉得很不错,所以在ta的基础上做了改动.如有雷同纯属巧合,但却是我最真实的表达 终于决定写一个不煽情.不装逼的总结了,或者说写一个直白的总结,不戴任何虚伪的面具. ...

最新文章

  1. 【青少年编程】【三级】 合作画画
  2. python之sys模块详解_(转)python之os,sys模块详解
  3. gps数据转坐标c语言,GPS原始坐标转百度地图坐标(纯C代码)
  4. Python集合和函数
  5. Netty工作笔记0031---NIO零拷贝应用案例
  6. 反装逼指南:掀起机器学习的神秘面纱
  7. Sklearn-RandomForest
  8. Java-HashMap实现原理
  9. python版本安装
  10. 如何在iPhone和Android上使用Instagram效果
  11. 思考: 现有 图像分割算法 的缺陷
  12. win系统连接交换机并设置固定ip地址
  13. java中public static void main(String args[])具体是什么意思?
  14. 破解win7开机密码
  15. angular8封装http服务
  16. linux加载和卸载驱动模块出现 'XXX': device or resource busy 错误提示
  17. ESlint语法检测工具
  18. 线性稳压电源和开关电源到底有什么区别
  19. 微信开发者模式php,PHP实现模拟微信公众号开发者模式
  20. 转载 解密蓝牙mesh系列 | 第七篇【低功耗蓝牙】【承载层(bearer layer)】【节点与特性】【代理节点(Proxy Node)】【蓝牙mesh代理服务】【发现代理节点】【代理协议】

热门文章

  1. java中的锁(一)(锁的介绍)
  2. 程序员编程艺术第一 十章集锦与总结 教你如何编程 持续更新中
  3. Windows Live Mail设置(存储,删除,保存)
  4. tf.identity的作用
  5. 经纬财富:自贡现货白银投资优点
  6. 华为名师揭秘编程界“网红”Python
  7. vxworks 系统学习
  8. mysql删除多表sql语句_Mysql删除多表及多表记录sql语句
  9. 开关电源环路学习笔记(4)-两种误差放大器的传递函数
  10. Java后端_List去重或转Set去重