多クラスのロジスティック回帰
重要
Machine Learning Studio (クラシック) のサポートは、2024 年 8 月 31 日に終了します。 その日までに、Azure Machine Learning に切り替えすることをお勧めします。
2021 年 12 月 1 日以降、新しい Machine Learning Studio (クラシック) リソースは作成できません。 2024 年 8 月 31 日まで、既存の Machine Learning Studio (クラシック) リソースを引き続き使用できます。
- ML Studio (クラシック) から Azure Machine Learning への機械学習プロジェクトの移動に関する情報を参照してください。
- Azure Machine Learning についての詳細を参照してください。
ML Studio (クラシック) のドキュメントは廃止予定であり、今後更新されない可能性があります。
多クラス ロジスティック回帰分類モデルを作成します
カテゴリ: Machine Learning/初期化モデル/分類
注意
適用対象: Machine Learning Studio (クラシック)のみ
類似のドラッグ アンド ドロップ モジュールは Azure Machine Learning デザイナーで使用できます。
モジュールの概要
この記事では Machine Learning Studio (クラシック) の多クラスロジスティック回帰モジュールを使用して、複数の値を予測するために使用できるロジスティック回帰モデルを作成する方法について説明します。
ロジスティック回帰を使用した分類は教師あり学習手法であるため、ラベル付けされたデータセットが必要となります。 モデルをトレーニングするには、モデルとラベル付けされたデータセットをモジュールへの入力として指定します。たとえば、モデルの トレーニング や、 モデルハイパーパラメーターの調整などです。 その後は、トレーニング済みのモデルを使用して新しい入力例の値を予測することができます。
Machine Learning Studio (クラシック) には、 2 クラスのロジスティック回帰モジュールも用意されています。これは、バイナリ変数または二分変数の分類に適しています。
多クラスロジスティック回帰の詳細
ロジスティック回帰は、結果の確率を予測するために使用される統計内のよく知られたメソッドであり、分類タスクで特によく使用されます。 このアルゴリズムは、データをロジスティック関数にフィッティングすることで事象の発生確率を予測します。 この実装の詳細については、「テクニカル ノート」セクションを参照してください。
多クラスのロジスティック回帰では、分類器を使用して複数の結果を予測することができます。
多クラスロジスティック回帰を構成する方法
多クラスのロジスティック回帰モジュールを実験に追加します。
[Create trainer mode]\(トレーナー モードの作成\) オプションを設定して、モデルのトレーニング方法を指定します。
Single Parameter (単一パラメーター) : モデルの構成方法がわかっている場合はこのオプションを使用し、特定の値のセットを引数として渡します。
パラメーター範囲: 最適なパラメーターがわからず、パラメータースイープを使用する場合は、このオプションを使用します。
オプティマイザーの収束に使用するしきい値を [Optimization tolerance]\(最適化の許容範囲\) に指定します。 イテレーション間の改善がしきい値を下回った場合に、アルゴリズムが終了して現在のモデルが返されます。
[L1 regularization weight]\(L1 正則化の重み\) 、 [L2 regularization weight]\(L2 正則化の重み\) : 正則化パラメーター L1 と L2 に使用する値を入力します。 どちらも 0 以外の値にすることをおすすめします。
正則化とは、極端な係数の値を備えるモデルにペナルティーを与えることによってオーバーフィットを防止する手法です。 正則化は、仮説の誤りに対し、係数値に関連付けられているペナルティを加算することによって機能します。 極端な係数の値を持った正確なモデルにはより大きなペナルティが与えられる一方、相対的に値が控えめで正確でないモデルに与えられるペナルティは小さくなります。
L1 正則化と L2 正則化とでは、効果と用途が異なります。 L1 は、疎なモデルに適用でき、高次元のデータを扱う際に役立ちます。 これに対し、L2 正則化は、疎ではないデータに適しています。 このアルゴリズムは、L1 正則化と L2 正則化の値に対する線形の組み合わせをサポートします。つまり、
x = L1
かつy = L2
である場合、正則化項の線形包がax + by = c
で定義されます。ロジスティック回帰モデルには、L1 項と L2 項に対するさまざまな線形結合が考案されてきました (エラスティック ネット型の正則化など)。
L-BFGS のメモリサイズ: l bfgs の最適化に使用するメモリの量を指定します。 このパラメーターは、次のステップの計算用に保存する過去の位置と傾きの数を指定します。
L-BFGS は、limited memory Broyden Fletcher-Goldfarb Shanno の略で、パラメーター推定に対する一般的な最適化アルゴリズムです。 この最適化パラメーターによって、次のステップと方向の計算に使用されるメモリ量が制限されます。 指定するメモリ量を小さくすると、トレーニングにかかる時間は短縮されますが、正確さが低下します。
Random number seed (乱数シード) : 複数回実行した場合の結果に再現性を確保したい場合、アルゴリズムのシードとして使用する整数値を入力します。 それ以外の場合は、システム クロック値がシードとして使用され、同じ実験を複数回実行した場合に、わずかに違った結果が得られます。
[不明なカテゴリレベルを許可する]: このオプションを選択すると、各カテゴリ列に "unknown" レベルが追加されます。 トレーニングデータセットに存在しないテストデータセット内の値 (レベル) は、この "不明" レベルにマップされます。
ラベル付けされたデータセットと、いずれかのトレーニング モジュールを接続します。
[Create trainer mode]\(トレーナー モードの作成\) を [Single Parameter]\(単一パラメーター\) に設定した場合は、モデルのトレーニング モジュールを使用します。
[Create trainer mode]\(トレーナー モードの作成\) を [Parameter Range]\(パラメーター範囲\) を設定する場合は、[Tune Model Hyperparameters]\(モデルのハイパーパラメーターの調整\) モジュールを使用します。 このオプションを使用すると、複数の値を指定できます。トレーナーは、設定の複数の組み合わせに対して反復処理を行い、最適なモデルを生成する値の組み合わせを決定します。
注意
パラメーター範囲を [モデルのトレーニング] に渡すと、パラメーター範囲リストの 1 番目の値のみが使用されます。
[Tune Model Hyperparameters]\(モデルのハイパーパラメーターの調整\) モジュールによって、パラメーターごとに設定の範囲が求められているとき、それに単一のパラメーター値セットを渡した場合、それらの値は無視され、学習器の既定値が使用されます。
[Parameter Range]\(パラメーター範囲\) オプションを選択し、任意のパラメーターに単一の値を入力した場合、指定した単一の値はスイープ全体で使用されます。これは、他のパラメーターが値の範囲の中で変化する場合でも同様です。
実験を実行します。
結果
トレーニングの完了後:
- モデルのパラメーターの概要と、トレーニングから得られた特徴の重みを表示するには、 モデルのトレーニング モジュールの出力を右クリックするか、 モデルのハイパーパラメーターをチューニングし、[ 視覚化] を選択します。
例
この学習アルゴリズムの使用例については、 Azure AI Galleryを参照してください。
アイリスクラスタリング: 多クラスロジスティック回帰の結果と K を意味するクラスタリングを比較します。
ネットワーク侵入検出: バイナリロジスティック回帰を使用して、ケースが侵入を表しているかどうかを判断します。
二項分類器のクロス検証: モデルの評価など、一般的な実験用ワークフローでロジスティック回帰を使用する方法を示します。
テクニカル ノート
このセクションには、実装の詳細、ヒント、よく寄せられる質問への回答が含まれています。
関連する研究
L1 正則化と L2 正則化について、さらに詳しく知りたい場合は、 次の記事では、L1 と L2 の正則化がどのように異なるか、およびロジスティック回帰とニューラルネットワークモデルのコードサンプルを使用してモデルの調整にどのように影響するかについて説明します。
このアルゴリズムの実装の詳細については、次を参照してください。
- 正規化 Log-Linear モデルのスケーラブルなトレーニング(Andrew およびガス o)。
実装の詳細
ロジスティック回帰には数値変数が必要です。 したがって、カテゴリ列を変数として使用しようとすると、Machine Learning は値を内部的にインジケーター配列に変換します。
日付と時刻の場合は、数値表現が使用されます。 日付と時刻の値の詳細については、「 DateTime 構造体 .NET Framework」を参照してください。 日付と時刻を異なる方法で処理する場合は、派生列を作成することをお勧めします。
標準ロジスティック回帰は二項分布で、2つの出力クラスを想定しています。 多クラスまたは多項ロジスティック回帰は、3つ以上の出力クラスを想定しています。
二項分ロジスティック回帰では、データの ロジスティック分布 が想定されます。例がクラス1に所属する確率は式です。
p(x;β0,…, βD-1)
各値の説明:
x は、インスタンスのすべての特徴の値を含む D 次元ベクトルです。
p はロジスティック分布関数です。
β{0},..., β {D-1}
は、ロジスティック分布の不明なパラメーターです。
アルゴリズムは、入力されたパラメーターの対数確率を最大化することで、の最適な β{0},..., β {D-1}
値を見つけようとします。 最大の最適化は、 制限付きメモリ BFGSと呼ばれる、パラメーターの推定の一般的な方法を使用して実行されます。
モジュールのパラメーター
名前 | Range | Type | Default | 説明 |
---|---|---|---|---|
最適化の公差 | >=double.Epsilon | Float | 0.0000001 | L-BFGS オプティマイザーの公差値を指定します |
L1 正則化の重み | >= 0.0 | Float | 1.0 | L1 正則化の重みを指定します。 0 以外の値を使用するとオーバーフィットを回避できます。 |
L2 正則化 weight | >= 0.0 | Float | 1.0 | L2 正則化 weight を指定します。 0 以外の値を使用するとオーバーフィットを回避できます。 |
L-BFGS のメモリ サイズ | >=1 | Integer | 20 | L-BFGS オプティマイザーに使用するメモリの量 (MB 単位) を指定します。 使用するメモリが少ない場合、トレーニングは高速になりますが正確さに欠けます。 |
乱数シード | Any | Integer | モデルで使用する乱数ジェネレーターのシード値を入力します。 既定の場合は空白のままにします。 | |
不明なカテゴリ レベルの許可 | Any | Boolean | True | 各カテゴリ列の追加レベルを作成するかどうかを示します。 トレーニング データセットでは使用できないテスト データセットのレベルはすべて、この追加レベルにマップされます。 |
出力
名前 | 型 | 説明 |
---|---|---|
未トレーニング モデル | ILearner インターフェイス | 未トレーニング分類モデル |