線形回帰

線形回帰モデルを作成します

Category: Machine Learning/初期化モデル/回帰

注意

適用対象: Machine Learning Studio (クラシック)

このコンテンツは、Studio (クラシック) のみに関連しています。 Azure Machine Learning デザイナーに同様のドラッグアンドドロップモジュールが追加されました。 この記事では、2つのバージョンの比較について詳しく説明します。

モジュールの概要

この記事では、Azure Machine Learning Studio (クラシック) の 線形回帰 モジュールを使用して、実験で使用する線形回帰モデルを作成する方法について説明します。 線形回帰では、1 つまたは複数の独立変数と数値の結果、または属性変数との間の線形関係を確立しようとします。

このモデルを使用して線形回帰 モデルを定義し、ラベル付けされたデータセットを使用してモデルをトレーニングします。 その後、トレーニング済みのモデルは、予測に使用できます。 または、未トレーニングのモデルを クロス検証モデル に渡して、ラベル付きデータセットに対するクロス検証を行うこともできます。

線形回帰の詳細

線形回帰は一般的な統計メソッドであり、機械学習に導入され、直線に合わせて誤差を測定するための多くの新しいメソッドと共に強化されています。 ほとんどの基本的な意味で、回帰は数値目標の予測を指します。 基本的な予測タスクに非常に単純なモデルを作成する場合は、線形回帰が引き続き適しています。 線形回帰は、複雑さが欠けている高次元のスパース データのセットで適切に機能する傾向もあります。

Azure Machine Learning Studio (クラシック) では、線形回帰に加えて、さまざまな回帰モデルがサポートされています。 ただし、"回帰" という用語は疎に解釈できます。また、他のツールで提供されている一部の種類の回帰は、Studio (クラシック) ではサポートされていません。

  • 従来の回帰に関する問題は、1 つの独立変数と従属変数に関係します。 これは "単純回帰" と呼ばれます。 このモジュールでは、単純回帰をサポートします。

  • "複数の線形回帰" は、1 つの従属変数に関与する、2 つ以上の独立変数に関係します。 複数の入力が 1 つの数値の結果を予測するために使用される問題は、"多変量線形回帰" とも呼ばれます。

    この 線形回帰 モジュールは、Studio (クラシック) のその他の回帰モジュールのほとんどでも、これらの問題を解決できます。

  • "複数ラベル回帰" は、1 つのモデル内の複数の従属変数を予測するタスクです。 たとえば、複数ラベルのロジスティック回帰で、サンプルを複数の異なるラベルに割り当てることができます。 (これは 1 つのクラス変数内に複数のレベルを予測するタスクとは異なります。)

    この種類の回帰は、Azure Machine Learning ではサポートされません。 複数の変数を予測するには、予測したい出力ごとに個別の学習者を作成します。

長年にわたって、統計学者は回帰にますます高度なメソッドを開発しています。 これは線形回帰にも当てはまります。 このモジュールでは、誤差を測定し、回帰直線に適合させるために 2 つのメソッドをサポートします。通常の最小二乗法メソッドと勾配降下です。

  • 勾配降下 は、モデル トレーニング プロセスの各ステップで誤差の量を最小限にするメソッドです。 勾配降下には多くの変数があり、さまざまな学習に関する問題の最適化は広く学習されています。 [Solution method](ソリューション メソッド) にこのオプションを選ぶと、ステップ サイズ、学習速度などを制御するために、さまざまなパラメーターを設定できます。 このオプションでは、統合パラメーターの一括処理の使用もサポートします。

  • 通常の最小二乗法 は、線形回帰で最も一般的に使用される技術です。 たとえば、Microsoft Excel の分析ツールで使用されるメソッドは最小二乗法です。

    通常の最小二乗法は、実績値から予測された線までの距離の平方の合計として誤差を計算し、二乗エラーを最小限にすることでモデルを適合させる損失関数を示します。 このメソッドは、入力と従属変数との間の強力な線形関係を前提とします。

線形回帰を構成する方法

このモジュールでは、次の2つの方法で回帰モデルを調整できます。

