コンテンツ クエリ (データ マイニング)

コンテンツ クエリは、マイニング モデルの内部統計と構造に関する情報を抽出する方法です。 コンテンツ クエリで、ビューアーですぐに使用できない詳細を提供できる場合があります。 コンテンツ クエリの結果を使用して、他の用途のためにプログラムで情報を抽出することもできます。

このセクションでは、コンテンツ クエリを使用して取得できる情報の種類に関する一般的な情報と、コンテンツ クエリの一般的な DMX 構文について説明します。

基本的なコンテンツ クエリ

例

クエリ結果の操作

基本的なコンテンツ クエリ

予測クエリ ビルダーを使用してコンテンツ クエリを作成したり、SQL Server Management Studio で提供される DMX コンテンツ クエリ テンプレートを使用したり、DMX で直接クエリを記述したりできます。 予測クエリとは異なり、外部データを結合する必要がないため、コンテンツ クエリは簡単に記述できます。

このセクションでは、作成できるコンテンツ クエリの種類の概要について説明します。

  • マイニング構造またはケース データに対するクエリを使用すると、トレーニングに使用された詳細なデータを表示できます。

  • モデルに対するクエリでは、パターン、属性の一覧、数式などを返すことができます。

構造データとケース データに対するクエリ

DMX では、マイニング構造とモデルの構築に使用されるキャッシュされたデータに対するクエリがサポートされます。 既定では、このキャッシュはマイニング構造を定義するときに作成され、構造またはモデルを処理するときに設定されます。

警告

トレーニング セットとテスト セットにデータを分割する必要がある場合、このキャッシュをクリアまたは削除することはできません。 キャッシュがクリアされている場合、ケース データに対してクエリを実行することはできません。

次の例は、ケース データに対するクエリまたはマイニング構造内のデータに対するクエリを作成するための一般的なパターンを示しています。

モデルのすべてのケースを取得する
SELECT FROM <model>.CASES

このステートメントを使用して、モデルの構築に使用されるケース データから指定された列を取得します。 このクエリを実行するには、モデルに対するドリルスルーアクセス許可が必要です。

構造に含まれるすべてのデータを表示する
SELECT FROM <structure>.CASES

このステートメントを使用して、特定のマイニング モデルに含まれていない列を含め、構造に含まれるすべてのデータを表示します。 マイニング構造からデータを取得するには、モデルと構造に対するドリルスルー権限が必要です。

値の範囲を取得する
SELECT DISTINCT RangeMin(<column>), RangeMax(<column>) FROM <model>

このステートメントを使用して、連続列の最小値、最大値、平均、または DISCRETIZED 列のバケットを検索します。

個別の値を取得する
SELECT DISTINCT <column>FROM <model>

このステートメントを使用して、DISCRETE 列のすべての値を取得します。 DISCRETIZED 列にはこのステートメントを使用しないでください。代わりに RangeMin 関数と RangeMax 関数を使用してください。

モデルまたは構造のトレーニングに使用されたケースを見つける
SELECT FROM <mining structure.CASES WHERE IsTrainingCase()

このステートメントを使用して、モデルのトレーニングで使用されたデータの完全なセットを取得します。

モデルまたは構造のテストに使用されるケースを見つける
SELECT FROM <mining structure.CASES WHERE IsTestingCase()

このステートメントを使用して、特定の構造に関連するマイニング モデルをテストするために確保されているデータを取得します。

特定のモデルパターンから基礎データへのドリルスルー
SELECT FROM <model>.CASESWHERE IsTrainingCase() AND IsInNode(<node>)

トレーニング済みモデルから詳細なケース データを取得するには、このステートメントを使用します。 特定のノードを指定する必要があります。たとえば、クラスターのノード ID、デシジョン ツリーの特定の分岐などを知っている必要があります。さらに、このクエリを実行するには、モデルに対するドリルスルーアクセス許可が必要です。

モデル パターン、統計、および属性に関するクエリ

データ マイニング モデルの内容は、多くの目的に役立ちます。 モデル コンテンツ クエリを使用すると、次のことができます。

  • 独自の計算を行う数式または確率を抽出します。

  • アソシエーション モデルの場合は、予測の生成に使用されるルールを取得します。

  • カスタム アプリケーションでルールを使用できるように、特定のルールの説明を取得します。

  • 時系列モデルによって検出された移動平均を表示します。

  • 傾向線の一部のセグメントの回帰式を取得します。

  • 特定のクラスターの一部として識別された顧客に関する実用的な情報を取得します。

次の例は、モデル コンテンツに対するクエリを作成するための一般的なパターンの一部を示しています。

モデルからパターンを取得する
SELECT FROM <model>.CONTENT

このステートメントを使用して、モデル内の特定のノードに関する詳細情報を取得します。 アルゴリズムの種類に応じて、ノードにはルールと数式、サポートと分散の統計情報などを含めることができます。

トレーニング済みモデルで使用される属性を取得する
CALL System.GetModelAttributes(<model>)

このストアド プロシージャを使用して、モデルによって使用された属性の一覧を取得します。 この情報は、たとえば、フィーチャ選択の結果として削除された属性を特定するのに役立ちます。

データ マイニング ディメンションに格納されているコンテンツを取得する
SELECT FROM <model>.DIMENSIONCONTENT

