マイニング モデルの精度の測定 (Analysis Services - データ マイニング)

SQL ServerAnalysis Services では、さまざまな方法でマイニング モデルの精度を確認できます。

  • グラフを使用すると、データ マイニング モデルの精度を視覚的に表現できます。リフト チャートは、各モデルの予測の精度を比較します。利益チャートには、各モデルの使用に関連した利益の理論上の増加が表示されます。散布図は、連続する入力を使用して連続属性を予測する回帰モデルなどのモデルで使用され、実際の値と予測された値とを比較します。

  • 分類マトリックスを使用すると、正確な予測と不正確な予測を表にまとめることができます。

  • クロス検証を使用すると、マイニング モデルの信頼性を統計的に検証できます。

詳細については、「モデルの精度をグラフ化するためのツール (Analysis Services - データ マイニング)」を参照してください。このトピックで説明する種類のグラフはいずれも、XML/A や AMO を使用してプログラムで作成することもできます。Analysis Services ソリューションのプログラミングの詳細については、「開発者ガイド (Analysis Services - データ マイニング)」を参照してください。

注意注意

モデルの精度に問題がないことを確認できたら、そのモデルで解決しようとしているビジネス上の問題のコンテキストでモデルの結果を評価する必要があります。

このトピックでは、Business Intelligence Development Studio や SQL Server Management Studio でマイニング モデルの精度を測定するための一般的なワークフローについて説明します。使用するマイニング モデルの種類や選択するグラフによっては、一部のオプションが少し違っていたり、使用できなかったり、既定で構成されていたりする場合もありますが、全体的なプロセスは次のようになります。

  1. テストするモデルまたは構造を選択します。

  2. テスト データを選択します。

  3. 必要に応じて、テスト データにフィルタを適用します。

  4. グラフの種類を選択し、適切なビューアで開きます。

  5. 必要に応じて、グラフをカスタマイズします。

操作手順については、「マイニング モデルの精度チャートを作成する方法」を参照してください。

モデルまたは構造の選択

通常は、各データ マイニング構造に対して複数のデータ マイニング モデルを作成し、各モデルで異なるアルゴリズムやパラメータを使用します。Analysis Services では、複数の関連するマイニング モデルを同じグラフで簡単にテストできます。ただし、1 つのマイニング モデルのみを精度チャートの出力として選択することもできます。

Business Intelligence Development Studio では、マイニング構造を選択して [マイニング精度チャート] タブをクリックすると、精度チャートのデザイン領域が開きます。SQL Server Management Studio では、マイニング構造を右クリックして [リフト チャートの表示] をクリックすると、同じデザイン領域が開いて任意の種類の精度チャートを作成できます。

グラフに複数のマイニング モデルを追加する場合は、同じ予測可能な属性を持つマイニング モデルを選択する必要があります。リフト チャート、利益チャート、散布図、または分類マトリックスを作成する場合は、[入力の選択] タブを使用してどのモデルのグラフを作成するかを選択できます。一方、クロス検証レポートを作成する場合は、同じ予測可能な属性を持つすべてのモデルが Analysis Services によって分析されます。

テスト データの選択

リフト チャート、利益チャート、または散布図を作成する場合は、モデルの評価に使用するデータを先に指定する必要があります。評価に使用するデータは評価結果に大きな影響を与えるので、SQL Server 2008Analysis Services には、テスト データを指定するための以下のオプションが用意されています。

  • データ マイニング構造を作成したときにテスト セットとして定義済みの、提示されたパーティションを使用する。マイニング構造データの一部をテスト データとして使用することで、構造内のすべてのモデルを一貫して測定できます。

  • テスト データとして使用する外部データ ソースを定義する。

  • 外部データ ソースを定義し、フィルタを適用して、データを関連するケースのサブセットに制限する。フィルタを定義することで、特定の条件を満たすテスト データや、特に関連のあるケースを含むテスト データを選択できます。

  • モデルで使用されるトレーニング ケースに適用されるフィルタを使用する。モデル フィルタを定義することで、ケースをデータのサブセットに制限できるほか、特定のモデルが常に類似のデータを使用して評価されるように設定できます。

