1. FM算法

  FM(Factor Machine,因子分解机)算法是一种基于矩阵分解的机器学习算法,为了解决大规模稀疏数据中的特征组合问题。FM算法是推荐领域被验证效果较好的推荐算法之一,在电商、广告、直播等推荐领域有广泛应用。

2. FM算法优势

  特征组合:通过对两两特征组合,引入交叉项特征。

  解决维数灾难:通过引入隐向量,实现对特征的参数估计。

3. FM表达式

  对于度为2的因子分解机FM的模型为:

其中,参数。 aaarticlea/gif;base64,R0lGODlhMAAUALMAAP///wAAAHZ2du7u7kRERIiIiKqqqjIyMszMzGZmZpiYmNzc3FRUVLq6uhAQECIiIiH5BAEAAAAALAAAAAAwABQAAATdEEghq704a0vvIFsobsxyFcaork1XHWs8whWSyLhWNFWC5EDLgPGyNBQ3wMBhUh2Ty2aGMAAYFJUB1vEDHHgjLYAr+W6uAGqFtwhUCk2DC8N2S+CWxwVE4xAlWBJVIgJ/AIEVUmUAAl0VDymAMpAViBkLRAtJFQGDCE0FhhudEp+VjRxdIBakh5IPg5iDrIOIBgNyFn0KkRIGCQqWC30IDpa+wJZVCb0NBVmrIQLHvSoHUgyzACUisJbVIw7QFy2EeHfaIgjRKBh9K+AiBc+LGIpBGhTXifhABLwbIgAAOw==" alt="" />表示的是两个大小为aaarticlea/gif;base64,R0lGODlhCQANALMAAP///wAAAHZ2du7u7szMzDIyMhAQEKqqqlRUVJiYmNzc3Lq6ukRERIiIiCIiIgAAACH5BAEAAAAALAAAAAAJAA0AAAQyEEgxpCXF2H3QtkjySYYyKhpwJB7AusOSMs0xBsVRXRpRWo2Ww7YAFEQAByGW3CUEyAgAOw==" alt="" />的向量aaarticlea/gif;base64,R0lGODlhDQALALMAAP///wAAALq6upiYmGZmZu7u7hAQENzc3MzMzDIyMoiIiHZ2dlRUVCIiIqqqqgAAACH5BAEAAAAALAAAAAANAAsAAAQ6EIhBACjmWFsGMIiVCJsEHMGmaICzWAuzedzWOHO5BYWFsAqZhWeheRq9FmFAsxwSuuiiGbUgqdJVBAA7" alt="" />和向量aaarticlea/gif;base64,R0lGODlhDwAOALMAAP///wAAALq6upiYmGZmZu7u7hAQENzc3MzMzDIyMoiIiHZ2dlRUVCIiIqqqqkRERCH5BAEAAAAALAAAAAAPAA4AAARLEIhBACjm2H0HMIiVCJxFHsGmaFuzLczmcSzQOHLJBYWF1INFyMKzzACOgmOxcRAGxwuAgNPpEjXrxqAtIR5djkIRBjCx5cegCogAADs=" alt="" />的点积:

