次の方法で共有


クロス検証 (Analysis Services - データ マイニング)

クロス検証 は分析の標準的なツールであり、データ マイニング モデルの開発と微調整を支援するための重要な機能です。 クロス検証は、マイニング構造と関連するマイニング モデルを作成してモデルの有効性を確認した後に使用します。 クロス検証には、次のアプリケーションがあります。

  • 特定のマイニング モデルの堅牢性の検証。

  • 1 つのステートメントから複数のモデルを評価する。

  • 複数のモデルを構築し、統計に基づいて最適なモデルを特定する。

このセクションでは、データ マイニングに提供されるクロス検証機能を使用する方法と、1 つのモデルまたは 1 つのデータ セットに基づく複数のモデルのクロス検証の結果を解釈する方法について説明します。

クロス検証プロセスの概要

クロス検証は、トレーニングと結果の生成という 2 つのフェーズで構成されます。 これらのフェーズには、次の手順が含まれます。

  • ターゲット マイニング構造を選択します。

  • テストするモデルを指定します。 この手順は省略可能です。マイニング構造のみをテストすることもできます。

  • トレーニング済みモデルをテストするためのパラメーターを指定します。

    • 予測可能な属性、予測値、精度のしきい値。

    • 構造データまたはモデルデータを分割する際の折りたたみ数。

  • Analysis Services は、フォールドの数と同じ数のモデルを作成してトレーニングします。

  • Analysis Services は、各モデルの各フォールドまたはデータセット全体の精度メトリックのセットを返します。

クロス検証の構成

クロス検証の動作方法をカスタマイズして、断面の数、テストされるモデル、予測の精度バーを制御できます。 クロス検証ストアド プロシージャを使用する場合は、モデルの検証に使用するデータ セットを指定することもできます。 この豊富な選択肢は、比較して分析する必要があるさまざまな結果のセットを簡単に生成できることを意味します。

このセクションでは、クロス検証を適切に構成するのに役立つ情報を提供します。

パーティション数の設定

パーティションの数を指定すると、作成される一時モデルの数が決まります。 各パーティションについて、データの断面にテスト セットとして使用するフラグが設定され、パーティション内にない残りのデータに対するトレーニングによって新しいモデルが作成されます。 このプロセスは、Analysis Services が指定した数のモデルを作成してテストするまで繰り返されます。 クロス検証に使用できるように指定したデータは、すべてのパーティションに均等に分散されます。

図の例は、3 つのフォールドが指定されている場合のデータの使用方法を示しています。

クロス検証でデータをセグメント化する方法

図のシナリオでは、マイニング構造にはテストに使用されるホールドアウト データ セットが含まれていますが、テスト データ セットはクロス検証に含まれていません。 その結果、トレーニング データ セット内のすべてのデータ (マイニング構造内のデータの 70%) がクロス検証に使用されます。 クロス検証レポートには、各パーティションで使用されたケースの合計数が表示されます。

また、使用するケース全体の数を指定することで、クロス検証中に使用されるデータの量を指定することもできます。 ケースはすべてのフォールドに均等に分散されます。

SQL Server Analysis Services のインスタンスに格納されているマイニング構造の場合、フォールドの数に設定できる最大値は 256 個、またはケース数のいずれか小さい方です。 セッション マイニング構造を使用している場合、フォールドの最大数は 10 です。

フォールドの数を増やすと、フォールドごとにモデルを生成してテストする必要があるため、クロス検証の実行に必要な時間が増加します。 フォールドの数が多すぎると、パフォーマンスの問題が発生する可能性があります。

精度しきい値の設定

状態のしきい値を使用すると、予測の精度バーを設定できます。 各ケースについて、モデルは 予測確率を計算します。これは、予測された状態が正しい確率を意味します。 予測確率が精度バーを超えた場合、予測は正しいとカウントされます。そうでない場合、予測は正しくないとカウントされます。 この値を制御するには 、State Threshold を 0.0 から 1.0 の間の数値に設定します。1 に近い数値は予測の信頼度が高いことを示し、0 に近い数値は予測が true になる可能性が低いことを示します。 状態しきい値の既定値は NULL です。つまり、最も高い確率で予測された状態がターゲット値と見なされます。

状態のしきい値の設定は、モデルの精度のメジャーに影響を与える点に注意してください。 たとえば、テストするモデルが 3 つあるとします。 すべてが同じマイニング構造に基づいており、すべて [Bike Buyer] 列を予測します。 さらに、単一の値 1 を予測する必要があります。つまり、"はい、購入します" という意味です。3 つのモデルは、予測確率が 0.05、0.15、0.8 の予測を返します。 状態のしきい値を 0.10 に設定すると、2 つの予測が正しいとカウントされます。 状態のしきい値を 0.5 に設定すると、1 つのモデルのみが正しい予測を返したとカウントされます。 既定値 null を使用すると、最も可能性の高い予測が正しいとカウントされます。 この場合、3 つの予測はすべて正しいとカウントされます。

