首页 技术 正文
技术 2022年11月15日
0 收藏 830 点赞 4,629 浏览 1013 个字

https://blog.csdn.net/zynash2/article/details/80029969

FM论文地址:https://www.csie.ntu.edu.tw/~b97053/paper/Rendle2010FM.pdf

工业界传统的LR,由于简单且可解释被广泛使用,但人工特征工程的繁琐操作也是阻碍模型真正效果的主要原因,各类的特征组合需要大量的人工挖掘实验。鉴于此,基于矩阵分解的FM模型被人熟知,它的目标就是解决在稀疏数据的条件下特征组合的问题。本文将详细分析下FM模型的原理。

首先给出FM的目标函数(这里的模型特指二阶的分解模型):

可能有读者会有问题,既然目的是为了组合二阶或者高阶的特征,那为什么模型不直接表达成如下的形式:

既直接学习二阶特征的参数。原因其实很简单,这其实也是分解机模型存在的原因。假设模型中第m维的特征和第n维的特征在样本中(one-hot之后)从未同时为1过,则很明显其交叉特征的参数值必然为0,也就失去了二阶特征的意义。为了克服这种现象,FM是采用了矩阵分解的方式来重新解释交叉特征的关系,如下图所示:

向量v就是每个特征对应的特征向量,其维数由自己确定,真正的二阶参数如公式,就是两个向量的点积。因此,FM也经常被用来作为降维或者是深度神经网络embedding的一种方式,例如FNN、DeepFM等DNN模型,都是采用了FM作为embedding的方式,具体可参考笔者之前的博客。v的值由模型训练本身产生,特征向量的点积就是两个特征的融合参数。为了简化计算(比如用tensorflow搭建FM网络),可以对二阶项做如下的计算:

FM-分解机模型详解

FM-分解机模型详解

综上所述,我们可以给出FM在使用sigmod激活,随机梯度下降优化(去掉求和),考虑L2正则且为二分类问题时的训练伪代码:

FM-分解机模型详解

FM理论上可以学习出n阶特征的关系,但由于2阶以上计算过于复杂,本文只针对二阶FM情况,事实上大部分工业级引用也是二阶为主。而FM也有进阶的模型,像FFM,就是针对field,简单说就是根据加上了slot的条件来做矩阵分解,因此二阶参数会比FM更多,稍显复杂,笔者有时间也会做相应的分析。

———————
作者:zynash2
来源:CSDN
原文:https://blog.csdn.net/zynash2/article/details/80029969
版权声明:本文为博主原创文章,转载请附上博文链接!

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,955
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,479
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,291
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,108
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,740
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,774