Share via


SdcaMulticlassTrainerBase<TModel> クラス

定義

IEstimator<TTransformer>座標降下法でトレーニングされた線形多クラス分類子モデルを使用してターゲットを予測します。 使用される損失関数に応じて、トレーニング済みのモデルは、たとえば、最大エントロピー分類子または多クラスサポート ベクター マシンにすることができます。

public abstract class SdcaMulticlassTrainerBase<TModel> : Microsoft.ML.Trainers.SdcaTrainerBase<Microsoft.ML.Trainers.SdcaMulticlassTrainerBase<TModel>.MulticlassOptions,Microsoft.ML.Data.MulticlassPredictionTransformer<TModel>,TModel> where TModel : class
type SdcaMulticlassTrainerBase<'Model (requires 'Model : null)> = class
    inherit SdcaTrainerBase<SdcaMulticlassTrainerBase<'Model>.MulticlassOptions, MulticlassPredictionTransformer<'Model>, 'Model (requires 'Model : null)>
Public MustInherit Class SdcaMulticlassTrainerBase(Of TModel)
Inherits SdcaTrainerBase(Of SdcaMulticlassTrainerBase(Of TModel).MulticlassOptions, MulticlassPredictionTransformer(Of TModel), TModel)

型パラメーター

TModel
継承
派生

注釈

最大エントロピー分類子用にこのトレーナーを作成するには、 SdcaMaximumEntropy または SdcaMaximumEntropy(Options)を使用します。 選択した 損失関数 (サポート ベクター マシンの ヒンジ損失など) に対してこのトレーナーを作成するには、 SdcaNonCalibrated または SdcaNonCalibrated(Options) を使用します。

入力列と出力列

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

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

出力列の名前 列の型 説明
Score Single のベクター すべてのクラスのスコア。 値が大きいほど、関連するクラスに分類される可能性が高くなります。 i 番目の要素が最大値の場合、予測ラベル インデックスは i になります。 i はゼロベースのインデックスです。
PredictedLabel キー 予測ラベルのインデックス。 その値が i の場合、実際のラベルはキーと値の入力ラベルの型の i 番目のカテゴリになります。

トレーナーの特性

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

スコアリング関数

これにより、線形モデルがトレーニングされ、多クラス分類の問題が解決されます。 クラスの数が $m$ であり、機能の数が $n$ であると仮定します。 $c$-th クラスに係数ベクトル $\textbf{w}_c \in {\mathbb R}^n$ と {\mathbb R}$ のバイアス $b_c \を割り当てます。$c=1,\dots,m$ です。 {\mathbb R}^n$ の特徴ベクトル $\textbf{x} \を指定すると、$c$-th クラスのスコアは $\hat{y}^c = \textbf{w}_c^T \textbf{x} + b_c$ になります。 $\textbf{x}$ がクラス $c$ に属している場合、$\hat{y}^c$ は 0 よりもはるかに大きくする必要があります。 これに対し、$\hat{y}^c$ が 0 よりもはるかに小さい場合は、目的のラベルを $c$ にしないでください。

トレーニング済みモデルが最大エントロピー分類子の場合にのみ、 softmax 関数 がすべてのクラスのスコアを処理後に適用できるため、出力スコア ベクトルを予測クラス確率として解釈できます。 具体的には、クラス $c$ に属する $\textbf{x}$ の確率は、$\tilde{P}( c | \textbf{x} ) = \frac{ e^{\hat{) によって計算されます。 y}^c} }{ \sum_{c' = 1}^m e^{\hat{y}^{c'}} }$ で、スコア ベクトルの $c$-th 要素に格納します。 それ以外の場合、出力スコア ベクトルは $[\hat{y}^1、\dots、\hat{y}^m]$ のみです。

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

最適化アルゴリズムは、以前の論文で提案された同様のパスに従った座標降下法の拡張です。 通常、 L-BFGS よりもはるかに高速であり、大規模なデータ セットとスパース データ セットの 場合は、Newton メソッドが切り捨てられます