しきい値に 0.0 の値を設定できますが、すべての予測が正しいとカウントされるため、値は意味がありません。確率がゼロの予測であっても同様です。 状態のしきい値を誤って 0.0 に設定しないように注意してください。

検証するモデルと列の選択

データ マイニング デザイナーで [クロス検証 ] タブを使用する場合は、最初に一覧から予測可能な列を選択する必要があります。 通常、マイニング構造では多くのマイニング モデルをサポートできますが、すべてが同じ予測可能な列を使用しているわけではありません。 クロス検証を実行すると、同じ予測可能列を使用するモデルのみをレポートに含めることができます。

予測可能な属性を選択するには、[ ターゲット属性 ] をクリックし、一覧から列を選択します。 ターゲット属性が入れ子になった列、または入れ子になったテーブル内の列である場合は、<入れ子テーブル名>(key).<入れ子列>という形式で入れ子列の名前を入力する必要があります。 入れ子になったテーブルから使用される唯一の列がキー列である場合は、 <Nested Table Name>(key) を使用できます。

予測可能な属性を選択すると、Analysis Services は、同じ予測可能な属性を使用するすべてのモデルを自動的にテストします。 ターゲット属性に不連続値が含まれている場合は、予測可能な列を選択した後、必要に応じて、予測する特定の値がある場合にターゲット状態を入力できます。

ターゲット州の選択は、返される指標に影響します。 ターゲット属性 (列名) を指定し、モデルで予測する特定の値を選択しない場合、既定では、モデルは最も可能性の高い状態の予測で評価されます。

クラスタリング モデルでクロス検証を使用する場合、予測可能な列はありません。代わりに、[ターゲット属性] リスト ボックスの一覧から #Cluster を選択します。 このオプションを選択すると、クラスタリング モデルに関連しないその他のオプション ( ターゲット状態など) は無効になります。 Analysis Services は、マイニング構造に関連付けられているすべてのクラスタリング モデルをテストします。

クロス検証用のツール

データ マイニング デザイナーからクロス検証を使用することも、ストアド プロシージャを実行してクロス検証を実行することもできます。

データ マイニング デザイナー ツールを使用してクロス検証を実行する場合は、トレーニングと精度の結果パラメーターを 1 つのダイアログ ボックスで構成できます。 これにより、結果の設定と表示が簡単になります。 1 つのマイニング構造に関連するすべてのマイニング モデルの精度を測定し、結果を HTML レポートですぐに表示できます。 ただし、ストアド プロシージャには、追加されたカスタマイズやプロセスのスクリプト作成機能など、いくつかの利点があります。

データ マイニング デザイナーでのクロス検証

クロス検証を実行するには、SQL Server Management Studio または SQL Server Development Studio の [マイニング精度グラフ] ビューの [ クロス検証 ] タブを使用します。

ユーザー インターフェイスを使用してクロス検証レポートを作成する方法の例については、「 クロス検証レポートの作成」を参照してください。

クロス検証ストアド プロシージャ

高度なユーザーの場合、クロス検証は、完全にパラメーター化されたシステム ストアド プロシージャの形式でも使用できます。 ストアド プロシージャは、SQL Server Management Studio または任意のマネージド コード アプリケーションから SQL Server 2014 Analysis Services (SSAS) のインスタンスに接続することで実行できます。

ストアド プロシージャは、マイニング モデルの種類別にグループ化されます。 1 セットのストアド プロシージャは、クラスタリング モデルでのみ機能します。 ストアド プロシージャの他のセットは、他のマイニング モデルと連携します。

クラスター化または非クラスター化のマイニング モデルの種類ごとに、ストアド プロシージャは 2 つの異なるフェーズでクロス検証を実行します。

パーティション データを分割し、パーティションのメトリックを生成する

最初のフェーズでは、データ セット内で指定した数のパーティションを作成し、各パーティションの精度結果を返すシステム ストアド プロシージャを呼び出します。 その後、Analysis Services は各メトリックについて、パーティションの平均と標準偏差を計算します。

データ セット全体のメトリックを生成する

2 番目のフェーズでは、別のストアド プロシージャのセットを呼び出します。 これらのストアド プロシージャは、データ セットをパーティション分割するのではなく、指定されたデータ セット全体の精度結果を生成します。 既にマイニング構造をパーティション分割して処理している場合は、この 2 つ目のストアド プロシージャ セットを呼び出して結果のみを取得できます。

テスト データの定義

精度を計算するクロス検証ストアド プロシージャ (SystemGetAccuracyResults または SystemGetClusterAccuracyResults) を実行するときに、クロス検証中のテストに使用されるデータのソースを指定できます。 このオプションは、ユーザー インターフェイスでは使用できません。

テスト データ ソースとして、次のいずれかのオプションを指定できます。

  • トレーニング データのみを使用します。

  • 既存のテスト データ セットを含めます。

  • テスト データ セットのみを使用します。

  • 各モデルに既存のフィルターを適用します。

  • トレーニング セット、テスト セット、モデル フィルターの任意の組み合わせ。

