クロス検証モデル

重要

Machine Learning Studio (クラシック) のサポートは、2024 年 8 月 31 日に終了します。 その日までに、Azure Machine Learning に切り替えすることをお勧めします。

2021 年 12 月 1 日以降、新しい Machine Learning Studio (クラシック) リソースは作成できません。 2024 年 8 月 31 日まで、既存の Machine Learning Studio (クラシック) リソースを引き続き使用できます。

ML Studio (クラシック) のドキュメントは廃止予定であり、今後更新されない可能性があります。

データをパーティション分割することによって、分類モデルまたは回帰モデルのパラメーターの推定値をクロス検証する

カテゴリ: Machine Learning/評価

注意

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

類似のドラッグ アンド ドロップ モジュールは Azure Machine Learning デザイナーで使用できます。

モジュールの概要

この記事では、Machine Learning Studio (クラシック) でモデルのクロス検証モジュールを使用する方法について説明します。 "クロス検証" は、データセットの変動性と、そのデータを使用してトレーニングされたモデルの信頼性の両方を評価するために機械学習でよく使用される重要な手法です。

モデルのクロス検証モジュールは、未トレーニングの分類または回帰モデルと共に、ラベル付きデータセットを入力として受け取ります。 これは、データセットをいくつかのサブセット ("フォールド") に分割し、各フォールドでモデルを構築してから、各フォールドの正確性の統計セットを返します。 すべてのフォールドの正確性の統計を比較することにより、データセットの品質を解釈し、モデルがデータの変動の影響を受けやすいかどうかを把握できます。

クロス検証では、データセットの予測結果と確率も返されるため、予測の信頼性を評価できます。

クロス検証のしくみ

  1. クロス検証では、トレーニング データが複数のパーティション ("フォールド" とも呼ばれます) にランダムに分割されます。

    • データセットをまだパーティション分割していない場合、アルゴリズムの既定値は 10 フォールドになります。
    • データセットを異なる数のフォールドに分割するには、パーティションとサンプルモジュールを使用して、使用するフォールドの数を指定します。
  2. このモジュールは、検証に使用するためにフォールド 1 のデータを確保し (これは "ホールドアウト フォールド" と呼ばれることもあります)、残りのフォールドを使用してモデルをトレーニングします。

    たとえば、5 つのフォールドを作成した場合、このモジュールはクロス検証中に 5 つのモデルを生成します。各モデルは、データの 4/5 を使用してトレーニングされ、残りの 1/5 でテストされます。

  3. 各フォールドのモデルのテスト中に、複数の正確性の統計が評価されます。 どの統計が使用されるかは、評価するモデルの種類によって異なります。 分類モデルと回帰モデルの評価には、異なる統計が使用されます。

  4. すべてのフォールドに対してビルドおよび評価のプロセスが完了すると、 クロス検証モデル によって、すべてのデータのパフォーマンスメトリックとスコア付け結果が生成されます。 これらのメトリックを調べて、1 つのフォールドに特に高い正確性または低い正確性があるかどうかを確認する必要があります。

クロス検証の利点

モデルを評価するには、データを 分割してトレーニングセットとテストセットに分割し、次にトレーニングデータに対してモデルを検証するという、別の一般的な方法があります。 ただし、クロス検証にはいくつかの利点があります。

  • クロス検証では、より多くのテスト データが使用されます。

    クロス検証では、より大きなデータ領域内で指定のパラメーターを使用してモデルのパフォーマンスを測定します。 つまり、クロス検証では、トレーニングと評価の両方で、トレーニング データセットの一部ではなく全体が使用されます。 これに対し、ランダム分割から生成されたデータを使用してモデルを検証する場合、通常は、使用可能なデータの 30% 以下に対してのみモデルを評価します。

    ただし、クロス検証では、大規模なデータセットでモデルを複数回トレーニングして検証するため、ランダム分割での検証よりも計算量が多くなり、はるかに長い時間がかかります。

  • クロス検証では、モデルだけでなくデータセットも評価されます。

    クロス検証では、モデルの正確性が測定されるだけではなく、データセットがどの程度代表的であるかと、モデルがデータの変動にどの程度影響を受けやすいかについての理解も得られます。

クロス検証モデルを使用する方法

クロス検証を使用するには、主に2つの方法があります。

大量のデータを使用すると、クロス検証の実行に時間がかかることがあります。 そのため、モデルの構築とテストの初期フェーズで クロス検証モデル を使用して、モデルパラメーターの結果を評価し (計算時間が許容できることを前提としていると仮定)、モデルの トレーニング と 評価モデル モジュールで確立されたパラメーターを使用してモデルのトレーニングと評価を行うことができます。

