交叉特徵的處理演算法學習理解(FM-xDeepFM)
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,
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