Business Intelligence Development Studio または SQL Server Management Studio でクロス参照レポートを作成する場合は、提示されたパーティションがモデルに対して定義されていればそれが既定で使用されます。提示されたパーティションが定義されていない場合は、トレーニング ケースのセット全体が使用されます。

Business Intelligence Development Studio または SQL Server Management Studio でリフト チャート、利益チャート、散布図、または分類マトリックスを作成する場合は、データ マイニング デザイナの [マイニング精度チャート] ビューにある [入力の選択] タブを使用して、マイニング モデルのテスト用に使用するデータを指定します。オプションは次のとおりです。

[マイニング モデルのテスト ケースを使用する]

マイニング モデルのテスト ケースは、マイニング構造内の同じデータから取得されますが、テスト用に使用するケースを制限するためのフィルタがモデルに適用されます。モデル フィルタは、作成された後にマイニング モデルと一緒に格納される条件のセットです。フィルタ条件はマイニング モデルと一緒に格納されるので、モデルのトレーニングを行うときに既定で適用されます。モデルをテストするときは、フィルタをそのまま使用する以外に、テスト用の異なるデータのセットを使用してモデル フィルタをバイパスすることができます。マイニング モデルに適用するフィルタを変更する場合は、モデル フィルタを変更した後でモデルを再処理する必要があります。または、モデルのコピーを作成し、そのコピーに対して別のフィルタを作成する方法もあります。

モデル フィルタの詳細については、「マイニング モデルのフィルタの作成 (Analysis Services - データ マイニング)」を参照してください。

マイニング モデルに対してフィルタを作成する方法の詳細については「マイニング モデルにフィルタを適用する方法」を参照してください。

[マイニング構造のテスト ケースを使用する]

このオプションを使用すると、提示される割合または提示用に使用するケースの最大数を定義して、マイニング構造の作成時にテスト データセットを定義していた場合に、精度を測定できます。テスト セットの定義は構造と一緒に保存されます。したがって、対象の構造に基づくすべてのモデルでこのテスト セットを使用できます。

注意注意

マイニング構造の、提示されたデータに対して直接フィルタを作成することはできません。ただし、このデータにフィルタを適用する次善の策として、元のデータ ソース ビューを外部データ ソースとして再利用し、この外部データ ソースにフィルタを適用できます。

詳細については、「トレーニング セットとテスト セットへのデータのパーティション分割 (Analysis Services - データ マイニング)」を参照してください。

[別のデータセットを指定する]

SQL Server 2005 では、外部データセットを使用する方法がマイニング モデルの精度をテストする唯一の方法でした。SQL Server 2008 にもこのオプションが用意されていますが、さらに外部データに対するフィルタを定義できるようになりました。

外部データ ソースを使用するには、入力として使用する外部データの列をマイニング モデル内の列にマッピングする必要があります。一部の列を無視するように選択することもできますが、外部データセットには、マイニング モデルの予測可能列にマッピングできる列が 1 つ以上含まれている必要があります。また、モデルによっては、予測に必要な属性を持つ外部データ内の 1 つまたは複数の列をマッピングする必要があります。

データ マイニング デザイナで、[入力の選択] タブと [列マッピングの指定] ダイアログ ボックスを使用して、モデルの検証の対象となる入力テーブルを選択します。入力テーブルを選択すると、[マイニング構造] テーブルと [入力テーブルの選択] テーブルの列は自動的に一緒にマッピングされます。[マイニング構造] テーブルの列をクリックし、[入力テーブルの選択] テーブルにドラッグすることによって、マッピングを必要に応じて変更できます。入れ子になったテーブルが入力データに含まれている場合は、[入れ子になったテーブルの選択] リンクを使用して、このテーブルも含めることができます。

注意注意

