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)
上一篇 2022年5月20日 下午7:00
下一篇 2022年5月20日 下午7:00


相关推荐

  • Legacy和UEFI,MBR和GPT的区别

    Legacy和UEFI,MBR和GPT的区别Legacy 和 UEFI 指的是系统引导方式 Legacy 为传统 BIOS UEFI 为新式 BIOS MBR 和 GPT 指的是磁盘分区表类型 一般情况下都是 Legacy MBR UEFI GPT 这两种组合 但 Legacy GPT UEFI MBR 也可以实现 Legacy 用的是 8086 汇编 UEFI99 以上用 C UEFI 的 APP 和 Drives 可以用 C C 64 位的 UEFI 固件是 64 位的操作

    2026年3月18日
    2
  • java graphics2d 绘图_Java编程 Graphics2D类的绘图方法

    java graphics2d 绘图_Java编程 Graphics2D类的绘图方法现在都讲究立体的效果 Graphics2D 类的绘图方式就属于高级绘图了 在我们日常生活中经常提到的 2d 3d 电影都是立体的 而编程语言也是一样 可以实现 2d 的效果哦 下面就让我们一起来学习下吧 Java 语言在 Graphics 类提供绘制各种基本的几何图形的基础上 扩展 Graphics 类提供一个 Graphics2D 类 它拥用更强大的二维图形处理能力 提供 坐标转换 颜色管理以及文字布局等更精确的控制

    2025年7月8日
    4
  • pycharm鼠标滚动控制字体大小_pycharm窗口放大

    pycharm鼠标滚动控制字体大小_pycharm窗口放大1、放大页面方法第一步:打开file里面的setting,然后打开Keymap,再搜索框中输入increase,点击increaseFontSize,双击AddMouseShortcut(先不用点OK)第二步:点击AddMouseShortcut弹出下面对话框,然后按住ctrl并向上滚动鼠标滑轮,将变成第二个对话框,点击OK;第三步:显示下面页面表示设置放大成功,点击OK即可。2、缩小页面方法与上面方法类似,将increase变成decrease输入即可;…

    2022年8月26日
    7
  • Ink笔记_ink correction

    Ink笔记_ink correction最近想要复刻一下稚晖君的小卡片,因此来学习一下。1.ST25DV作为NFC的PHY通过I2C总线和STM32通信,主要作用有两个:能量采集以及NFC通信。注意,ST25DV只是负责和手机进行NFC通信,而不负责IC卡的读写功能,因为ST25DV只支持ISO15693的RFID协议,而我们常用的IC卡(M1卡)是ISO14443协议的,所以并不能直接使用这颗芯片进行IC卡模拟。2.IC卡的模拟功能这一版中实现得比较简单,就是直接集成了多颗UID芯片(很便宜,1~2元一片),然后和ST25DV共用N

    2025年6月23日
    3
  • goland的破解激活码都提示非法破解方法「建议收藏」

    goland的破解激活码都提示非法破解方法,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月15日
    67
  • iPhone 开启 AI 功能,Siri 完美接入 Deepseek

    iPhone 开启 AI 功能,Siri 完美接入 Deepseek

    2026年3月16日
    1

发表回复

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

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