このステートメントを使用して、データ マイニング ディメンションからデータを取得します。

このクエリの種類は、主に内部使用用です。 ただし、すべてのアルゴリズムがこの機能をサポートしているわけではありません。 サポートは、MINING_SERVICES スキーマ行セットのフラグによって示されます。

独自のプラグイン アルゴリズムを開発する場合は、このステートメントを使用して、テスト用のモデルの内容を確認できます。

モデルの PMML 表現を取得する
SELECT * FROM <model>.PMML

モデルを PMML 形式で表す XML ドキュメントを取得します。 すべてのモデルの種類がサポートされているわけではありません。

例示

一部のモデル コンテンツはアルゴリズム全体で標準ですが、コンテンツの一部は、モデルの構築に使用したアルゴリズムによって大きく異なります。 そのため、コンテンツ クエリを作成するときは、モデル内の情報が特定のモデルにとって最も役立つ情報を理解する必要があります。

このセクションでは、アルゴリズムの選択がモデルに格納されている情報の種類にどのように影響するかを示すいくつかの例を示します。 マイニング モデル コンテンツと、各モデルの種類に固有のコンテンツの詳細については、「 マイニング モデル コンテンツ (Analysis Services - データ マイニング)」を参照してください。

例 1: アソシエーション モデルに対するコンテンツ クエリ

ステートメント SELECT FROM <model>.CONTENTは、クエリを実行するモデルの種類に応じて、さまざまな種類の情報を返します。 アソシエーション モデルの場合、重要な情報は ノード タイプです。 ノードは、モデル コンテンツ内の情報のコンテナーに似ています。 関連付けモデルでは、ルールを表すノードのNODE_TYPE値は 8 で、アイテムセットを表すノードのNODE_TYPE値は 7 です。

したがって、次のクエリは上位 10 個のアイテムセットを返し、サポート (既定の順序) でランク付けされます。

SELECT TOP 10 NODE_DESCRIPTION, NODE_PROBABILITY, SUPPORT  
FROM <model>.CONTENT WHERE NODE_TYPE = 7  

次のクエリは、この情報に基づいています。 このクエリでは、3 つの列が返されます。ノードの ID、完全なルール、アイテムセットの右側の製品(アイテムセットの一部として他の製品に関連付けられると予測される製品) です。

SELECT FLATTENED NODE_UNIQUE_NAME, NODE_DESCRIPTION,  
     (SELECT RIGHT(ATTRIBUTE_NAME, (LEN(ATTRIBUTE_NAME)-LEN('Association model name')))   
FROM NODE_DISTRIBUTION  
WHERE LEN(ATTRIBUTE_NAME)>2  
)   
AS RightSideProduct  
FROM [<Association model name>].CONTENT  
WHERE NODE_TYPE = 8   
ORDER BY NODE_SUPPORT DESC  

FLATTENED キーワードは、入れ子になった行セットをフラット化されたテーブルに変換する必要があることを示します。 ルールの右側にある製品を表す属性は、NODE_DISTRIBUTION テーブルに含まれています。したがって、長さが 2 より大きいという要件を追加することで、属性名を含む行のみを取得します。

単純な文字列関数を使用して、3 番目の列からモデルの名前を削除します。 (通常、モデル名の先頭には入れ子になった列の値が付きます)。

WHERE 句は、ルールのみを取得するために、NODE_TYPEの値を 8 にすることを指定します。

その他の例については、「 アソシエーション モデル クエリの例」を参照してください。

例 2: デシジョン ツリー モデルに対するコンテンツ クエリ

デシジョン ツリー モデルは、予測と分類に使用できます。 この例では、モデルを使用して結果を予測しているが、結果を分類するために使用できる要因またはルールを調べる必要があることを前提としています。

デシジョン ツリー モデルでは、ノードはツリーノードとリーフ ノードの両方を表すために使用されます。 各ノードのキャプションには、結果へのパスの説明が含まれています。 そのため、特定の結果のパスをトレースするには、その結果を含むノードを識別し、そのノードの詳細を取得する必要があります。

次の例に示すように、予測クエリで予測関数 PredictNodeId (DMX) を追加して、関連ノードの ID を取得します。

SELECT  Predict([Bike Buyer]), PredictNodeID([Bike Buyer])   
FROM [<decision tree model name>]  
PREDICTION JOIN   
<input rowset>   

結果を含むノードの ID を取得したら、次のように、NODE_CAPTIONを含むコンテンツ クエリを作成することで、予測を説明するルールまたはパスを取得できます。

SELECT NODE_CAPTION  
FROM [<decision tree model name>]   
WHERE NODE_UNIQUE_NAME= '<node id>'  

その他の例については、「 デシジョン ツリー モデルクエリの例」を参照してください。

クエリ結果の操作

例が示すように、コンテンツ クエリは主に表形式の行セットを返しますが、入れ子になった列からの情報を含めることもできます。 返される行セットをフラット化できますが、これにより結果の操作がより複雑になる可能性があります。 特にNODE_DISTRIBUTION ノードの内容は入れ子になっていますが、モデルに関する興味深い情報が含まれています。

階層行セットの使用方法の詳細については、MSDN の OLEDB 仕様を参照してください。

こちらもご覧ください

DMX 選択ステートメントについて
データ マイニング クエリ