次の方法で共有


データ セットのトレーニングとテスト

データをトレーニング セットとテスト セットに分離することは、データ マイニング モデルの評価の重要な部分です。 通常、データ セットをトレーニング セットとテスト セットに分割すると、ほとんどのデータがトレーニングに使用され、データの小さな部分がテストに使用されます。 Analysis Services は、テスト セットとトレーニング セットが類似していることを確認するために、データをランダムにサンプリングします。 トレーニングとテストに同様のデータを使用することで、データの不一致の影響を最小限に抑え、モデルの特性をより深く理解できます。

トレーニング セットを使用してモデルが処理されたら、テスト セットに対して予測を行ってモデルをテストします。 テスト セット内のデータには、予測する属性の既知の値が既に含まれているため、モデルの推測が正しいかどうかを簡単に判断できます。

データ マイニング構造のテスト セットとトレーニング セットの作成

SQL Server 2014 では、元のデータ セットをマイニング構造のレベルで分離します。 トレーニングおよびテスト データ セットのサイズ、およびどの行がどのセットに属しているかに関する情報は、構造と共に格納され、その構造に基づくすべてのモデルは、トレーニングとテストにセットを使用できます。

マイニング構造に対するテスト データ セットは、次の方法で定義できます。

  • データ マイニング ウィザードを使用して、作成時にマイニング構造を分割します。

  • データ マイニング デザイナーの [ マイニング構造 ] タブでの構造プロパティの変更。

  • Analysis Management オブジェクト (AMO) または XML データ定義言語 (DDL) を使用したプログラムによる構造体の作成と変更。

データ マイニング ウィザードを使用したマイニング構造の分割

既定では、マイニング構造のデータ ソースを定義した後、データ マイニング ウィザードは、モデルのトレーニング用にソース データの 70% を持つセットと、モデルをテストするためのソース データの 30% のセットの 2 つのセットにデータを分割します。 この既定値は、データ マイニングで 70 ~ 30 の比率が使用されることが多いために選択されましたが、Analysis Services では、要件に合わせてこの比率を変更できます。

また、トレーニング ケースの最大数を設定するようにウィザードを構成することも、制限を組み合わせて、指定したケースの最大数までのケースの最大割合を許可することもできます。 ケースの最大割合とケースの最大数の両方を指定すると、Analysis Services では、テスト セットのサイズとして 2 つの制限のうち小さい方が使用されます。 たとえば、テスト ケースに 30% のホールドアウトを指定し、テスト ケースの最大数を 1000 と指定した場合、テスト セットのサイズは 1000 ケースを超えることはありません。 これは、より多くのトレーニング データがモデルに追加された場合でも、テスト セットのサイズが一貫していることを確認する場合に便利です。

異なるマイニング構造に同じデータ ソース ビューを使用し、すべてのマイニング構造とそのモデルでデータがほぼ同じ方法で分割されるようにする場合は、ランダム サンプリングの初期化に使用されるシードを指定する必要があります。 HoldoutSeedの値を指定すると、Analysis Services はその値を使用してサンプリングを開始します。 それ以外の場合、サンプリングでは、マイニング構造の名前にハッシュ アルゴリズムを使用してシード値を作成します。

EXPORTステートメントと IMPORT ステートメントを使用してマイニング構造のコピーを作成すると、エクスポート プロセスによって新しい ID が作成されますが、同じ名前が使用されるため、新しいマイニング構造のトレーニング データセットとテスト データ セットは同じになります。 ただし、2 つのマイニング構造が同じ基になるデータ ソースを使用しているが、名前が異なる場合、マイニング構造ごとに作成されるセットは異なります。

テスト データ セットを作成するための構造体プロパティの変更

マイニング構造を作成して処理し、後でテスト データ セットを確保することを決定した場合は、マイニング構造のプロパティを変更できます。 データのパーティション分割方法を変更するには、次のプロパティを編集します。

プロパティ 説明
HoldoutMaxCases テスト セットに含めるケースの最大数を指定します。
HoldoutMaxPercent テスト セットに含めるケースの数を、完全なデータ セットに対する割合で指定します。 データ・セットを持たない場合は、0 を指定します。
HoldoutSeed パーティションのデータをランダムに選択するときにシードとして使用する整数値を指定します。 この値はトレーニングセット内のケースの数には影響しませんが、代わりにパーティションが繰り返し行われることを保証します。

テスト データ セットを既存の構造に追加または変更する場合は、構造と関連するすべてのモデルを再処理する必要があります。 また、ソース データを分割すると、データの異なるサブセットでモデルがトレーニングされるため、モデルとは異なる結果が表示されることがあります。

プログラムによる保留の指定

