このトピックでは、DeepFMアルゴリズムについて説明します。
概要
Deep Factorization Machine (DeepFM) は、ディープニューラルネットワーク (DNN) モデルと因数分解マシン (FM) モデルの強みを組み合わせたものです。 低次の明示的なフィーチャ相互作用と高次の暗黙的なフィーチャ相互作用の両方をキャプチャできるため、手動のフィーチャエンジニアリングが不要になります。 DeepFMは、推奨または広告システムでよく使用されます。
DeepFMモデルへの入力機能は、大きく2つのタイプに分類できます。
カテゴリ機能: 性別 (男性または女性) や商品カテゴリ (衣類、おもちゃ、電子機器など) などの文字列として表されます。
数値機能: ユーザーのアクティビティや商品価格など、整数または浮動小数点数で表されます。
多くの場合、0から1の間の浮動小数点数が返されます。これは、値が1である確率を示します。 それらは、ソートまたはバイナリ分類に使用できます。
シナリオ
ほとんどの場合、DeepFMは分類および並べ替えのシナリオで使用されます。特に、機能が手動で構築されているが結果を直接反映しないシナリオでは効果的です。 推奨シナリオでは、低次の特徴相互作用または高次の特徴相互作用が、ユーザの最終的な行動に影響を及ぼす。 ただし、フィーチャの相互作用を識別できない場合があります。 DeepFMは自動的にインタラクションをキャプチャできます。
例えば、多くの個人化商品推薦シナリオでは、クリック予測モデルを使用して、ユーザのクリック又は購入を予測する。 クリック予測モデルは、クリック、非クリック、および購入の記録を含む履歴ユーザ行動データに基づいて構築される。 ユーザーが将来のクリックや購入を直接示すことができない行動の実質的な履歴を持っている場合、DeepFMはユーザーの行動を効果的に統合し、疎な特徴を高次元の密な特徴に変換できます。
パラメーター
次の表に示すパラメーターの値は、モデルの作成に使用されるCREATE model
ステートメントで指定されたmodel_parameter
パラメーターの値と同じです。 ビジネス要件に基づいてパラメーターを設定できます。
パラメーター | 説明 |
メトリクス | モデルの評価に使用されるメトリック。 有効な値:
|
損失 | 学習タスクとタスクの学習目標。 有効な値:
|
オプティマイザ | オプティマイザ。 有効な値:
|
validation_split | 交差検証データの比率。 デフォルト値: 0.2 |
エポック | 反復回数。 デフォルト値: 6。 |
batch_size | バッチの長さ。 短いバッチは過剰にフィットする傾向があります。 デフォルト値: 64。 |
タスク | タスクの ID を設定します。 有効な値:
|
例
DeepFMモデルを作成します。
/*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');