予測可能列は必ずマッピングする必要があります。マッピングされない列は、マイニング モデルに NULL 値として読み込まれます。

対応する列をマップした後、必要に応じて予測可能列の対象の状態を指定できます。予測可能列の状態を空のままにすると、予測可能列の状態にかかわらず、リフト チャートによってモデルのパフォーマンスが予測されます。予測可能列の状態を指定してリフト チャートを作成した場合と、指定せずに作成した場合の違いについては、「リフト チャート (Analysis Services - データ マイニング)」を参照してください。

また、外部データに対するフィルタを作成することもできます。フィルタを作成する方法の詳細については、「精度チャートの入力行をフィルタ選択する方法」を参照してください。

[予測列と値の同期] オプションでは、外部データ ソース内およびマイニング モデル内の予測可能属性を調整して、名前が異なる場合でもモデルのトレーニング時に同じ予測可能列から取得されるようにします。この機能は、たとえば基底のデータが同じでありながら列のラベルが異なる 2 つのマイニング構造列がある場合に便利です。

[予測列と値の同期] チェック ボックスをオフにすると、有効な予測可能列および値を選択でき、その結果に意味がなくても一緒にプロットされます。同じ値のセットに明示的にマップされない 2 つの予測可能な属性を比較する場合は、このオプションをオフにすることができます。ただし、精度に関してこの 2 つの属性が同等であると見なせない場合があることに注意してください。たとえば、年収を "高"、"中"、"低" の区分に分類するモデルは、年収を 1,500 万円以上、500 ~ 1,000 万円、100 ~ 500 万円の範囲にグループ化するモデルと同等と見なすことができます。ただし、このチェック ボックスをオフにする前に、属性が同等であることを確認する必要があります。

詳細情報 :精度チャートの予測可能列を選択する方法」、「データ マイニング ツールの使用

データのフィルタ選択

次の方法を使用して、データ マイニング モデルのトレーニングおよびテストに使用されるデータにフィルタを適用できます。

  • モデルと一緒に格納されるフィルタを作成する。

  • 外部データ ソースにフィルタを適用する。

原則的に、フィルタを定義することは、入力されるデータに対する WHERE 句を作成することです。モデルの評価に使用する入力データセットに対するフィルタ処理では、グラフの作成時にフィルタ式が Transact-SQL ステートメントに変換され、入力テーブルに適用されます。その結果として、テスト ケースの数を大幅に少なくすることができます。

一方、マイニング モデルに対してフィルタを適用する場合、作成したフィルタ式はデータ マイニング拡張機能 (DMX) ステートメントに変換された後、個々のモデルに適用されます。フィルタをモデルに適用すると、モデルをトレーニングするのに元のデータのサブセットのみが使用されます。構造を作成するときにテスト データセットを定義した場合、トレーニングに使用されるモデル ケースには、マイニング構造のトレーニング セット内にあり、かつフィルタの条件を満たすケースのみが含まれます。また、[マイニング モデルのテスト ケースを使用する] オプションを選択した場合、テスト用ケースには、マイニング構造のテスト セット内にあり、かつフィルタの条件を満たすケースのみが含まれます。フィルタ条件は、モデル ケースに対するドリルスルー クエリにも適用されます。

ただし、提示用のデータセットを定義しなかった場合、テスト用のモデル ケースには、フィルタ条件を満たすデータセット内のすべてのケースが含まれます。

したがって、複数のモデルが同じマイニング構造に基づいている場合でも、これらのモデルに対して異なるフィルタを設定でき、その結果、トレーニング用およびテスト用に異なるデータを使用できます。精度チャートを作成するときに [マイニング モデルのテスト ケースを使用する] オプションを選択した場合は、テストするモデルに応じてテスト セットとトレーニング セットの両方のケースの合計数が大きく変化することに注意してください。

注意注意

既存のマイニング モデルにフィルタを追加する場合や、フィルタ条件を変更する場合は、フィルタの効果を適用するためにマイニング モデルを再処理する必要があります。

