1. 程式人生 > 實用技巧 >交叉特徵的處理演算法學習理解(FM-xDeepFM)

交叉特徵的處理演算法學習理解(FM-xDeepFM)

FM演算法

公式:

$$y = w_0+\sum_{i=1}^nw_ix_i+\sum_{i=1}^n\sum_{j=i+1}^nw_{ij}x_ix_j$$

其中

\sum_{i=1}^n\sum_{j=i+1}^nw_{i,j}x_ix_j=\sum_{i=1}^n\sum_{j=i+1}^n<v_i,v_j>x_ix_j

W=VV^T

其中V =(v_1,v_2,...,v_n)

利用上三角矩陣=(對稱矩陣-對角矩陣)/2的思想,將其化簡為

\sum_{i=1}^n\sum_{j=i+1}^nw_{ij}x_ix_j=\frac12(\sum_{f=1}^k(\sum_{i=1}^nv_{i,f}x_i)^2-\sum_{i=1}^nv_{i,f}^2x_i^2)

再利用梯度下降法求出V,即得到每個特徵的隱含向量(能反映交叉資訊),同時訓練即可得到分類或迴歸模型。

注:V的維度為n \times kv_i的維度為1 \times kk為超參,表示向量維度。

FFM演算法

在FM的基礎上引入了類別(field)的概念,n個特徵(已one-hot編碼)屬於f個field。

y = w_0+\sum_{i=1}^nw_ix_i+\sum_{i=1}^n\sum_{j=i+1}^n<v_{i,f_j},v_{j,f_i}>x_ix_j

此時相對於FM中的v_{i(1 \times k)},FFM中的v_i維度為n \times kv_i中有f個向量是不相同的,同一fiield下的向量是相同的。

DeepFM演算法

對高階特徵組合進行建模

FM演算法中

y = w_0+\sum_{i=1}^nw_ix_i+\sum_{i=1}^n\sum_{j=i+1}^nw_{ij}x_ix_j =\sum_{i=1}^n\sum_{j=i+1}^n<v_i,v_j>x_ix_j

FM layer中的+的輸入為onehot編碼,x的輸入為詞向量v_i,ANN的輸入也是詞向量v_i

最後的\hat{y} = activation(y_{FM}+y_{DNN})

DCN演算法(Deep & cross network)

其中x_0是連續變數和分類變數embedding向量的組合向量

x_0=[x_{embed,1}^T,x_{embed,2}^T,...,x_{embed,k}^T,x_{dense}^T]^T

x_1=x_0x_0^Tw_{c,0}+b_{c,0}+x_0

x2=x_0x_1^Tw_{c,1}+b_{c,1}+x_1

通過不斷地疊加,實現了高階的交叉cross。

參考大佬文章:https://zhuanlan.zhihu.com/p/55234968

xDeepFM演算法

DCN中沒有考慮field概念,xDeepFM考慮了filed概念,核心是CIN的理解:

x^0中的m行表示有m個特徵(field),每個field的向量維度為D,x^0一開始是初始化的向量矩陣,由embedding vector組成。

後續再通過如下算式進行特徵的高階交叉:

X_{h,*}^k=\sum_{i=1}^{H_{k-1}}\sum_{j=1}^mW_{ij}^{k,h}(X_{i,*}^{k-1}\circ X_{j,*}^0)

首先理解X_{i,*}^{k-1}\circ X_{j,*}^0

x^k中有H_k個field,x^0

中有m個field,進行點乘的維度效果為:

(H_k \times 1)\times(1 \times m)=(H_k,m)

z1 = x1*y1;z2 = x2*y1,z3 = x3*y3;z4 = x1*y4

最後得到一個維度為(H_k,m,D)的矩陣,可以理解為有D個樣本(每個樣本是一個embedding維度),每個樣本有H_k個特徵和m個特徵的交叉,即有H_k\times m個值。

再理解W_{i=1}^{k.h}(X_{i,*}^{k-1}\circ X_{j,*}^0)

z_1 = \sum_{i=1}^3w_ix_i

其中向量(x_1,x_2,x_3)為權重向量,最後得到維度為(H_k,D)的矩陣x^{k+1},最後對每個filed的向量進行加總求和實現sum pooling。

在用程式碼實現過程中,可將維度為(H_k,m,D)的矩陣的矩陣進行壓縮,得到維度為(n_{samples},D,H_k\times m)的矩陣,然後用維度為(1,H_k\times m,n_{chanels})的filter進行conv1d的卷積操作,再進行sum_pooling操作。

參考大佬文章:https://zhuanlan.zhihu.com/p/57162373