本文介紹了DeepFM演算法相關內容。
簡介
DeepFM將深度學習模型(DNN)和因子分解機(FM)模型結合,同時支援學習低階顯式特徵組合和高階隱式特徵組合,不需要人工做特徵工程,常用於推薦系統或廣告系統。
輸入通常有以下兩類特徵:
類別特徵(Categorical Feature):字串類型。如性別(男/女)或物品類型(服飾、玩具、電子等)。
數值特徵(Numrical Feature):整型或浮點型。如使用者活躍度或商品價格等。
輸出通常是0~1之間的浮點數,表示取值為1的機率。可以用於排序,也可以用於二分類。
使用情境
DeepFM通常用於分類或排序情境。在人工構建的特徵但不能直接反映結果的情境上效果更好。在各種各樣的推薦情境中,低階特徵組合或者高階的特徵組合都會對使用者最終的行為產生影響。但人為可能無法明確特徵組合,DeepFM可以自動學習這些組合。
例如:在個人化商品推薦情境中,通常需要做點擊預估模型。使用使用者過往的行為(點擊、曝光未點擊、購買等)作為訓練資料,來預測使用者點擊或購買的機率。如果使用者過往行為較多,且不能直接反映出在未來某時刻的點擊或購買情況。DeepFM會對使用者行為進行組合,同時將一些稀疏特徵轉化為高維的稠密特徵。
參數說明
下表中的參數為建立模型CREATE MODEL
文法中model_parameter
參數的取值,您可以根據當前需求選擇對應的參數。
參數 | 說明 |
metrics | 評估模型的指標參數。取值如下:
|
loss | 學習任務及對應的學習目標。取值如下:
|
optimizer | 最佳化器。取值如下:
|
validation_split | 交叉驗證資料比例。預設值為0.2。 |
epochs | 迭代次數。預設6次。 |
batch_size | batch長度,batch越短越容易過擬合。預設64。 |
task | 任務類型。取值如下:
|
樣本
建立模型與離線訓練
/*polar4ai*/CREATE MODEL airline_deepfm WITH
(model_class = 'deepfm',
x_cols = 'Airline,Flight,AirportFrom,AirportTo,DayOfWeek,Time,Length',
y_cols='Delay',model_parameter=(epochs=6))
AS (SELECT * FROM db4ai.airlines);
模型評估
/*polar4ai*/SELECT Airline FROM EVALUATE(MODEL airline_deepfm,
SELECT * FROM db4ai.airlines LIMIT 20) WITH
(x_cols = 'Airline,Flight,AirportFrom,AirportTo,DayOfWeek,Time,Length',y_cols='Delay',metrics='acc');
模型預測
/*polar4ai*/SELECT Airline FROM PREDICT(MODEL airline_deepfm,
SELECT * FROM db4ai.airlines limit 20) WITH
(x_cols = 'Airline,Flight,AirportFrom,AirportTo,DayOfWeek,Time,Length');