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