其中,aaarticlea/gif;base64,R0lGODlhDQALALMAAP///wAAALq6upiYmGZmZu7u7hAQENzc3MzMzDIyMoiIiHZ2dlRUVCIiIqqqqgAAACH5BAEAAAAALAAAAAANAAsAAAQ6EIhBACjmWFsGMIiVCJsEHMGmaICzWAuzedzWOHO5BYWFsAqZhWeheRq9FmFAsxwSuuiiGbUgqdJVBAA7" alt="" />表示的是系数矩阵aaarticlea/gif;base64,R0lGODlhDgAMALMAAP///wAAAHZ2dhAQEGZmZszMzJiYmDIyMqqqqoiIiO7u7rq6ulRUVAAAAAAAAAAAACH5BAEAAAAALAAAAAAOAAwAAAQ7EIgRSAEYmHAQTkGWKYSIBIoIJGoRXNkCj4GHKawKBEKW6wcGRqbDMA4AXBEzkSwxG8OsuAj8lgrkMgIAOw==" alt="" />的第aaarticlea/gif;base64,R0lGODlhBgANALMAAP///wAAAKqqqhAQEO7u7tzc3Lq6upiYmGZmZszMzHZ2diIiIoiIiAAAAAAAAAAAACH5BAEAAAAALAAAAAAGAA0AAAQiEMg5xaCk0L3NQRJxAEMCGEARUAo4ldVySooCMFKCHAQQAQA7" alt="" />维向量,且aaarticlea/gif;base64,R0lGODlh5gAWALMAAP///wAAALq6upiYmGZmZu7u7hAQENzc3MzMzDIyMoiIiHZ2dlRUVCIiIqqqqkRERCH5BAEAAAAALAAAAADmABYAAAT+EMhJq7046827/2AojmRpnmiqrmw7IoILFoNs3+FQ4LLg8BsCcEicFISfxa548TErCsRzahMoOoiEQbZoBKSSAiPw+FGcVEAizWatOw6GTdGQU5CAI4HweOwJB0wDNW2FJwpmGwyEHAcLfX1XGgMKAUt5iWeZTA+Bhp8vdhsGnhsDD2AdAgcFAZIADpeaFQIDSAWkMltntmG5J7W3v2zBvqUguxoHuw4DorR4HpIEya+0mTQABmAJMS7JeTXbEt0n2eNq3mnn3OogARzOADoC4BRvIJIIAd7WsxMxDsCToMCTgwUXCDBYyLAhQgsHGpwBIHBCQQkHIT7YEHAggIv+sB5OcKBgQbQWHS0aFBnmgT8JDWRdcLkJIssO2chtPOCugkwAC0Qx+lkiooWgE4ZaGNClA1IJSikUkMTgZoun84xcYNATJlEKARLE0iCgAaSzLwGWchDgACMPDRK9XYHLQtykG4xyuAs1g4A3A/DJ4JtVg8QL9iwg2LL4WIUDJ+NVMLAgrQZLEhB4UvDsTsPPVTEkxgxAM8HOEvRuIG36I2pPJnGw3vx6zUF3iaHYuduVXI4KCwxYzkCaUI2YKzpVKN4X+ePDqRn8ZJ7VuV1PB6Q/1k6Re/Yl3y1QPy7TAQEdUSYgEBX+HqEGCAr0Lo06A4K5reZnMD+IwgHBKPTcRwF/b/13gWqlGTAXLOcVCOAEXKmnYAWLgVFhZugstiCB/j1ITU2ISDiXc0wtOGAZjllATQNzRUbCAiaWUMBGHMB4IHQjeWCjBekdUxMIP16wIwUxVVbBg0F+QAMfkVARU4wvppLBkwAIcAmCGMGVjZUYxXKANUnCoWUNXBYg0UGt1WJBmKA4BdIKLgJ3kUsSCECAK6Uo8NVRc14hUACAiqRnCYO6GQidCAhxBCFH8Lhnm2zk5EGYbO6nQaWXkpCkDmtC6qkIBWAaQqiekvrpqTKIGoKqRbCK6gYRAAA7" alt="" />称为超参数。在因子分解机FM模型中,前面两部分是传统的线性模型,最后一部分将两个互异特征分量之间的交叉关系考虑进来。

  因子分解机也可以推广到高阶的形式,即将更多互异特征分量之间的相互关系考虑进来。

4. 交叉项

    

  算法核心为交叉项计算,可以明显降低模型时间复杂度,现在模型的复杂度为

