Python实现FM (附代码与数据)
网上有很多实现FM的代码,基本一样且没有注释,看着很难受,就重新写了一下。
借鉴的一篇博客地址为https://blog.csdn.net/john_xyz/article/details/78933253
一、FM原理及用途
FM一般用在CTR预估场景,出处为论文:《Factorization Machines》
FM主要目标是:解决数据稀疏的情况下,特征怎样组合的问题
根据paper的描述,FM有一下三个优点:
1. 可以在非常稀疏的数据中进行合理的参数估计
2. FM模型的时间复杂度是线性的
3. FM是一个通用模型,它可以用于任何特征为实值的情况
算法原理:
在一般的线性模型中,是各个特征独立考虑的,没有考虑到特征与特征之间的相互关系。但实际上,大量的特征之间是有关联的。模型为:
从上面的式子中看出,一般的线性模型没有考虑特征之间的关联。为了表述特征间的相关性,FM就是引入了特征之间的二阶交叉组合,如下:
FM模型与线性模型相比,多了特征组合的部分,特征组合部分的参数有个,n值特征的个数。如果特征非常稀疏且维度很高的话,时间复杂度将大大增加。为了计算方便,引入了辅助向量V表示每个特征,如,k实际上是一个超参数,决定了辅助向量对特征的表达能力,那么Wij可以看成Vi与Vj的内积,公式可重写为:
这个时候的计算复杂度为,为了再次简化,进行化简:
这个时候复杂度就为 。
FM的梯度
梯度这部分很重要,决定了怎么运算,公式难敲,再次借鉴一下博客:https://blog.csdn.net/jediael_lu/article/details/77772565#1fm
有了这个我们就可以用代码实现了。
二、在小数据集上的python实现
代码、数据的下载地址:https://pan.baidu.com/s/1TcCV55sgUbjmMVmipJUgSQ
代码基于一个小的分类数据集,用随机梯度下降实现的
如有问题,请指正,谢谢!
Python实现FM (附代码与数据)相关推荐
- 椒盐噪声及高斯噪声图片加噪python实现(附代码)
椒盐噪声及高斯噪声图片加噪python实现(附代码) 写在前面 这个博客会记录我最近学习的笔记,算是成长记录啦,如果有错误的地方还请指出,这也是学习的过程呀! 椒盐噪声 椒盐噪声又称为脉冲噪声,它是一 ...
- 曲率高斯滤波去噪python实现(附代码详解)
曲率高斯滤波去噪python实现(附代码详解) 曲率滤波的理论基础可以参考下曲率滤波的理论基础和应用,这篇博客介绍的思想完美的避开了一大堆数学公式,简直是我的福音,但还是要细看的,不然很容易忽略重点, ...
- python求因子代码_Python量化入门:饱受青睐的三因子模型「附代码及数据」
代码及数据见文章最后. 主要内容: 一.CAPM的不足与三因子模型的诞生 二.三因子模型的原理 三.Python三因子模型选股实战 一.CAPM的不足与三因子模型的诞生 CAPM模型经历了大量的实证和 ...
- Python实现带南海九段线分位数地图完整可视化版本(附代码及数据)
中国一点都不能少! 首先声明,数据示例中的中国行政区划的数据为简化版,仅能用于学习和练习,不能用于任何公开场合的出版.展示及其他应用.非法在公开场合使用,将会被追究法律责任. 先上一个最简单的实现方式 ...
- 【双足机器人(3)】3D线性倒立摆Python仿真(附代码)
往期 本文是双足机器人系列的第三篇,在前面的文章中我们介绍了2D线性倒立摆的基本理论,详见: [双足机器人(1)]线性倒立摆及其运动控制(附代码) 在这篇文章中我们要详细介绍3D线性倒立摆的基本内容, ...
- 完整的端到端的机器学习流程(附代码和数据)|比赛、工程都可以用!
近日在github上发现一个机器学习的完整流程,附代码非常全,几乎适合任何监督学习的分类问题,本文提供代码和数据下载. 作者:WillKoehrsen 翻译:DeqianBai(https://git ...
- 你见过的最全面的Python重点(附代码演示)
原文链接: https://segmentfault.com/a/1190000018737045 这是一份来自于 SegmentFault 上的开发者 @二十一 总结的 Python 重点.由于总结 ...
- 两天入门Python基础(附代码实现)
这是光城同学写的一篇python基础长文,对python的基础语法用了简单的例子进行讲解,非常适合初学者入门,初学者用两天时间看懂并实现代码后,可以对python有初步的理解,强烈建议初学者学习.(建 ...
- 独家总结 | 决策树算法Python实现(附代码详解及注释)
↑ 点击上方[计算机视觉联盟]关注我们 上一篇已经介绍过决策树基本原理机器学习经典算法决策树原理详解(简单易懂) 纸上得来终觉浅,仅仅懂了原理还不够,要用代码实践才是王道,今天小编就附上小编自己在学习 ...
最新文章
- KMP算法的详细解释及实现
- mysql 正则 java 区别_MySQL中的正则表达式
- ASP.NET内置对象的总结
- 【NLP-词向量】词向量的由来及本质
- 【软件测试】测试驱动开发
- [Cracking the Coding Interview] 4.1 Route Between Nodes 节点间的路径
- 人机交互,加速机器人拟人化
- 每周更新学习进度表--第九周
- LeetCode 540. 有序数组中的单一元素(Single Element in a Sorted Array) 42
- Myeclipse中JSP页面快捷键注释失效解决方法
- grid on在matlab功能,matlab中的grid on语句什么意思?如何使用,谢谢。
- 正则匹配手机号和座机号包括分机号
- python注释第一行_python第一行注释是什么意思?
- SAP MM ME57 把PR转成PO
- 【图像分割】基于形态学重建和过滤改进FCM算法(FRFCM)实现图像分割matlab代码
- 一文掌握项目甘特图的使用方法
- 【java多线程学习】多线程的基本概念
- k8s UAT改环境
- 网络嗅探 精华版(全)
- 锐龙R7 PRO 5875U性能怎么样?相当于什么水平级别
热门文章
- 北京地铁线路中心计算机系统,北京地铁DT—1型计算机联锁系统
- go语言实现订单管理系统
- Excel批量取消超链接
- 用yate2实现软VoIP语音通话(SIP协议)
- 电子计算机发明于1946年对不对,国家公务员测验考试常识题.doc
- β射线与哪些物质可产生较高的韧致辐射_辐射检测技术
- java从FTP(FileZilla Server)下载文件
- 年薪100万都是什么样人才啊?
- 巧解求索书局WIFI密码
- c语言ftest函数,阅读以下说明、c函数和问题,将解答写入答题纸的对应栏内。【说明1】函数testf - 信管网...