通常の最小二乗法を使用して回帰モデルを作成する

  1. Studio (クラシック) で、 線形回帰モデル モジュールを実験に追加します。

    [Machine Learning] カテゴリでこのモジュールを見つけることができます。 [Initialize Model](モデルの初期化) を展開し、[Regression](回帰) を展開して、Linear Regression Model (線形回帰モデル) モジュールを自分の実験にドラッグします。

  2. [プロパティ] ウィンドウの [Solution method](ソリューション メソッド) ドロップダウン リストで、 [Ordinary Least Squares](通常の最小二乗法) を選択します。 このオプションでは、回帰直線を見つけるために使用する計算メソッドを指定します。

  3. [L2 regularization weight](L2 正規化の重み) に、L2 正規化に対する重みとして使用する値を入力します。 オーバーフィットを避けるために、ゼロ以外の値を使用することをお勧めします。

    正規化がモデルの調整にどのように影響するかの詳細については、「機械学習向けの L1および L2 正規化

  4. 切片の用語を表示する場合、 [Include intercept term](切片の用語を含める) オプションを選択します。

    回帰式を確認する必要がない場合、このオプションの選択を解除します。

  5. [Random number seed](乱数シード) には、必要に応じて、モデルによって使用される乱数ジェネレーターにシードを設定する値を入力できます。

    同じ実験におけるさまざまな実行を超えて同じ結果を保持する必要がある場合、シード値を使用すると便利です。 それ以外の場合、既定はシステム クロックからの値を使用します。

  6. 不足値でエラーが発生するようにする場合は、[ 不明なカテゴリレベルを許可 する] オプションをオフにします。

    このオプションを選択した場合、カテゴリ列ごとに追加のレベルが作成されます。 トレーニングデータセットに存在しないテストデータセットのレベルは、この追加のレベルにマップされます。

  7. Train Model (モデルのトレーニング) モジュールを自分の実験に追加して、ラベル付けされたデータセットに接続します。

  8. 実験を実行します。

通常の最小二乗法モデルの結果

トレーニングの完了後:

  • モデルのパラメーターを表示するには、トレーナーの出力を右クリックして、[Visualize](可視化) を選択します。

  • 予測するには、新しい値のデータセットと共に、トレーニング済みのモデルを Score Model (モデルのスコア付け) モジュールに接続します。

  • ラベルが付けられたデータセットに対してクロス検証を実行するには、未トレーニングのモデルを クロス検証モデルに接続します。

オンライン勾配降下を使用して回帰モデルを作成する

  1. Studio (クラシック) で、 線形回帰モデル モジュールを実験に追加します。

    [Machine Learning] カテゴリでこのモジュールを見つけることができます。 [Initialize Model](モデルの初期化) を展開し、[Regression](回帰) を展開して、Linear Regression Model (線形回帰モデル) モジュールを自分の実験にドラッグします。

  2. [プロパティ] ウィンドウの [Solution method](ソリューション メソッド) ドロップダウン リストで、回帰直線を見つけるために使用する計算メソッドとして、 [Online Gradient Descent](オンライン勾配降下) を選びます。

  3. [Create trainer mode](トレーナー モードの作成) では、定義済みのパラメーターのセットでモデルをトレーニングするかどうか、またはパラメーターの一括処理を使用することでモデルを最適化する必要があるかどうかを示します。

    • Single Parameter (単一パラメーター) : 線形回帰ネットワークの構成方法が既にわかっている場合は、特定の値のセットを引数として渡すことができます。

    • パラメーター範囲: アルゴリズムで最適なパラメーターを検索する場合は、[ トレーナーモードの作成 ] オプションを [ パラメーター範囲] に設定します。 その後、アルゴリズムに対して複数の値を指定して試してみることができます。

  4. [Learning rate](学習速度) では、確率勾配降下オプティマイザーに初期学習速度を指定します。

  5. [Number of training epochs](トレーニング エポックの数) には、アルゴリズムが例を通して繰り返す必要がある回数を示す値を入力します。 少数の例を含むデータセットでは、この数値は収束に達するために大きくなります。

  6. Normalize features (フィーチャーの正規化) : モデルをトレーニングするために使用された数値データを既に正規化している場合、このオプションの選択を解除できます。 既定では、モジュールによって、0 と 1 の間の範囲へのすべての数値入力が正規化されます。

    注意

    スコア付けに使用される新しいデータに同じ正規化メソッドを提供することを忘れないでください。

  7. [L2 regularization weight](L2 正規化の重み) に、L2 正規化に対する重みとして使用する値を入力します。 オーバーフィットを避けるために、ゼロ以外の値を使用することをお勧めします。

    正規化がモデルの調整にどのように影響するかの詳細については、「機械学習向けの L1および L2 正規化

  8. 最終的な仮説の平均を計算するために、[ 平均ファイナル仮説] オプションを選択します。

    回帰モデルでは、仮説テストとは、ある程度の統計を使用して null 仮説の確率を評価することを意味します。これは、依存変数と独立変数の間に線形の相関関係がないことを示します。 多くの回帰問題では、複数の変数を含む仮説をテストする必要があります。

    このオプションは既定で有効になっています。つまり、2つ以上のパラメーターが関係するパラメーターの組み合わせがアルゴリズムによってテストされます。

  9. イテレーションが進むときに学習速度を下げる必要がある場合、 [Decrease learning rate](学習速度の低下) のオプションを選択します。

  10. [Random number seed](乱数シード) には、必要に応じて、モデルによって使用される乱数ジェネレーターにシードを設定する値を入力できます。 同じ実験におけるさまざまな実行を超えて同じ結果を保持する必要がある場合、シード値を使用すると便利です。

  11. 不足値でエラーが発生するようにする場合は、[ 不明なカテゴリレベルを許可 する] オプションをオフにします。

    このオプションを選択すると、カテゴリ列ごとに追加のレベルが作成されます。 トレーニングデータセットに存在しないテストデータセットのレベルは、この追加のレベルにマップされます。

  12. ラベルが付けられたデータセットと トレーニングモジュールの1つを追加します。

    統合パラメーターの一括処理を使用していない場合、Train Model (モデルのトレーニング) モジュールを使用します。

    アルゴリズムによって最適なパラメーターが検出されるようにするには、 チューニングモデルのハイパーパラメーターを使用してモデルをトレーニングします。

    注意

    単一パラメーター オプションを使用して特定の値を使用してモデルを構成した後、パラメーター範囲 オプションに切り替えると、各パラメーターの範囲の最小値を使用してモデルがトレーニングされます。

    逆に、モデルの作成時に [ パラメーター範囲 ] オプションを選択したときに特定の設定を構成した場合、モデルは、スイープする値の範囲として学習器の既定値を使用してトレーニングされます。

  13. 実験を実行します。