DMX ステートメント、AMO、または XML DDL を使用して、マイニング構造のテストおよびトレーニング データ セットを定義できます。 ALTER MINING STRUCTURE ステートメントは、保留パラメーターの使用をサポートしていません。

  • DMX データ マイニング拡張機能 (DMX) 言語では、CREATE MINING STRUCTURE ステートメントが WITH HOLDOUT 句を含むように拡張されました。

  • ASSL Analysis Services スクリプト言語 (ASSL) を使用して、新しいマイニング構造を作成するか、テスト データ セットを既存のマイニング構造に追加できます。

  • AMO AMO を使用して、保留データ セットを表示および変更することもできます。

データ マイニング スキーマ行セットに対してクエリを実行することで、既存のマイニング構造のホールドアウト データ セットに関する情報を表示できます。 これを行うには、DISCOVER ROWSET 呼び出しを行うか、DMX クエリを使用します。

保留データに関する情報の取得

既定では、トレーニング データセットとテスト データ セットに関するすべての情報がキャッシュされるため、既存のデータを使用して新しいモデルをトレーニングしてテストできます。 また、キャッシュされた保留データに適用するフィルターを定義して、データのサブセットに対してモデルを評価することもできます。

ケースをトレーニング データ セットとテスト データ セットに分割する方法は、ホールドアウトを構成する方法と提供するデータによって異なります。 トレーニングまたはテストに使用されるケースの数を決定する場合、またはトレーニング セットとテスト セットに含まれるケースに関する追加の詳細を見つける場合は、DMX クエリを作成してモデル構造にクエリを実行できます。 たとえば、次のクエリは、モデルのトレーニング セットで使用されたケースを返します。

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

テスト ケースのみを取得し、さらにマイニング構造のいずれかの列でテスト ケースをフィルター処理するには、次の構文を使用します。

SELECT * from <structure>.CASES WHERE IsTestCase() AND <structure column name> = '<value>'  

ホールドアウト データの使用に関する制限事項

  • ホールドアウトを使用するには、マイニング構造の MiningStructureCacheMode プロパティを既定値の KeepTrainingCases に設定する必要があります。 CacheMode プロパティを ClearAfterProcessing に変更し、マイニング構造を再処理すると、パーティションは失われます。

  • 時系列モデルからデータを削除することはできません。そのため、ソース データをトレーニング セットとテスト セットに分割することはできません。 マイニング構造とモデルの作成を開始し、Microsoft Time Series アルゴリズムを選択した場合、ホールドアウト データ セットを作成するオプションは無効になります。 また、ケース レベルまたは入れ子になったテーブル レベルでマイニング構造に KEY TIME 列が含まれている場合は、ホールドアウト データの使用も無効になります。

  • 完全なデータ セットがテストに使用され、トレーニング用のデータが残っていないよう、誤ってホールドアウト データ セットを構成する可能性があります。 ただし、その場合、Analysis Services はエラーを発生させ、問題を修正できるようにします。 Analysis Services では、データの 50% 以上がテストのために保留されている場合に、構造が処理されるときに警告も表示されます。

  • ほとんどの場合、既定のホールドアウト値 30 は、トレーニング データとテスト データのバランスを適切に保ちます。 十分なトレーニングを提供するためにデータ セットの大きさを判断する簡単な方法や、トレーニング セットがどれだけスパースであり、オーバーフィットを回避できるかを判断する簡単な方法はありません。 ただし、モデルを構築した後は、クロス検証を使用して、特定のモデルに関してデータセットを評価できます。

  • 前の表に示したプロパティに加えて、読み取り専用プロパティ ( HoldoutActualSize) は AMO および XML DDL で提供されます。 ただし、パーティションの実際のサイズは、構造が処理されるまで正確に決定できないため、 HoldoutActualSize プロパティの値を取得する前に、モデルが処理されているかどうかを確認する必要があります。

トピック リンクス
モデルのフィルターがトレーニング データ セットとテスト データ セットと対話する方法について説明します。 マイニング モデルのフィルター (Analysis Services - データ マイニング)
トレーニング データとテスト データの使用がクロス検証にどのように影響するかを説明します。 クロス検証 (Analysis Services - データ マイニング)
マイニング構造でトレーニング セットとテスト セットを操作するためのプログラム インターフェイスに関する情報を提供します。 AMO の概念とオブジェクト モデル

マイニング構造 要素 (ASSL)
ホールドアウト セットを作成するための DMX 構文を提供します。 マイニング構造の作成 (DMX)
トレーニング セットとテスト セット内のケースに関する情報を取得します。 データ マイニング スキーマ行セット

データ マイニング スキーマ行セットのクエリ (Analysis Services - データ マイニング)

こちらもご覧ください

データ マイニング ツール
データ マイニングの概念
データ マイニング ソリューション
テストと検証 (データ マイニング)