単純なクロス検証

このシナリオでは、モデルのクロス検証を使用して、モデルのトレーニングとテストの両方を行います。

  1. モデルの クロス検証 モジュールを実験に追加します。 これは Machine Learning Studio (クラシック) の [ Machine Learning ] カテゴリの [評価] で確認できます。

  2. 分類モデルまたは回帰モデルの出力を Connect します。

    たとえば、分類に Two Class Bayes Point Machine を使用している場合は、必要なパラメーターを使用してモデルを構成し、次に分類子の未トレーニング モデルポートから、モデルのクロス検証の対応するポートにコネクタをドラッグします。

    ヒント

    モデルのクロス検証によってモデルが評価の一部として自動的にトレーニングされるため、モデルのトレーニングを行う必要はありません。

  3. クロス検証モデルのデータセットポートで、ラベル付けされたトレーニングデータセットを接続します。

  4. モデルのクロス検証の [プロパティ] ウィンドウで、[Launch column selector]\(列セレクターの起動\) をクリックし、クラス ラベルまたは予測可能な値を含む単一の列を選択します。

  5. 同じデータに対する連続した実行の間でクロス検証の結果を繰り返すことができるようにするには、ランダム シード パラメーターの値を設定します。

  6. 実験を実行します。

  7. レポートの説明については、「結果」セクションを参照してください。

    後で再利用するためにモデルのコピーを取得するには、アルゴリズムを含むモジュールの出力 (たとえば、 2 つのクラス Bayes ポイントマシン) を右クリックし、[トレーニング済みの モデルとして保存] をクリックします。

パラメータースイープを使用したクロス検証

このシナリオでは、パラメータースイープを実行して最適なモデルを特定し、クロス検証モデルを使用してその信頼性を確認することで、チューニングモデルのハイパーパラメーターを使用します。 これは、最適なモデルを特定し、そのモデルのメトリックを生成 Machine Learning する最も簡単な方法です。

  1. モデルトレーニング用のデータセットを追加し、分類モデルまたは回帰モデルを作成する機械学習モジュールの1つを追加します。

  2. 実験に モデルハイパーパラメーターの調整 モジュールを追加します。 [トレーニング] の下にある [ Machine Learning ] カテゴリで見つけることができます。

  3. 分類モデルまたは回帰モデルを、チューニングモデルのハイパーパラメーターのトレーニングされていないモデル入力にアタッチします。

  4. モデルの クロス検証 モジュールを実験に追加します。 これは Machine Learning Studio (クラシック) の [ Machine Learning ] カテゴリの [評価] で確認できます。

  5. チューニングモデルハイパーパラメーターのトレーニング済みの最高モデル出力を探し、クロス検証モデルの未トレーニングモデル入力に接続します。

  6. トレーニングデータをクロス検証モデルのトレーニングデータセット入力に Connect します。

  7. 実験を実行します。

  8. 結果と評価スコアを確認した後で、後で再利用するために最適なモデルのコピーを取得するには、[ モデルハイパーパラメーターの調整 ] モジュールを右クリックし、[トレーニング済みの 最適なモデル] を選択し、[トレーニング済みの モデルとして保存] をクリックします。

注意

オプションの検証データセットに対してモデルハイパーパラメーターの調整モジュールの入力を使用すると、異なる結果が得られる場合があります。

このオプションを使用すると、静的なトレーニングデータセットとテストデータセットを指定することになります。 そのため、クロス検証プロセスでは、トレーニングとテストのためにデータを n グループに分割するのではなく、指定されたトレーニングデータセットとテストデータセットも使用します。 ただし、メトリックは nフォールドごとに生成されます。

結果

すべてのイテレーションが完了すると、 クロス検証モデル によって、データセット全体のスコアと、モデルの品質を評価するために使用できるパフォーマンスメトリックが作成されます。

スコア付け結果

モジュールの最初の出力では、いくつかの予測値および関連する確率と共に、各行のソース データが提供されます。

これらの結果を表示するには、実験で [ モデルのクロス検証 ] モジュールを右クリックし、[スコア付けの 結果] を選択し、[ 視覚化] をクリックします。

新しい列名 説明
フォールドの割り当て クロス検証中にデータの各行が割り当てられたフォールドの 0 から始まるインデックスを示します。
スコア付けラベル この列はデータセットの末尾に追加され、各行の予測値が格納されます。
スコア付け確率 この列はデータセットの末尾に追加され、スコア付けラベルの値の推定確率を示します。

