FM初步理解&代码实现

本文深入探讨了FM(Factorization Machines)和FFM(Field-aware Factorization Machines)模型,重点在于它们的核心思想和区别。FM的核心是二阶特征组合,通过将W矩阵转换为VTV形式降低参数量。FFM则进一步考虑了特征之间的field关系,参数数量为fnk。文章还提及了FFM在处理稀疏数据和数值归一化方面的优势,并提供了模型的代码实现。
摘要由CSDN通过智能技术生成

0.Reference

美团FFM: https://tech.meituan.com/2016/03/03/deep-understanding-of-ffm-principles-and-practices.html
CMUpdf: http://www.cs.cmu.edu/~wcohen/10-605/2015-guest-lecture/FM.pdf
CSDN: http://www.52caml.com/head_first_ml/ml-chapter9-factorization-family/
知乎: https://zhuanlan.zhihu.com/p/37963267

1.FM理解

核心思想: 二阶特征组合
FM = LR + Wij<xi,xj> 对于特征xi,xj的组合
Wij只能被xi,xj非零项计算,而原始类别转为的ont-hot数据非常稀疏
如何有效计算Wij?
W矩阵 = VTV, W(nn大小)用V(nK计算)
转化为N
K的权重矩阵
1.W矩阵的参数量减少为nk个,原来是n(n-1)/2
2.推导化简:
转化线性求解问题
http://www.algo.uni-konstanz.de/members/rendle/pdf/Rendle2010FM.pdf
3.FM 和 二次多项式的SVM区别在哪里?
超参数k(隐向量长度),反映FM模型的表达力

2.FFM理解

核心:每一位特征和其他field关系都用一个隐向量表征
FM: 属于FFM的特殊情况,每一维特征都相当于一个field
e.g. 特征i,对于特征j的组合关系为:
特征i对于类别j的隐向量Vi,fj (dot点乘) 特征j对于类别i的隐向量Vj,fi
隐向量的参数矩阵可以理解为:
f个field,n维原始特征,隐向量的长度是k; 参数数量=fnk

note:
1.一个类别特征可能意味着500维的one-hot特征,非常稀疏
2.FFM输入可以省去值为0的特征index(其对于模型的训练不起作用)
3.将源特征归一化,主要使得数值特征归一化到(0,1)之间 (归一化方法??)

3.1 FM图片

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.2 FFM图片

在这里插入图片描述

4.代码实现

# demo0: https://www.jiqizhixin.com/articles/2018-07-16-17
# demo1:  https://realxuan.github.io/2018/10/18/FM(Factorization%20Machine)%E6%A8%A1%E5%9E%8B/  
# demo2: http://nowave.it/factorization-machines-with-tensorflow.html
class FM(Model):
    def __init__
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值