次の方法で共有


SdcaLogisticRegressionBinaryTrainer クラス

定義

IEstimator<TTransformer>確率的二重座標アセント法を使用して二項ロジスティック回帰分類モデルをトレーニングします。 トレーニング済みのモデルは 校正され 、線形関数 PlattCalibratorの出力値を .

public sealed class SdcaLogisticRegressionBinaryTrainer : Microsoft.ML.Trainers.SdcaBinaryTrainerBase<Microsoft.ML.Calibrators.CalibratedModelParametersBase<Microsoft.ML.Trainers.LinearBinaryModelParameters,Microsoft.ML.Calibrators.PlattCalibrator>>
type SdcaLogisticRegressionBinaryTrainer = class
    inherit SdcaBinaryTrainerBase<CalibratedModelParametersBase<LinearBinaryModelParameters, PlattCalibrator>>
Public NotInheritable Class SdcaLogisticRegressionBinaryTrainer
Inherits SdcaBinaryTrainerBase(Of CalibratedModelParametersBase(Of LinearBinaryModelParameters, PlattCalibrator))
継承

注釈

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

入力列と出力列

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

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

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

トレーナーの特性

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

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

このトレーナーは確率的二重座標アセント(SDCA)メソッドに基づいています, 凸の目的関数のための最先端の最適化技術. このアルゴリズムは、KDD のベスト ペーパーで説明されているストリーミング トレーニング アルゴリズムであるため、スケーリングできます。

収束は、別のスレッドでプライマル変数とデュアル変数の間で定期的に同期を強制することで引き受けられます。 また、 ヒンジ 損失や ロジスティック損失など、損失関数のいくつかの選択肢も提供されています。 使用される損失に応じて、トレーニング済みのモデルは、たとえば、 ベクター マシンロジスティック回帰をサポートできます。 SDCA メソッドは、ストリーミング 学習を行う (データ セット全体をメモリに収めずに) 最適なプロパティをいくつか組み合わせ、データ セット全体を数回スキャンして妥当な結果に到達し (たとえば、 このホワイト ペーパーの実験を参照)、スパース データ セットのゼロに対する計算を使用しません。

SDCA は確率的およびストリーミング最適化アルゴリズムであることに注意してください。 停止許容値が十分にタイトではないため、結果はトレーニング データの順序によって異なります。 厳密に凸型の最適化では、最適なソリューションは一意であるため、最終的には誰もが同じ場所に到達します。 非強凸の場合でも、実行から実行まで同じように優れたソリューションが得られます。 再現可能な結果を得るには、"Shuffle" を False に、'NumThreads' を 1 に設定することをお勧めします。

このクラスでは、 経験的リスク最小化 (つまり、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>確率的二重座標アセント法を使用して二項ロジスティック回帰分類モデルをトレーニングします。 トレーニング済みのモデルは 校正され 、線形関数 PlattCalibratorの出力値を .

(継承元 SdcaBinaryTrainerBase<TModelParameters>)

メソッド

Fit(IDataView)

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

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

IEstimator<TTransformer>確率的二重座標アセント法を使用して二項ロジスティック回帰分類モデルをトレーニングします。 トレーニング済みのモデルは 校正され 、線形関数 PlattCalibratorの出力値を .

(継承元 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 が呼び出されると呼び出されるデリゲートをアタッチできます。

適用対象

こちらもご覧ください