FM算法
公式:
其中
其中
利用上三角矩陣=(對稱矩陣-對角矩陣)/2的思想,将其化簡為
再利用梯度下降法求出V,即得到每個特征的隐含向量(能反映交叉資訊),同時訓練即可得到分類或回歸模型。
注:V的次元為
,
的次元為
,
為超參,表示向量次元。
FFM算法
在FM的基礎上引入了類别(field)的概念,n個特征(已one-hot編碼)屬于f個field。
此時相對于FM中的
,FFM中的
次元為
,
中有f個向量是不相同的,同一fiield下的向量是相同的。
DeepFM算法
對高階特征組合進行模組化
FM算法中
FM layer中的+的輸入為onehot編碼,x的輸入為詞向量
,ANN的輸入也是詞向量
。
最後的
DCN算法(Deep & cross network)
其中
是連續變量和分類變量embedding向量的組合向量
通過不斷地疊加,實作了高階的交叉cross。
參考大佬文章:https://zhuanlan.zhihu.com/p/55234968
xDeepFM算法
DCN中沒有考慮field概念,xDeepFM考慮了filed概念,核心是CIN的了解:
中的m行表示有m個特征(field),每個field的向量次元為D,
一開始是初始化的向量矩陣,由embedding vector組成。
後續再通過如下算式進行特征的高階交叉:
首先了解
:
中有
個field,
中有m個field,進行點乘的次元效果為:
z1 = x1*y1;z2 = x2*y1,z3 = x3*y3;z4 = x1*y4
最後得到一個次元為
的矩陣,可以了解為有D個樣本(每個樣本是一個embedding次元),每個樣本有
個特征和m個特征的交叉,即有
個值。
再了解
:
其中向量
為權重向量,最後得到次元為
的矩陣
,最後對每個filed的向量進行加總求和實作sum pooling。
在用代碼實作過程中,可将次元為
的矩陣的矩陣進行壓縮,得到次元為
的矩陣,然後用次元為
的filter進行conv1d的卷積操作,再進行sum_pooling操作。
參考大佬文章:https://zhuanlan.zhihu.com/p/57162373