DeepFM
由FM component和Deep component組成
- FM提取低階組合特徵,Deep提取高階組合特徵。不需要進行預訓練以及人工特徵工程。
- 共享feature embedding。FM和Deep共享輸入和feature embedding。不但使得訓練更快,而且使得訓練更加準確。
優點:
- 不需要預訓練FM得到隱向量
- 不需要人工特徵工程
- 能同時學習低階和高階的組合特徵
- FM模組和Deep模組共享feature embedding
資料
原始資料 = 種類特徵(eg. gender, location) + 連續特徵(eg. age) + label
- 種類特徵進行one-hot編碼
- 連續特徵可直接使用,或者先進行離散化在進行one-hot編碼
- 特徵按照field分組
綜上:原始資料-> (x, label)
x = [xfield1,xfield2,xfield3,…,xfieldm]
DeepFM結構圖:
計算公式:
y = sigmoid( yFM+ yDNN)
其中yFM為FM component的輸出,yDNN為DNN component的輸出。y∈{0,1} ,為CTR預測機率。
FM component
\hat{y} = sigmoid(y_{FM} + y_{DNN})
FM component包含了加法單元和內積單元。
加法單元:提取一階特徵,直接從原始特徵提取。
內積單元:原始特徵先進行embedding,然後由embedding後的輸出經過內積單元提取二階組合特徵。
最終維度:fieldsize + embedding_size
embedding_size對應的是:
\sum_{i = 1}^{d}\sum_{j=i+1}^{d} \left \langle V_{i},V^{j} \right \rangle x_{i} \cdot x_{j}
FM component總結:
- 實現了對一階和二階組合特徵的建模
- 沒有使用預訓練
- 沒有人工特徵工程
Deep component
用來提取高階組合特徵。
原始特徵首先經過embedding層降維後,然後經過多個全連線隱藏層輸出,即yDNN
DeepFM:一階特徵(FM)+二階特徵(FM)+高階特徵(DNN)
在DeepFM之前有其他幾個模型:
FNN與PNN的不足之處:
僅能提取高階組合特徵,低階組合特徵無法獲取。
Wide&Deep的不足之處:
在Wide部分還需要進行人工特徵工程。
本作品採用《CC 協議》,轉載必須註明作者和本文連結
文章!!首發於我的部落格Stray_Camel(^U^)ノ~YO。