テスト データ ソースを指定するには、ストアド プロシージャの DataSet パラメーターに整数値を指定します。 引数の値の一覧については、関連するストアド プロシージャのリファレンス トピックの「解説」セクションを参照してください。

データ マイニング デザイナーでクロス検証レポートを使用して クロス検証 を実行する場合、使用されるデータ セットを変更することはできません。 既定では、各モデルのトレーニング ケースが使用されます。 フィルターがモデルに関連付けられている場合、フィルターが適用されます。

クロス検証の結果

データ マイニング デザイナーを使用すると、これらの結果がグリッドに似た Web ビューアーに表示されます。 クロス検証ストアド プロシージャを使用すると、これらの同じ結果がテーブルとして返されます。

このレポートには、フォールドに分割したときのデータセットの変動性を示す集計と、各フォールドのモデル固有の精度測定の 2 種類のメジャーが含まれています。 次のトピックでは、これらのメトリックの詳細について説明します。

クロス検証の数式

すべての指標をテストの種類別に一覧表示します。 対策の解釈方法について一般的に説明します。

クロス検証レポートの指標

各メジャーを計算するための数式について説明し、各メジャーを適用できる属性の種類を一覧表示します。

クロス検証に関する制限事項

SQL Server Development Studio でクロス検証レポートを使用してクロス検証を実行する場合、テストできるモデルと設定できるパラメーターにはいくつかの制限があります。

  • 既定では、選択したマイニング構造に関連付けられているすべてのモデルがクロス検証されます。 モデルまたはモデルの一覧を指定することはできません。

  • クロス検証は、Microsoft タイム シリーズ アルゴリズムまたは Microsoft シーケンス クラスタリング アルゴリズムに基づくモデルではサポートされていません。

  • クロス検証でテストできるモデルがマイニング構造に含まれていない場合は、レポートを作成できません。

  • マイニング構造にクラスタリング モデルと非クラスタリング モデルの両方が含まれており、 #Cluster オプションを選択しない場合、属性、状態、しきい値の設定がクラスタリング モデルに適していない場合でも、両方の種類のモデルの結果が同じレポートに表示されます。

  • 一部のパラメーター値は制限されています。 たとえば、多数のモデルを生成するとレポートの表示速度が低下する可能性があるため、フォールドの数が 10 を超える場合は警告が表示されます。

複数のマイニング モデルをテストしていて、モデルにフィルターがある場合、各モデルは個別にフィルター処理されます。 クロス検証中にモデルにフィルターを追加したり、モデルのフィルターを変更したりすることはできません。

クロス検証では、構造に関連付けられているすべてのマイニング モデルが既定でテストされるため、一部のモデルにフィルターがあり、そうでないモデルがある場合は、一貫性のない結果が得られます。 同じフィルターを持つモデルのみを比較するには、ストアド プロシージャを使用し、マイニング モデルの一覧を指定する必要があります。 または、フィルターのないマイニング構造テスト セットのみを使用して、一貫性のあるデータ セットがすべてのモデルで使用されるようにします。

ストアド プロシージャを使用してクロス検証を実行する場合は、テスト データのソースを選択する追加のオプションがあります。 データ マイニング デザイナーを使用してクロス検証を実行する場合は、モデルまたは構造に関連付けられているテスト データ セット (存在する場合) を使用する必要があります。 一般に、詳細設定を指定する場合は、クロス検証ストアド プロシージャを使用する必要があります。

クロス検証は、時系列またはシーケンス クラスタリング モデルでは使用できません。 具体的には、KEY TIME 列または KEY SEQUENCE 列を含むモデルをクロス検証に含めることはできません。

クロス検証の詳細、またはマイニング モデルをテストするための関連する方法 (精度チャートなど) については、次のトピックを参照してください。

トピック リンクス
SQL Server Development Studio でクロス検証パラメーターを設定する方法について説明します。 [クロス検証] タブ (マイニング精度グラフ ビュー)
クロス検証によって提供されるメトリックについて説明します クロス検証の数式
クロス検証レポートの形式について説明し、モデルの種類ごとに提供される統計メジャーを定義します。 クロス検証レポートの指標
クロス検証統計を計算するためのストアド プロシージャを一覧表示します。 データ マイニング ストアド プロシージャ (Analysis Services - データ マイニング)
マイニング構造と関連モデルのテスト データ セットを作成する方法について説明します。 データ セットのトレーニングとテスト
その他の精度グラフの種類の例を参照してください。 分類マトリックス (Analysis Services - データ マイニング)

リフト チャート (Analysis Services - データ マイニング)

利益チャート (Analysis Services - データ マイニング)

散布図 (Analysis Services - データマイニング)
さまざまな精度グラフを作成する手順について説明します。 テストと検証のタスクと操作方法 (データ マイニング)

こちらもご覧ください

テストと検証 (データ マイニング)