5. 求解问题

  FM算法主要可以处理三类问题:回归问题、二分类问题、排序。

  5.1 回归问题

    在回归问题中,直接使用aaarticlea/gif;base64,R0lGODlhDAASALMAAP///wAAALq6uqqqqtzc3ERERDIyMszMzO7u7nZ2dlRUVGZmZoiIiJiYmBAQECIiIiH5BAEAAAAALAAAAAAMABIAAARREEgpxryAFLPPRYniZcuCSAyBAQhzrnA8HcMyDcqENIAzKomJIBOYOIaXkORQxDwsAIZhFXgVgpgqEXlpJLzaGKOwOkoeXAnCBkiwMQ0vbxUBADs=" alt="" />作为最终的预测结果。在回归问题中使用最小均方误差作为优化标准,即

    

其中,aaarticlea/gif;base64,R0lGODlhEAAIALMAAP///wAAAJiYmIiIiO7u7lRUVLq6uszMzNzc3KqqqiIiIkRERHZ2dmZmZhAQEDIyMiH5BAEAAAAALAAAAAAQAAgAAAQ/EIgxiBDFWHwAIAYSCF6ikNLiGYDpScrLFC/QMG+BewvqOaxfkBBAvETHwEvwAASZS5WnMQBUAQxf9nVgVAARADs=" alt="" />表示样本的个数。

  5.2 二分类问题

    在二分类问题中使用Logitloss作为优化标准,即

其中,aaarticlea/gif;base64,R0lGODlhCwAIALMAAP///wAAAJiYmCIiIhAQEFRUVGZmZu7u7kRERHZ2drq6ujIyMszMzKqqqtzc3AAAACH5BAEAAAAALAAAAAALAAgAAAQoEEgxgg1EgmLOQYkGCIimLCLBaE0pOZlmhNKZHuKgFY0IMAlBYiWKAAA7" alt="" />表示的是阶跃函数Sigmoid,其数学表达式为:

6. FM&SVM

  SVM的二元特征交叉参数是独立的,而FM的二元特征交叉参数是两个维的向量,交叉参数并不独立,两者相互影响。

  FM可以在原始形式下进行优化学习,而基于核的非线性SVM通常需要在对偶形式下优化学习。

  FM的模型预测与训练样本独立,而SVM则与训练样本有关(支持向量)。

7. 交叉项核心代码

 v = normalvariate(0, 0.2) * ones((n, k))    #初始化隐向量
inter_1 = dataMatrix[x] * v
inter_2 = multiply(dataMatrix[x], dataMatrix[x]) * multiply(v, v) #multiply对应元素相乘
interaction = sum(multiply(inter_1, inter_1) - inter_2) / 2. #完成交叉项
p = w_0 + dataMatrix[x] * w + interaction #计算预测的输出

Time : 2019-10-14 09:39:44