評価結果

2 番目のレポートはフォールドによってグループ化されます。 実行中は、 クロス検証モデル によってトレーニングデータが n フォールド (既定では 10) にランダムに分割されることに注意してください。 データセットに対する各反復処理では、 クロス検証モデル で1つのフォールドを検証データセットとして使用し、残りの n-1 を使用してモデルをトレーニングします。 各 n モデルは、他のすべてのフォールド内のデータに対してテストされます。

このレポートでは、フォールドはインデックス値によって昇順に一覧表示されます。 他の列を並べ替えるには、結果をデータセットとして保存します。

これらの結果を表示するには、実験で [ モデルのクロス検証 ] モジュールを右クリックし、[ 折りたたみ] で評価結果を選択し、[ 視覚化] をクリックします。

列名 説明
フォールド番号 各フォールドの識別子。 5 つのフォールドを作成した場合、5 つのデータのサブセットがあり、0 から 4 の番号が付けられています。
フォールドの例の数 各フォールドに割り当てられた行の数。 これらはほぼ同じになるはずです。
モデル モデルで使用されるアルゴリズム。 API 名で識別されます。

また、評価するモデルの種類に応じて、フォールドごとに次のメトリックが含まれます。

  • 分類モデル: 精度、再現率、F スコア、c、ログ損失の平均、ログ損失のトレーニング

  • 回帰モデル: 負の対数確率、平均絶対誤差、平方根平均二乗誤差、相対絶対誤差、および決定係数

例

機械学習でクロス検証を使用する方法の例については、 Azure AI Galleryを参照してください。

テクニカル ノート

  • データセットをクロス検証に使用する前に、それを正規化することをお勧めします。

  • クロス検証モデルでは、モデルを複数回トレーニングおよび検証するため、計算が非常に多くなり、ランダムに分割されたデータセットを使用してモデルを検証した場合よりも完了に時間がかかることになります。

  • クロス検証モデルを使用して、指定されたパラメーターでモデルの長所を確立することをお勧めします。 最適なパラメーターを特定するには、 チューニングモデルのハイパーパラメーター を使用します。

  • クロス検証を使用してモデルの正確性を測定する場合、データセットをトレーニング セットとテスト セットに分割する必要はありません。

    ただし、検証データセットが上流に提供されている場合、モジュールは、 n フォールドに分割するのではなく、指定されたトレーニングデータセットとテストデータセットを使用します。 つまり、最初のデータセットを使用して各パラメーターの組み合わせに対してモデルをトレーニングし、モデルを検証データセットに対して評価します。 クロス検証でのパラメータースイープの使用については、「」を参照してください。

  • この記事では、以前のバージョンのモジュールを使用していますが、クロス検証プロセスの詳細については、「アルゴリズムを最適化するためのパラメーターを選択する方法」を Machine Learning

想定される入力

名前 型 説明
未トレーニング モデル ILearner インターフェイス データセットに対する未トレーニング クロス検証モデル
データセット データ テーブル 入力データセット

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

名前 Range Type Default 説明
ラベル列 any ColumnSelection 検証に使用するラベルが含まれている列を選択します
Random seed (ランダム シード) any Integer 0 乱数ジェネレーターのシード値

この値は省略可能です。 指定されていない場合

出力

名前 型 説明
スコア付け結果 データ テーブル スコア付けの結果
フォールドでの評価結果 データ テーブル 評価の結果 (フォールドおよび全体での)

例外

例外 説明
エラー 0035 特定のユーザーまたは項目に対して特徴が提供されなかった場合、例外が発生します。
エラー 0032 引数が数値ではない場合、例外が発生します。
エラー 0033 引数が無限である場合、例外が発生します。
エラー 0001 データ セットで指定した列のうち 1 つまたは複数が見つからない場合、例外が発生します。
エラー 0003 1 つまたは複数の入力が null または空の場合、例外が発生します。
エラー 0006 パラメーターが指定された値以上の場合、例外が発生します。
エラー 0008 パラメーターが範囲内にない場合、例外が発生します。
エラー 0013 モジュールに無効な型の学習器が渡された場合、例外が発生します。

Studio (クラシック) モジュール固有のエラーの一覧については、「 Machine Learning エラーコード」を参照してください。

API 例外の一覧については、「 Machine Learning REST API のエラーコード」を参照してください。

こちらもご覧ください

Evaluate
レコメンダーの評価
モジュールの一覧 (アルファベット順)