このクラスでは、 経験的リスク最小化 (つまり、ERM) を使用して、収集されたデータに基づいて構築された最適化の問題を作成します。 経験リスクは、通常、収集されたデータ ポイントに対するモデルの予測に損失関数を適用することによって測定されることに注意してください。 トレーニング データに十分なデータ ポイントが含まれていない場合 (たとえば、$n$次元空間で線形モデルをトレーニングするには、少なくとも $n$ データ ポイントが必要です)、ERM によって生成されるモデルがトレーニング データを記述するのに適していても、見えないイベントで正しい結果を予測できない可能性があるため、 オーバーフィット が発生する可能性があります。 正則化 は、モデル パラメーターの大きさ (通常は 標準関数で測定) を罰することによってこのような現象を軽減する一般的な手法です。 このトレーナーは、L1-norm (LASSO)、$|| の線形組み合わせを罰する エラスティック ネット正則化をサポートします\textbf{w}_c ||_1$、L2 標準 (リッジ)、$||\textbf{w}_c ||$c=1,\dots,m$の _2^2$ 正則化。 L1標準およびL2標準正則化は、特定の点で補完的である異なる効果および使用を有する。

実装された最適化アルゴリズムと共に、L1 標準の正則化では、モデルの重みのスパリティを高めることができます。$\textbf{w}_1,\dots,\textbf{w}_m$ です。 高次元データ セットとスパース データ セットの場合、ユーザーが L1 標準の係数を慎重に選択した場合、予測力に影響を与えずに、0 以外の重み (たとえば、モデル全体の重みの 1%) しか持たないモデルで、良好な予測品質を実現できます。 これに対し、L2 標準ではトレーニング済みモデルのスパリティを高めることはできませんが、大きなパラメーター値を回避することでオーバーフィットを防ぐことができます。 場合によっては、L2 標準を使用すると予測品質が向上するため、ユーザーは引き続きそれを試して、L1 標準と L2 標準の係数を微調整したい場合があります。 概念的には、L1 標準を使用すると、すべてのモデル パラメーターの分布が Laplace 分布 であることを意味し、L2 標準は それらのガウス分布 を意味します。

積極的な正則化 (つまり、L1 標準または L2 標準の正則化項に大きな係数を割り当てる) は、モデルから重要な変数を除外することで予測能力を損なう可能性があります。 たとえば、L1 標準係数が非常に大きい場合、すべてのパラメーターが強制的にゼロになり、単純なモデルになる可能性があります。 したがって、正しい正則化係数を選択することは、実際には重要です。

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

フィールド

FeatureColumn

トレーナーが期待する特徴列。

(継承元 TrainerEstimatorBase<TTransformer,TModel>)
LabelColumn

トレーナーが期待するラベル列。 できます null。これは、ラベルがトレーニングに使用されていないことを示します。

(継承元 TrainerEstimatorBase<TTransformer,TModel>)
WeightColumn

トレーナーが期待する重み列。 できます。 nullこれは、トレーニングに重量が使用されていないことを示します。

(継承元 TrainerEstimatorBase<TTransformer,TModel>)

プロパティ

Info

IEstimator<TTransformer>座標降下法でトレーニングされた線形多クラス分類子モデルを使用してターゲットを予測します。 使用される損失関数に応じて、トレーニング済みのモデルは、たとえば、最大エントロピー分類子または多クラスサポート ベクター マシンにすることができます。

(継承元 StochasticTrainerBase<TTransformer,TModel>)

メソッド

Fit(IDataView)

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

(継承元 TrainerEstimatorBase<TTransformer,TModel>)
GetOutputSchema(SchemaShape)

IEstimator<TTransformer>座標降下法でトレーニングされた線形多クラス分類子モデルを使用してターゲットを予測します。 使用される損失関数に応じて、トレーニング済みのモデルは、たとえば、最大エントロピー分類子または多クラスサポート ベクター マシンにすることができます。

(継承元 TrainerEstimatorBase<TTransformer,TModel>)

拡張メソッド

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

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

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

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

適用対象

こちらもご覧ください