CTR@因子分解机(FM)的更多相关文章

  1. 因子分解机 FM

    特征组合 人工方式的特征工程,通常有两个问题: 特征爆炸 大量重要的特征组合都隐藏在数据中,无法被专家识别和设计 针对上述两个问题,广度模型和深度模型提供了不同的解决思路. 广度模型包括FM/FFM等 ...

  2. 推荐算法之因子分解机(FM)

    在这篇文章我们将介绍因式分解机模型(FM),为行文方便后文均以FM表示.FM模型结合了支持向量机与因子分解模型的优点,并且能够用了回归.二分类以及排序任务,速度快,是推荐算法中召回与排序的利器.FM算 ...

  3. Factorization Machine因子分解机

    隐因子分解机Factorization Machine[http://www. w2bc. com/article/113916] https://my.oschina.net/keyven/blog ...

  4. 万字长文,详解推荐系统领域经典模型FM因子分解机

    在上一篇文章当中我们剖析了Facebook的著名论文GBDT+LR,虽然这篇paper在业内广受好评,但是毕竟GBDT已经是有些老旧的模型了.今天我们要介绍一个业内使用得更多的模型,它诞生于2010年 ...

  5. FM解析(因子分解机,2010)

    推荐参考:(知乎) https://zhuanlan.zhihu.com/p/37963267 要点理解: 1.fm应用场景,为什么提出了fm(和lr的不同点) ctr预测,特征组合,fm的隐向量分解 ...

  6. fm 讲解加代码

    转自: 博客 http://blog.csdn.net/google19890102/article/details/45532745/ github https://github.com/zhaoz ...

  7. 聊聊推荐系统,FM模型效果好在哪里?

    本文始发于公众号:Coder梁 大家好,我们今天继续来聊聊推荐系统. 在上一回当中我们讨论了LR模型对于推荐系统的应用,以及它为什么适合推荐系统,并且对它的优点以及缺点进行了分析.最后我们得出了结论, ...

  8. Factorization Machine算法

    参考: http://stackbox.cn/2018-12-factorization-machine/ https://baijiahao.baidu.com/s?id=1641085157432 ...

  9. 3.1、Factorization Machine模型

    Factorization Machine模型 在Logistics Regression算法的模型中使用的是特征的线性组合,最终得到的分隔超平面属于线性模型,其只能处理线性可分的二分类问题,现实生活 ...

随机推荐

  1. 跟文档学习next.js

    前言:Next.js 是一个轻量级的 React 服务端渲染应用框架. Next.js中文点击这里 Next.js中文站Github点击这里 新建文件夹安装它: npm install --save ...

  2. Salesforce Admin篇(四) Security 之Two-Factor Authentication & Single Sign On

    本篇参考: https://c1.sfdcstatic.com/content/dam/web/en_us/www/documents/white-papers/2fa-admin-rollout-g ...

  3. 详解PHP魔术函数、魔术常量、预定义常量

    一.魔术函数(13个) 1.__construct() 实例化对象时被调用, 当__construct和以类名为函数名的函数同时存在时,__construct将被调用,另一个不被调用. 2.__des ...

  4. MQTT介绍与使用

    物联网是新一代信息技术的重要组成部分,也是“信息化”时代的重要发展阶段.其英文名称是:“Internet of things(IoT)”.顾名思义,物联网就是物物相连的互联网.这有两层意思:其一,物联 ...

  5. 数据存储检索之B+树和LSM-Tree

    作为一名应用系统开发人员,为什么要关注数据内部的存储和检索呢?首先,你不太可能从头开始实现一套自己的存储引擎,往往需要从众多现有的存储引擎中选择一个适合自己应用的存储引擎.因此,为了针对你特定的工作负 ...

  6. Python3实用编程技巧进阶 ☝☝☝

    Python3实用编程技巧进阶  ☝☝☝ 1.1.如何在列表中根据条件筛选数据 # 1.1.如何在列表中根据条件筛选数据 data = [-1, 2, 3, -4, 5] #筛选出data列表中大于等 ...

  7. lua多线程解决方案

    直观的讲:lua并不支持多线程,lua语言本身具有携程功能,但携程仅仅是一种中继器. lua多线程的目的:有并发需求时,共享一些数据. 例如使用lua写一个并发服务器.用户登陆之后,用户数据储存在lu ...

  8. 微信小程序学习总结

    微信小程序开发环境安装以及相关设置配置 微信小程序前端页面书写 微信小程序前端样式WXSS书写 微信小程序中事件 微信小程序自定义组件 微信小程序发起请求 微信小程序登入流程 微信小程序路由跳转 微信 ...

  9. Fiddle弱网测试

    1.打开Fiddler,Rules->Performance->勾选 Simulate Modem Speeds,勾选之后访问网站会发现网络慢了很多: 接下来给大家解释一下这些个都是什么意 ...

  10. 渗透-svn源代码泄露漏洞综合利用

    SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS.CVS,它采用了分支管理系统,它的设计目标就是取代CVS.互联网上很多版本控制服务已从CVS迁移到Subversion ...