全部產品
Search
文件中心

PolarDB:DeepFM演算法

更新時間:Jul 06, 2024

本文介紹了DeepFM演算法相關內容。

簡介

DeepFM將深度學習模型(DNN)和因子分解機(FM)模型結合,同時支援學習低階顯式特徵組合和高階隱式特徵組合,不需要人工做特徵工程,常用於推薦系統或廣告系統。

  • 輸入通常有以下兩類特徵:

    • 類別特徵(Categorical Feature):字串類型。如性別(男/女)或物品類型(服飾、玩具、電子等)。

    • 數值特徵(Numrical Feature):整型或浮點型。如使用者活躍度或商品價格等。

  • 輸出通常是0~1之間的浮點數,表示取值為1的機率。可以用於排序,也可以用於二分類。

使用情境

DeepFM通常用於分類或排序情境。在人工構建的特徵但不能直接反映結果的情境上效果更好。在各種各樣的推薦情境中,低階特徵組合或者高階的特徵組合都會對使用者最終的行為產生影響。但人為可能無法明確特徵組合,DeepFM可以自動學習這些組合。

例如:在個人化商品推薦情境中,通常需要做點擊預估模型。使用使用者過往的行為(點擊、曝光未點擊、購買等)作為訓練資料,來預測使用者點擊或購買的機率。如果使用者過往行為較多,且不能直接反映出在未來某時刻的點擊或購買情況。DeepFM會對使用者行為進行組合,同時將一些稀疏特徵轉化為高維的稠密特徵。

參數說明

下表中的參數為建立模型CREATE MODEL文法中model_parameter參數的取值,您可以根據當前需求選擇對應的參數。

參數

說明

metrics

評估模型的指標參數。取值如下:

  • accuracy(預設):精確度,用於評估分類模型。

  • binary_crossentropy:交叉熵,用於評估二分類問題。

  • mse:均方誤差,用於評估迴歸模型。

loss

學習任務及對應的學習目標。取值如下:

  • binary_crossentropy(預設):交叉熵,用於二分類問題。

  • mean_squared_error:均方誤差,用於迴歸模型。

optimizer

最佳化器。取值如下:

  • adam(預設):吸收了AdaGrad(適應性學習率的梯度下降演算法)和動量梯度下降演算法的優點,既能適應稀疏梯度(即自然語言和電腦視覺問題),又能緩解梯度震蕩的問題。

  • sgd:隨機梯度下降。

  • rmsprop:對AdaGrad演算法進行改進,引入了權重參數,其對應的步長分量累計修改為加權和。

validation_split

交叉驗證資料比例。預設值為0.2。

epochs

迭代次數。預設6次。

batch_size

batch長度,batch越短越容易過擬合。預設64。

task

任務類型。取值如下:

  • binary(預設):分類模型。

  • regression:迴歸模型。

樣本

建立模型與離線訓練

/*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');