FM和FFM原理

FM和FFM原理模型用途FM和FFM,分解机,是近几年出的新模型,主要应用于广告点击率预估(CTR),在特征稀疏的情况下,尤其表现出优秀的性能和效果,也数次在kaggle上的数据挖掘比赛中拿到较好的名次。FM原理特征编码时常用的one-hot编码,会导致特征非常稀疏(很多0值)。常用的特征组合方法是多项式模型,模型表达式如下: y(x)=w0+∑i=1nwixi+∑i=1n∑j=i+1nwijxixjy(x)=w…

大家好,又见面了,我是你们的朋友全栈君。

模型用途

FM和FFM,分解机,是近几年出的新模型,主要应用于广告点击率预估(CTR),在特征稀疏的情况下,尤其表现出优秀的性能和效果,也数次在kaggle上的数据挖掘比赛中拿到较好的名次。

FM原理

特征编码时常用的one-hot编码,会导致特征非常稀疏(很多0值)。常用的特征组合方法是多项式模型,模型表达式如下: 

y(x)=w0+i=1nwixi+i=1nj=i+1nwijxixjy(x)=w0+∑i=1nwixi+∑i=1n∑j=i+1nwijxixj



其中
xixi
表示第i列特征,
nn
表示特征数,
w0,wi,wijw0,wi,wij
为模型参数。模型参数为
n2n2
个。在对模型进行训练时,采用SGD(随即梯度下降),由于特征较稀疏,大部分
wijwij
的梯度值为0,那么参数
wijwij
的值就不准确,会影响模型的效果。 


FM模型,将参数
wijwij
对应的矩阵
WW
,利用矩阵分解表示为
W=VTVW=VTV
, 矩阵
VV
Rk×n∈Rk×n
, 可以通过调节k来调节模型的泛化能力。 


k影响



FM模型则表示为: 

y(x)=w0+i=1nwixi+i=1nj=i+1n<vi,vj>xixjy(x)=w0+∑i=1nwixi+∑i=1n∑j=i+1n<vi,vj>xixj



模型参数减少为kn个。训练方法还是采用SGD,在预测时,可以通过下式将计算复杂度从
O(kn2)O(kn2)
降低为
O(kn)O(kn)
: 

i=1nj=i+1n<vi,vj>xixj=12f=1k((i=1nvi,fxi)2i=1n(vi,fxi)2)∑i=1n∑j=i+1n<vi,vj>xixj=12∑f=1k((∑i=1nvi,fxi)2−∑i=1n(vi,fxi)2)

FFM 原理

FFM模型是在FM特征组合的基础上给特征加上了field属性,于是模型表示为 

y(x)=w0+i=1nwixi+i=1nj=i+1n<vi,fj,vj,fi>xixjy(x)=w0+∑i=1nwixi+∑i=1n∑j=i+1n<vi,fj,vj,fi>xixj



其中
fifi
表示特征i所属的field,需要训练的
VV

n×k×fn×k×f
,
ff
为field的个数,具体案例见
ppt
 


由于FFM加入field,使得训练和预测过程参数计算不能简化,复杂度为
O(kn2)O(kn2)

参考文献

  1. http://tech.meituan.com/deep-understanding-of-ffm-principles-and-practices.html
  2. ffm源码git

转自:https://blog.csdn.net/Leo00000001/article/details/71330927?locationNum=13&fps=1

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/143838.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Oracle number类型的语法和用法

    Oracle number类型的语法和用法Oraclenumber类型的语法和用法2012-10-2910:37:08    我来说两句     作者:liwenshui322收藏  我要投稿Oraclenumber类型的语法和用法    number类型的语法很简单,就是:   number(p,s)   p,s都是可选的,假如都不填,p默认为38,s默认为-48~127。

    2022年7月24日
    25
  • 电脑显示已连接网络但是无internet访问

    电脑显示已连接网络但是无internet访问电脑显示已连接网络但是无internet访问自己电脑不知道出什么问题了,连接到无限网络但是无法访问,一开始以为是自己双系统的问题,然后自己在ubuntu那边是可以正常上网的。下面是自己的解决方法方法一:首先打开这个网络的状态,在属性这里,点击进入:打开这个ipv4进行配置,把所有的ip,dns都设置为自动获取地址:如果此时还没有用,在此基础上,再进一步进…

    2022年7月23日
    16
  • wda7332re 评测_TP-LINK(普联)AC2100无线扩展器TL-WDA7332RE说明书下载地址!tplink TL-WDA7332RE中继器PDF说明书!-家用路由网…

    wda7332re 评测_TP-LINK(普联)AC2100无线扩展器TL-WDA7332RE说明书下载地址!tplink TL-WDA7332RE中继器PDF说明书!-家用路由网…问:TP-LINK/普联双频AC2100M无线扩展器TL-WDA7332REV2的使用说明书下载地址是多少?请问从哪里可以下载到TP-LINK无线WiFi中继器TL-WDA7332RE的电子版PDF说明书?答:TP-LINKTL-WDA7332RE无线扩展器是一款双频2100M的无线扩展器,从2100M上就可以看出重点在于5G的传输速率比较大。正如TP-LINK官网介绍的一样:采用11AC双频…

    2022年7月12日
    29
  • PLSQL 基础教程 三 查询(SELECT)

    PLSQL 基础教程 三 查询(SELECT)本节教程将继续介绍SQL基础知识中的SELECT相关的一些知识,包括基础语法、多表连接、去重、排序、子查询等等SELECT方面的基础知识。SELECT是SQL中使用的比较多的,主要是用于筛选数据,获取满足某些条件的数据,既可以是单条数据,也可以是多条数据,还可以是统计数据或者分组数据等等,后续教程将会一一介绍。

    2022年5月22日
    39
  • IntelliJ IDEA 修改内存大小,使得idea运行更流畅。

    IntelliJ IDEA 修改内存大小,使得idea运行更流畅。IntelliJIDEA使用教程(总目录篇)idea有个配置文件,可以设置内存大小的,就跟咱的jvm的内存里面的堆大小,栈大小等等,可以设置的,而且设置了之后,你这个的性能就会得到提升。具体看下面怎么修改。先说所要修改的文件idea.vmoptions的位置,这个不同的平台,估计名称可能有些差别。mac的如下图具体怎么找到这个地方的,刚刚使用mac的估计不会,老手就会啦,…

    2025年7月24日
    3
  • 实用技巧:利用Excel实现客户档案的统一管理「建议收藏」

    实用技巧:利用Excel实现客户档案的统一管理「建议收藏」背景:一个朋友新开了家门市,生意不错,客源旺盛。有次我们喝茶时,他透露一个问题,就是客户的档案管理很不理想,都是纸面的,很容易丢失,也不方便查找。我自诩混迹IT界多年,当然要替好友解决这个小麻烦。考虑到他的门市规模和店员能力,什么ERP、CRM之类的还是免了吧,朋友的要求也很直接,就是俩字:简单。这样的话确实简单了,EXCEL就可以搞定,而且使用门槛相当于零!喝完茶,基本思…

    2025年8月6日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号