使用された実際のトレーニング ケースを確認するには、次のような DMX コンテンツ クエリを作成します。

SELECT * from <model>.CASES WHERE IsTrainingCase()

または

SELECT * from <model>.CASES WHERE IsTestCase()

これらのケースを構造内のケースと比較するには、次の DMX コンテンツ クエリを作成します。

SELECT * FROM <structure>.CASES WHERE IsTestCase()
注意注意

モデル ケースに対してコンテンツ クエリを実行するには、モデル上で Drillthough を有効にする必要があります。

適用できるフィルタの種類の詳細や、フィルタ式がどのように評価されるかについては、「モデル フィルターの構文と例 (Analysis Services - データ マイニング)」を参照してください。

グラフの種類の選択とグラフの表示

選択するグラフの種類によっては、さらにオプションを構成したり、グラフを参照したり、グラフをクリップボードにコピーして Excel でデータを操作したりすることができます。

   グラフとその定義は保存されません。グラフが含まれているウィンドウを閉じた場合は、グラフを作成し直す必要があります。

リフト チャート

モデルおよびテスト用データのオプションを構成した後、[リフト チャート] タブをクリックすると、結果が表示されます。グラフをクリップボードにコピーしたり、個々の傾向線やデータ ポイントの詳細をマイニング凡例で確認したりすることもできます。

詳細については、「リフト チャート (Analysis Services - データ マイニング)」および「[リフト チャート] タブ ([マイニング精度チャート] ビュー)」を参照してください。

利益チャート

モデルおよびテスト用データのオプションを構成した後、[リフト チャート] タブをクリックし、[グラフの種類] ボックスの一覧から [利益チャート] を選択します。利益チャートのオプションを設定して [OK] をクリックすると、結果が表示されます。必要に応じて [利益チャートの設定] ダイアログ ボックスを繰り返し使用して、別のコストでグラフを再表示してみることもできます。マイニング凡例には、各モデルの推定利益に関する詳細情報が含まれています。グラフとマイニング凡例の内容をクリップボードにコピーして、Excel で操作することもできます。

詳細については、「利益チャート (Analysis Services - データ マイニング)」および「[利益チャートの設定] ダイアログ ボックス ([マイニング精度チャート] ビュー)」を参照してください。

散布図

適切な種類のモデルが選択されている場合に [リフト チャート] タブをクリックすると、グラフの種類が自動的に [散布図] に設定されて、散布図が表示されます。それ以上の構成はできません。グラフをクリップボードにコピーして、Excel やその他のアプリケーションにグラフィックとして貼り付けることもできます。

詳細については、「散布図 (Analysis Services - データ マイニング)」を参照してください。

分類マトリックス

分類マトリックスの場合は、[入力の選択] タブを使用してモデルおよびテスト用データを選択した後、[分類マトリックス] タブをクリックすると、結果が表示されます。分類マトリックスの内容はすべてのモデルの種類で同じであり、構成することはできません。グラフ内のデータをクリップボードにコピーして、Excel で操作することもできます。

詳細については、「分類マトリックス (Analysis Services - データ マイニング)」または「[分類マトリックス] タブ ([マイニング精度チャート] ビュー)」を参照してください。

クロス検証レポート

クロス検証レポートの場合は、ソリューション エクスプローラでマイニング構造またはマイニング モデルを選択した後、[クロス検証] タブをクリックして、関連するすべてのオプションを構成します。その後、[結果の取得] をクリックすると、レポートが生成されます。それ以上の構成はできません。クロス検証レポートの形式はすべてのモデルの種類で同じであり、構成することはできません。ただし、レポートの内容は、分析するモデルの種類や、予測可能な属性のデータ型によって異なります。レポートの結果をクリップボードにコピーして、データを Excel で操作することもできます。

詳細については、「相互検証 (Analysis Services - データ マイニング)」または「クロス検証レポート (Analysis Services - データ マイニング)」を参照してください。