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. 异步Promise及Async/Await最完整入门攻略

    一.为什么有Async/Await? 我们都知道已经有了Promise的解决方案了,为什么还要ES7提出新的Async/Await标准呢? 答案其实也显而易见:Promise虽然跳出了异步嵌套的怪圈, ...

  2. Lxde添加触摸板双击功能、防误触

    前言 本文链接:https://www.cnblogs.com/hellxz/p/linux_touchpad_settings.html 这时简单记录一下最近两天折腾Lxde的触摸板功能的设置,留待 ...

  3. Terminal MultipleXer---终端复用器tmux基本使用

    Terminal MultipleXer---终端复用器tmux 使用场景:1.scp大文件 2:编译大文件 3:多窗口对比文件 1.安装tmux [root@localhost ~]# yum in ...

  4. 品Spring:对@PostConstruct和@PreDestroy注解的处理方法

    在bean的实例化过程中,也会用到一系列的相关注解. 如@PostConstruct和@PreDestroy用来标记初始化和销毁方法. 平常更多的是侧重于应用,很少会有人去了解它背后发生的事情. 今天 ...

  5. wdcp 开启某个Mysql数据库远程访问

    wdcp 开启某个Mysql数据库远程访问 登录wdcp后台-Mysql管理-phpmyadmin 输入Mysql的root密码登录进入 示例代码: update mysql.user set hos ...

  6. 编程小技巧之 Linux 文本处理命令

    合格的程序员都善于使用工具,正所谓君子性非异也,善假于物也.合理的利用 Linux 的命令行工具,可以提高我们的工作效率. 本文简单的介绍三个能使用 Linux 文本处理命令的场景,给大家开阔一下思路 ...

  7. 【CV现状-3.3】特征提取与描述

    #磨染的初心--计算机视觉的现状 [这一系列文章是关于计算机视觉的反思,希望能引起一些人的共鸣.可以随意传播,随意喷.所涉及的内容过多,将按如下内容划分章节.已经完成的会逐渐加上链接.] 缘起 三维感 ...

  8. Hadoop-2.7.3-本地模式安装-wordcount例子

    准备虚拟机:linux-rhel-7.4-server,由于不使用虚拟机进行联网,所以选择host-only网络模式.此处,需要再VitralBox的管理菜单中的主机网络管理器新建一个虚拟网卡.安装完 ...

  9. OSX 10.14.2 安装Cocoapods 出现问题的解决方法

    今天尝试用 Cocoapods安装个第三方库.. 输入pod install, 发现 command not find. WTF! 估计是升级10.11后Cocoapods被干掉了. 我输入 sudo ...

  10. 使用物理机安装Linux

    现在Linux用的越来越多.之前的使用,要么是云服务器自带的centos 系统环境,只要购买了服务器就可以选择自己想要的系统环境.要么是在Windows中安装虚拟机.    今天,我正式使用公司里闲置 ...