SdcaRegressionTrainer クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
IEstimator<TTransformer>確率的二重座標上昇法を使用して回帰モデルをトレーニングする場合。
public sealed class SdcaRegressionTrainer : Microsoft.ML.Trainers.SdcaTrainerBase<Microsoft.ML.Trainers.SdcaRegressionTrainer.Options,Microsoft.ML.Data.RegressionPredictionTransformer<Microsoft.ML.Trainers.LinearRegressionModelParameters>,Microsoft.ML.Trainers.LinearRegressionModelParameters>
type SdcaRegressionTrainer = class
inherit SdcaTrainerBase<SdcaRegressionTrainer.Options, RegressionPredictionTransformer<LinearRegressionModelParameters>, LinearRegressionModelParameters>
Public NotInheritable Class SdcaRegressionTrainer
Inherits SdcaTrainerBase(Of SdcaRegressionTrainer.Options, RegressionPredictionTransformer(Of LinearRegressionModelParameters), LinearRegressionModelParameters)
- 継承
注釈
このトレーナーを作成するには、 Sdca または Sdca (オプション) を使用します。
入力列と出力列
入力ラベル列データは Single にする必要があります。 入力特徴列データは、既知のサイズの Singleベクターである必要があります。
このトレーナーからは、以下の列が出力されます。
出力列の名前 | 列の型 | 説明 |
---|---|---|
Score |
Single | モデルによって予測された無制限のスコア。 |
トレーナーの特性
機械学習タスク | 回帰 |
正規化は必要ですか? | はい |
キャッシュは必要ですか? | いいえ |
Microsoft.ML に加えて必要な NuGet | なし |
ONNX にエクスポート可能 | はい |
トレーニング アルゴリズムの詳細
このトレーナーは、確率的二重座標アセント(SDCA)法に基づいています, 凸目的関数のための最先端の最適化技術. このアルゴリズムは、KDD のベスト ペーパーで説明されているストリーミング トレーニング アルゴリズムであるため、スケーリングできます。
収束は、別のスレッドで原始変数と二重変数の間の同期を定期的に適用することによって引き受けられます。 また、 ヒンジ損失 や ロジスティック損失など、損失機能のいくつかの選択肢も提供されています。 使用される損失に応じて、トレーニング済みのモデルは、たとえば、 ベクター マシン や ロジスティック回帰をサポートできます。 SDCA メソッドは、ストリーミング学習を行う機能 (データ セット全体をメモリに収めず)、データ セット全体を数回スキャンして妥当な結果に到達する (たとえば、 このホワイト ペーパーの実験を参照) など、最適なプロパティをいくつか組み合わせ、スパース データ セットの 0 に対する計算を行いません。
SDCA は確率的およびストリーミングの最適化アルゴリズムであることに注意してください。 停止許容値が十分に厳しくないため、結果はトレーニング データの順序によって異なります。 強凸最適化では、最適なソリューションは一意であるため、最終的には全員が同じ場所に到達します。 強く凸でない場合でも、実行から実行まで同じように優れたソリューションが得られます。 再現可能な結果を得るには、'Shuffle' を False に、'NumThreads' を 1 に設定することをお勧めします。
このクラスでは、 経験的リスク最小化 (つまり、ERM) を使用して、収集されたデータに基づいて構築された最適化の問題を策定します。 経験的リスクは、通常、収集されたデータ ポイントに対するモデルの予測に損失関数を適用することによって測定されることに注意してください。 トレーニング データに十分なデータ ポイントが含まれていない場合 (たとえば、$n$次元空間で線形モデルをトレーニングするには、少なくとも $n$ のデータ ポイントが必要です)、ERM によって生成されたモデルがトレーニング データの記述に適しているが、見えないイベントで正しい結果を予測できない可能性があるため、 オーバーフィット が発生する可能性があります。 正則化 は、モデル パラメーターの大きさ (通常は 標準関数で測定) を適用することによって、このような現象を緩和する一般的な手法です。 このトレーナーは、L1 標準 (LASSO)、$|| の線形の組み合わせを罰する エラスティック ネット正則化をサポートします。\textbf{w}_c ||_1$、L2-norm (ridge)、$||\textbf{w}_c ||$c=1,\dots,m$ の _2^2$ 正則化。 L1ノルムとL2ノルム正則化は、特定の点で補完的である異なる効果と使用を有する。
実装された最適化アルゴリズムと共に、L1 標準の正則化により、モデルの重みのスパリティを高めることができます。$\textbf{w}_1,\dots,\textbf{w}_m$ です。 高次元データ セットとスパース データ セットの場合、ユーザーが L1 標準の係数を慎重に選択した場合、予測力に影響を与えずに、0 以外の重み (例: モデル全体の重みの 1%) が少数しかないモデルで良好な予測品質を実現できます。 これに対し、L2-norm はトレーニング済みモデルのスパリティを高めることはできませんが、大きなパラメーター値を回避することでオーバーフィットを防ぐことができます。 場合によっては、L2 ノルムを使用すると予測品質が向上するため、ユーザーは引き続きそれを試して、L1 ノルムと L2 ノルムの係数を微調整することができます。 概念的には、L1 ノルムを使用すると、すべてのモデル パラメーターの分布が Laplace 分布 であるのに対し、L2 ノルムは それらのガウス分布 を意味します。
積極的な正則化 (つまり、L1 ノルムまたは L2 ノルム正則化項に大きな係数を割り当てる) は、モデルから重要な変数を除外することで予測能力を損なう可能性があります。 たとえば、L1 ノルム係数が非常に大きいと、すべてのパラメーターが強制的にゼロになり、単純なモデルにつながる場合があります。 したがって、実際には正しい正則化係数を選択することが重要です。
詳細については、次を参照してください。
使用法の例へのリンクについては、「関連項目」セクションを参照してください。
フィールド
FeatureColumn |
トレーナーが期待する特徴列。 (継承元 TrainerEstimatorBase<TTransformer,TModel>) |
LabelColumn |
トレーナーが期待するラベル列。 を指定できます |
WeightColumn |
トレーナーが期待する重み列。 は |
プロパティ
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>) |
エスティメーターを指定すると、デリゲートが呼 Fit(IDataView) び出されると呼び出されるラップ オブジェクトを返します。 多くの場合、エスティメーターが適合した内容に関する情報を返すことが重要です。そのため Fit(IDataView) 、メソッドは一般的 ITransformerなオブジェクトではなく、具体的に型指定されたオブジェクトを返します。 ただし、同時に、 IEstimator<TTransformer> 多くのオブジェクトを含むパイプラインに形成されることが多いため、トランスフォーマーを取得する推定器がこのチェーンのどこかに埋もれている場所を介して EstimatorChain<TLastTransformer> 、推定器のチェーンを構築する必要がある場合があります。 このシナリオでは、このメソッドを使用して、fit が呼び出されると呼び出されるデリゲートをアタッチできます。 |