1.FM
参考:https://blog.csdn.net/anshuai_aw1/article/details/83747171
FM旨在解决大规模稀疏数据下的特征组合问题。
特征ETL过程中,需要对categorical型特征进行one-hot编码(独热编码),即将categorical型特征转化为数值型特征。
由one-hot编码带来的数据稀疏性会导致特征空间变大。
一维categorical特征在经过one-hot编码后变成了10维数值型特征。真实应用场景中,未编码前特征总维度可能仅有数十维或者到数百维的categorical型特征,经过one-hot编码后,达到数千万、数亿甚至更高维度的数值特征在业内都是常有的。
此外,特征空间增长的维度取决于categorical型特征的取值个数。
在学习过程中考虑特征之间的关联信息
降低了交叉项参数学习不充分的影响
提升了模型预估能力
提升了参数学习效率
https://github.com/coreylynch/pyFM
2.DeepFM
Kaggle 价格推荐
https://github.com/ChenglongChen/tensorflow-XNN
用到的论文:
《Embed, encode, attend, predict: The new deep learning formula for state-of-the-art NLP models》:https://explosion.ai/blog/deep-learning-formula-nlp
司机驾驶车辆可能赔保预测
代码:https://github.com/chenglongchen/tensorflow-deepfm
报错:安装Yellowfin报错——No such file or directory: ‘/tmp/pip-build-jykvuD/YellowFin/README.md’
参考https://www.cnblogs.com/Rvin/p/11058323.html:https://github.com/JianGoForIt/YellowFin下载代码,得到压缩包。将下载的压缩包解压后,取出tuner_utils文件夹下的三个文件。将这三个文件放入到与导入yellowfine的文件相同的目录下,此时不用安装yellowfine就可以直接使用。DeepFM中调用了yellowfin的YFOptimizer方法。
论文《DeepFM:A Factorization-Machine based Neural Network for CTR Prediction》
推导一个强调高阶和低阶特征交互的端对端学习模型
在一些例子中,maximize点击率,则CTR,另一些例子中,例如在线广告,目的是盈利,需要CTR x bid,其中bid是用户点击相应的广告,平台可以获得的利益
在CTR预测中,找到用户行为之间隐形的特征交互(interactions)非常重要,例如app种类和时间、app种类和用户的年龄、性别
大多数的特征交互隐藏在数据中,并且很难人工建模,特别是特征数量很大时,但机器学习可以自动解决。
wide&deep网络中wide和deep两部分输入不同,且wide部分依赖专门的特征工程(engineering)。
在DeepFM中,结合律FM处理low-order 特征交互和DNN处理high-order 特征交互的优势,不需要任何特征工程;wide和deep共享输入和embedding vector。
FM:
黑线:weight to learn
红箭头:权重为1
蓝箭头:嵌入,学习隐藏向量(latent vector)
黄蓝圆圈:0,1;one-hot编码
Deep:
特征输入向量是高度稀疏、超高维数、分类-连续混合、并分组在字段中
在向第一层隐藏层传入数据之前,嵌入层将输入向量压缩成低维密度实值向量,避免网络过载
虽然不同输入字段向量的长度可以不同,但它们的嵌入大小相同(k);
将FM中的潜在特征向量(V)作为网络权值进行学习并将输入场向量压缩为嵌入向量。
不再预训练FM,而是端对端联合训练整个网络