オンライン勾配降下の結果

トレーニングの完了後:

  • 予測するには、新しい入力データと一緒に、トレーニング済みのモデルを Score Model (モデルのスコア付け) モジュールに接続します。
  • ラベルが付けられたデータセットに対してクロス検証を実行するには、未トレーニングのモデルを クロス検証モデルに接続します。

回帰モデルの例については、 Azure AI Galleryの次のサンプル実験を参照してください。

テクニカル ノート

このセクションには、実装の詳細、ヒント、よく寄せられる質問への回答が含まれています。

使用上のヒント

単純なものから複雑なものまで、線形回帰を作成する多種多様なツールがサポートされています。 たとえば、ソルバーツールを使用すると、Excel で線形回帰を簡単に実行できます。また、R、Python、または C# を使用して、独自の回帰アルゴリズムをコーディングすることもできます。

ただし、線形回帰は、多くの異なるツールでサポートされる適切に確立された手法であるため、さまざまな解釈と実装があります。 すべての種類のモデルがすべてのツールで同等にサポートされるわけではありません。 また、注意すべきいくつかの違いもあります。

  • 多くの場合、回帰メソッドは、応答変数の数によって分類されます。 たとえば、複数の線形回帰は、予測する変数を複数持つモデルを意味します。

  • Matlab では、多変量回帰は、複数の応答変数を持つモデルを指します。

  • Azure Machine Learning では、回帰モデルは単一の応答変数をサポートしています。

  • R 言語では、線形回帰に提供される機能は、使用するパッケージによって異なります。 たとえば、 glm パッケージを使用すると、複数の独立変数を持つロジスティック回帰モデルを作成することができます。 一般に、Azure Machine Learning Studio (クラシック) は、R glm パッケージと同じ機能を提供します。

一般的な回帰問題には、 線形回帰 というこのモジュールを使用することをお勧めします。

これに対して、クラス値を予測するために複数の変数を使用する場合は、 2 クラスのロジスティック回帰 モジュールまたは 多クラスロジスティック回帰 モジュールを使用することをお勧めします。

R 言語で使用できるその他の線形回帰パッケージを使用する場合は、 r スクリプトの実行 モジュールを使用して、Azure Machine Learning Studio (クラシック) のランタイム環境に含まれている lm または glm パッケージを呼び出すことをお勧めします。

モジュールのパラメーター

名前 Range Type Default 説明
特徴の正規化 any Boolean true インスタンスを正規化する必要があるかどうかを示します
最終仮説の平均 any Boolean true 最終仮説を平均する必要があるかどうかを示します
Learning rate (学習率) >=double.Epsilon Float 0.1 確率勾配降下オプティマイザーの最初の学習率を指定します
トレーニング エポックの数 >=0 Integer 10 アルゴリズムが例を反復処理する必要がある回数を指定します。 少数の例を含むデータセットでは、この数値は収束に達するために大きくなります。
学習率の引き下げ Any Boolean true イテレーションの進行状況に応じて、学習率を下げる必要があるかどうかを示します
L2 正則化 weight >= 0.0 Float 0.001 L2 正則化の重みを指定します。 0 以外の値を使用するとオーバーフィットを回避できます。
乱数シード any Integer モデルで使用する乱数ジェネレーターのシード値を指定します。 既定の場合は空白のままにします。
不明なカテゴリ レベルの許可 any Boolean true 各カテゴリ列の追加レベルを作成するかどうかを示します。 トレーニング データセットでは使用できないテスト データセットのレベルはすべて、この追加のレベルにマップされます。
切片項の包含 Any Boolean True 切片項を追加する必要があるかどうかを示します

出力

名前 Type 説明
未トレーニング モデル ILearner インターフェイス 未トレーニング回帰モデル

関連項目

Regression (回帰)