次の方法で共有


FieldAwareFactorizationMachineTrainer クラス

定義

IEstimator<TTransformer>確率的勾配法を使用してトレーニングされたフィールド対応因子化マシン モデルを使用してターゲットを予測する。

public sealed class FieldAwareFactorizationMachineTrainer : Microsoft.ML.IEstimator<Microsoft.ML.Trainers.FieldAwareFactorizationMachinePredictionTransformer>
type FieldAwareFactorizationMachineTrainer = class
    interface IEstimator<FieldAwareFactorizationMachinePredictionTransformer>
Public NotInheritable Class FieldAwareFactorizationMachineTrainer
Implements IEstimator(Of FieldAwareFactorizationMachinePredictionTransformer)
継承
FieldAwareFactorizationMachineTrainer
実装

注釈

入力列と出力列

入力ラベル列データは Boolean にする必要があります。 入力特徴列データは、既知のサイズの Singleベクターである必要があります。

このトレーナーからは、以下の列が出力されます。

出力列の名前 列の型 説明
Score Single モデルによって計算された無制限のスコア。
PredictedLabel Boolean スコアの符号に基づく予測ラベル。 負のスコアは false にマップされ、正のスコアは true にマップされます。
Probability Single ラベルとして true を持つスコアを調整することによって計算される確率。 確率値の範囲は [0, 1] です。

このトレーナーを作成するには、 FieldAwareFactorizationMachineFieldAwareFactorizationMachine または FieldAwareFactorizationMachine(Options)を使用します。

1 つの特徴列のみをサポートできる他の二項分類子とは対照的に、フィールド対応階乗演算機は複数の特徴列を使用できます。 各列は一部の特徴のコンテナーとして表示され、そのようなコンテナーはフィールドと呼ばれます。 すべての特徴列は float ベクトルである必要がありますが、それらのディメンションは異なる場合があることに注意してください。 特徴を異なるフィールドに分割する動機は、異なる分布の特徴を個別にモデル化することです。 たとえば、オンライン ゲーム ストアでは、ユーザー プロファイルから作成された機能と、ゲーム プロファイルから作成された機能を 2 つの異なるフィールドに割り当てることができます。

トレーナーの特性

機械学習タスク 二項分類
正規化は必要ですか? はい
キャッシュは必要ですか? いいえ
Microsoft.ML に加えて必要な NuGet なし
ONNX にエクスポート可能 いいえ

バックグラウンド

要素化マシン ファミリは、教師あり学習の問題に対する強力なモデル グループです。 2010年にステファン・レンドルの Factorization Machines の論文で初めて導入されました。 その後、その一般化されたバージョンの1つであるフィールド対応階乗機は、最近のレコメンダーシステムとクリックスルーレート予測コンテストで重要な予測モジュールになりました。 たとえば、Steffen Rendle の KDD-Cup 2012 (トラック 1トラック 2)、 CriteoAvazuOutbrain のクリック予測チャレンジで、Kaggle での勝利の解決策を確認できます。

因子分解マシンは、特徴結合が予測するシグナルと非常に相関している場合に特に強力です。 重要な組み合わせを形成できる機能ペアの例として、音楽レコメンデーションのユーザー ID と音楽 ID があります。 データセットが高密度の数値特徴のみで構成されている場合、階乗化マシンの使用はお勧めしません。また、一部の特徴化を実行する必要があります。

スコアリング関数

フィールド対応階乗機は、異なるフィールドの特徴ベクトルをスカラー スコアにマップするスコアリング関数です。 すべての$m$ 特徴列が長い特徴ベクトル $\textbf{x} \in {\mathbb R}^n$ に連結され、${\mathcal F}(j)$ が$j$番目の特徴のフィールドインデントを表すと仮定します。 対応するスコアは $\hat{y}(\textbf{x}) = \langle \textbf{w}、\textbf{x} \rangle + \sum_{j = 1}^n \sum_{j' = j + 1}^n \langle \textbf{v}_{j、 {\mathcal F}(j')}、\textbf{v}_{j'、{\mathcal F}(j)} \rangle x_j x_{j'}$ です。ここで、$\langle \cdot、\cdot \rangle$ は内部積演算子、{\textbf{w} \in {\mathbb R}^n$ は線形係数を格納します。 および {\textbf{v}_{j, f}\in {\mathbb R}^k$ は、$f$-th フィールドの潜在的な領域における$j$番目の機能の表現です。 $k$ は、ユーザーによって指定された潜在的なディメンションであることに注意してください。

予測ラベルは$\hat{y}$ の符号です。 $\hat{y} > が 0$ の場合、このモデルは true と予測されます。 それ以外の場合は、false と予測されます。

フィールド対応階乗機の系統的な導入については、この論文を参照してください。

トレーニング アルゴリズムの詳細

実装される FieldAwareFactorizationMachineTrainer アルゴリズムは、 確率的勾配法に基づいています。 アルゴリズムの詳細については、 このオンライン ドキュメントのアルゴリズム 3 で説明されています。 最小化された損失関数は ロジスティック損失であるため、トレーニング済みのモデルは非線形ロジスティック回帰と見なすことができます。

使用例へのリンクについては、「参照」セクションを参照してください。

メソッド

Fit(IDataView)

をトレーニングして返します FieldAwareFactorizationMachinePredictionTransformer

Fit(IDataView, IDataView, FieldAwareFactorizationMachineModelParameters)

既にトレーニング済みのデータ FieldAwareFactorizationMachineTrainer や検証データを使用してトレーニング modelParameters を続行し FieldAwareFactorizationMachinePredictionTransformer、.

GetOutputSchema(SchemaShape)

トランスフォーマーのスキーマ伝達。 入力スキーマが指定されたスキーマと同じ場合は、データの出力スキーマを返します。

拡張メソッド

AppendCacheCheckpoint<TTrans>(IEstimator<TTrans>, IHostEnvironment)

エスティメーター チェーンに 'キャッシュ チェックポイント' を追加します。 これにより、ダウンストリームエスティメーターがキャッシュされたデータに対してトレーニングされます。 複数のデータを受け取るトレーナーが渡す前にキャッシュ チェックポイントを設定すると便利です。

WithOnFitDelegate<TTransformer>(IEstimator<TTransformer>, Action<TTransformer>)

エスティメーターを指定すると、デリゲートを 1 回 Fit(IDataView) 呼び出すラップ オブジェクトが呼び出されます。 多くの場合、エスティメーターが適合した内容に関する情報を返すことが重要です。そのため Fit(IDataView) 、メソッドは一般的 ITransformerなオブジェクトではなく、具体的に型指定されたオブジェクトを返します。 ただし、同時に、 IEstimator<TTransformer> 多くのオブジェクトを含むパイプラインに形成されることが多いため、トランスフォーマーを取得するエスティメーターがこのチェーンのどこかに埋もれる場所を介して EstimatorChain<TLastTransformer> 、推定器のチェーンを構築する必要がある場合があります。 このシナリオでは、このメソッドを使用して、fit が呼び出されると呼び出されるデリゲートをアタッチできます。

適用対象

こちらもご覧ください