次の方法で共有


クラスタリング モデル クエリの例

データ マイニング モデルに対してクエリを作成する場合は、モデルに関するメタデータを取得したり、分析で検出されたパターンに関する詳細を提供するコンテンツ クエリを作成したりできます。 または、モデル内のパターンを使用して新しいデータの予測を行う予測クエリを作成することもできます。 クエリの種類ごとに異なる情報が提供されます。 たとえば、コンテンツ クエリでは、検出されたクラスターに関する追加の詳細が提供されるのに対し、予測クエリでは、新しいデータ ポイントが属する可能性が最も高いクラスターを示す場合があります。

このセクションでは、Microsoft クラスタリング アルゴリズムに基づくモデルのクエリを作成する方法について説明します。

コンテンツ クエリ

DMX を使用したモデル メタデータの取得

スキーマ行セットからのモデル メタデータの取得

クラスターまたはクラスターの一覧を返す

クラスターの属性を返す

システム ストアド プロシージャを使用したクラスター プロファイルの返し

クラスターの判別要因の検索

クラスターに属するケースを返す

予測クエリ

クラスタリング モデルからの結果の予測

クラスター メンバーシップの決定

確率と距離を持つ可能性のあるすべてのクラスターを返す

モデルに関する情報の検索

すべてのマイニング モデルは、標準化されたスキーマであるマイニング モデル スキーマ行セットに従って、アルゴリズムによって学習されたコンテンツを公開します。 データ マイニング拡張機能 (DMX) ステートメントを使用して、マイニング モデル スキーマ行セットに対するクエリを作成できます。 SQL Server 2014 では、スキーマ行セットのクエリをシステム テーブルとして直接実行することもできます。

トップに戻る

サンプル クエリ 1: DMX を使用したモデル メタデータの取得

次のクエリは、基本的なデータ マイニング チュートリアルで作成したクラスタリング モデル ( TM_Clustering) に関する基本的なメタデータを返します。 クラスタリング モデルの親ノードで使用できるメタデータには、モデルの名前、モデルが格納されているデータベース、モデル内の子ノードの数が含まれます。 このクエリでは、DMX コンテンツ クエリを使用して、モデルの親ノードからメタデータを取得します。

SELECT MODEL_CATALOG, MODEL_NAME, NODE_CAPTION,   
NODE_SUPPORT, [CHILDREN_CARDINALITY], NODE_DESCRIPTION  
FROM TM_Clustering.CONTENT  
WHERE NODE_TYPE = 1  

同じ名前の多次元式 (MDX) の予約キーワードと区別するために、列名 CHILDREN_CARDINALITY を角かっこで囲んでください。

結果の例:

モデルカタログ TM_クラスタリング
MODEL_NAME Adventure Works DW
ノードキャプション クラスター モデル
ノードサポート 12939
子供の基数 10
ノードの説明 全て

クラスタリング モデルでのこれらの列の意味の定義については、「クラスタリング モデルの マイニング モデル コンテンツ (Analysis Services - データ マイニング)」を参照してください。

トップに戻る

サンプル クエリ 2: スキーマ行セットからモデル メタデータを取得する

データ マイニング スキーマ行セットに対してクエリを実行すると、DMX コンテンツ クエリで返されるのと同じ情報を見つけることができます。 ただし、スキーマ行セットには追加の列がいくつか用意されています。 これには、モデルの作成時に使用されたパラメーター、モデルが最後に処理された日時、およびモデルの所有者が含まれます。

次の例では、モデルが作成、変更、最後に処理された日付と、モデルの構築に使用されたクラスタリング パラメーター、およびトレーニング セットのサイズを返します。 この情報は、モデルを文書化したり、既存のモデルの作成に使用されたクラスタリング オプションを特定したりするのに役立ちます。

SELECT MODEL_NAME, DATE_CREATED, LAST_PROCESSED, PREDICTION_ENTITY, MINING_PARAMETERS   
from $system.DMSCHEMA_MINING_MODELS  
WHERE MODEL_NAME = 'TM_Clustering'  

結果の例:

MODEL_NAME TMクラスタリング
作成日 2007 年 10 月 12 日午後 7:42:51
最終処理済み 2007 年 10 月 12 日午後 8:09:54
予測エンティティ 自転車購入者
マイニングパラメータ CLUSTER_COUNT=10,

CLUSTER_SEED=0,

CLUSTERING_METHOD=1,

MAXIMUM_INPUT_ATTRIBUTES=255,

MAXIMUM_STATES=100,

最小サポート=1

MODELLING_CARDINALITY=10,

SAMPLE_SIZE=50000,

停止許容値=10

トップに戻る

クラスターに関する情報の検索

クラスタリング モデルで最も便利なコンテンツ クエリは、通常、 クラスター ビューアーを使用して参照できるのと同じ種類の情報を返します。 これには、クラスター プロファイル、クラスターの特性、クラスターの識別が含まれます。 このセクションでは、この情報を取得するクエリの例を示します。

サンプル クエリ 3: クラスターまたはクラスターの一覧を返す

すべてのクラスターのノード タイプは 5 であるため、その種類のノードに対してのみモデル コンテンツのクエリを実行することで、クラスターの一覧を簡単に取得できます。 この例に示すように、確率またはサポートによって返されるノードをフィルター処理することもできます。

SELECT NODE_NAME, NODE_CAPTION ,NODE_SUPPORT, NODE_DESCRIPTION  
FROM TM_Clustering.CONTENT  
WHERE NODE_TYPE = 5 AND NODE_SUPPORT > 1000  

結果の例:

ノード名 002
ノードキャプション クラスター 2
ノードサポート 1649
ノードの説明 English Education=Graduate Degree 、32 <=年齢 <=48 、所有車両数=0 、35964.0771121808 <=年間収入 <=97407.7163393957 、English 職業=Professional 、通勤距離=2-5 マイル 、地域=北米 、自転車購入者=1 、子供が家にいる数=0 、所有車両数=1 、通勤距離=0-1 マイル 、English Education=Bachelors 、子供の合計数=1 、子供が家にいる数=2 、English 職業=Skilled Manual 、婚姻状況=S 、子供の合計数=0 、持家フラグ=0 、性別=F 、子供の合計数=2 、地域=太平洋

クラスターを定義する属性は、データ マイニング スキーマ行セットの 2 つの列にあります。

  • NODE_DESCRIPTION列には、属性のコンマ区切りのリストが含まれています。 属性の一覧は、表示目的で省略される場合があることに注意してください。

  • NODE_DISTRIBUTION列の入れ子になったテーブルには、クラスターの属性の完全な一覧が含まれています。 クライアントが階層行セットをサポートしていない場合は、SELECT 列リストの前に FLATTENED キーワードを追加することで、入れ子になったテーブルを返すことができます。 FLATTENED キーワードの使用方法の詳細については、「 SELECT FROM <model>」を参照してください。CONTENT (DMX)

トップに戻る

サンプル クエリ 4: クラスターの属性を返す

クラスター ビューアー には、すべてのクラスターについて、属性とその値を一覧表示するプロファイルが表示されます。 ビューアーには、モデル内のケースの母集団全体の値の分布を示すヒストグラムも表示されます。 ビューアーでモデルを参照している場合は、マイニング凡例からヒストグラムを簡単にコピーし、Excel または Word 文書に貼り付けることができます。 ビューアーの [クラスターの特性] ウィンドウを使用して、さまざまなクラスターの属性をグラフィカルに比較することもできます。

ただし、一度に複数のクラスターの値を取得する必要がある場合は、モデルのクエリを実行する方が簡単です。 たとえば、モデルを参照すると、上位 2 つのクラスターが 1 つの属性 ( Number Cars Owned) に関して異なることがあります。 そのため、各クラスターの値を抽出する必要があります。

SELECT TOP 2 NODE_NAME,   
(SELECT ATTRIBUTE_VALUE, [PROBABILITY] FROM NODE_DISTRIBUTION WHERE ATTRIBUTE_NAME = 'Number Cars Owned')  
AS t  
FROM [TM_Clustering].CONTENT  
WHERE NODE_TYPE = 5  

コードの最初の行では、上位 2 つのクラスターのみが必要であることを指定します。

既定では、クラスターはサポート順に並べ替えされます。 したがって、NODE_SUPPORT列は省略できます。

コードの 2 行目では、入れ子になったテーブル列から特定の列のみを返すサブ select ステートメントが追加されます。 さらに、入れ子になったテーブルの行は、ターゲット属性に関連する行に制限 Number Cars Owned。 表示を簡略化するために、入れ子になったテーブルの別名が付けられます。

入れ子になったテーブル列 PROBABILITYは、予約済みの MDX キーワードの名前でもあるため、角かっこで囲む必要があります。

結果の例:

ノード名 T.ATTRIBUTE_VALUE T.確率
001 2 0.829207754
001 1 0.109354156
001 3 0.034481552
001 4 0.013503302
001 0 0.013453236
001 行方不明 0
002 0 0.576980023
002 1 0.406623939
002 2 0.016380082
002 3 1.60E-05
002 4 0
002 行方不明 0

トップに戻る

サンプル クエリ 5: システム ストアド プロシージャを使用してクラスター プロファイルを返す

ショートカットとして、DMX を使用して独自のクエリを記述するのではなく、Analysis Services がクラスターの操作に使用するシステム ストアド プロシージャを呼び出すこともできます。 次の例は、内部ストアド プロシージャを使用して、ID が 002 のクラスターのプロファイルを返す方法を示しています。

CALL System.Microsoft.AnalysisServices.System.DataMining.Clustering.GetClusterProfiles('TM_Clustering", '002',0.0005  

同様に、システム ストアド プロシージャを使用して、次の例に示すように、特定のクラスターの特性を返すことができます。

CALL System.Microsoft.AnalysisServices.System.DataMining.Clustering.GetClusterCharacteristics('TM_Clustering", '009',0.0005  

結果の例:

属性 価値観 頻度 支援
自宅で子どもの数を増やす 0 0.999999829076798 899
リージョン 北アメリカ 0.999852875241508 899
子の合計数 0 0.993860958572323 893

データ マイニング システムのストアド プロシージャは内部で使用するため、Microsoft は必要に応じて変更する権利を留保します。 運用環境で使用する場合は、DMX、AMO、または XMLA を使用してクエリを作成することをお勧めします。

トップに戻る

サンプル クエリ 6: クラスターの判別要因を見つける

クラスター ビューアーの [クラスターの識別] タブを使用すると、クラスターを別のクラスターと簡単に比較したり、クラスターを残りのすべてのケース (クラスターの補完) と比較したりできます。

ただし、この情報を返すクエリの作成は複雑な場合があり、一時的な結果を格納し、2 つ以上のクエリの結果を比較するために、クライアントで追加の処理が必要になる場合があります。 ショートカットとして、システム ストアド プロシージャを使用できます。

次のクエリは、ノード ID が 009 と 007 の 2 つのクラスター間の主な判別要因を示す 1 つのテーブルを返します。 正の値を持つ属性はクラスター 009 を優先し、負の値を持つ属性はクラスター 007 を優先します。

CALL System.Microsoft.AnalysisServices.System.DataMining.Clustering.GetClusterDiscrimination('TM_Clustering','009','007',0.0005,true)  

結果の例:

属性 価値観 スコア
リージョン 北アメリカ 100
英語関連の職業 熟練したマニュアル 94.9003803898654
リージョン ヨーロッパ -72.5041051379789
英語に関連する職業 マニュアル -69.6503163202722

これは、最初のドロップダウン リストからクラスター 9 を選択し、2 番目のドロップダウン リストからクラスター 7 を選択した場合に、クラスター 識別 ビューアーのグラフに表示されるのと同じ情報です。 クラスター 9 とその補数を比較するには、次の例に示すように、2 番目のパラメーターで空の文字列を使用します。

CALL System.Microsoft.AnalysisServices.System.DataMining.Clustering.GetClusterDiscrimination('TM_Clustering','009','',0.0005,true)  

データ マイニング システムのストアド プロシージャは内部で使用するため、Microsoft は必要に応じて変更する権利を留保します。 運用環境で使用する場合は、DMX、AMO、または XMLA を使用してクエリを作成することをお勧めします。

トップに戻る

サンプル クエリ 7: クラスターに属するケースを返す

マイニング モデルでドリルスルーが有効になっている場合は、モデルで使用されるケースに関する詳細情報を返すクエリを作成できます。 さらに、マイニング構造でドリルスルーが有効になっている場合は、 StructureColumn (DMX) 関数を使用して、基になる構造の列を含めることができます。

次の例では、モデルで使用された 2 つの列 (Age と Region) と、モデルで使用されなかったもう 1 つの列 (First Name) が返されます。 このクエリは、クラスター 1 に分類されたケースのみを返します。

SELECT [Age], [Region], StructureColumn('First Name')  
FROM [TM_Clustering].CASES  
WHERE IsInNode('001')  

クラスターに属するケースを返すには、クラスターの ID を知っている必要があります。 いずれかのビューアーでモデルを参照することで、クラスターの ID を取得できます。 または、クラスターの名前を変更して参照しやすくすることができます。その後、ID 番号の代わりに名前を使用できます。 ただし、モデルが再処理されると、クラスターに割り当てる名前が失われることを認識してください。

トップに戻る

モデルを使用した予測の作成

クラスタリングは通常、データの記述と理解に使用されますが、Microsoft の実装では、クラスター メンバーシップに関する予測を行い、予測に関連付けられている確率を返すこともできます。 このセクションでは、クラスタリング モデルに対して予測クエリを作成する方法の例を示します。 表形式のデータ ソースを指定して複数のケースの予測を行ったり、シングルトン クエリを作成して一度に新しい値を指定したりできます。 わかりやすくするために、このセクションの例はすべてシングルトン クエリです。

DMX を使用して予測クエリを作成する方法の詳細については、「 データ マイニング クエリ インターフェイス」を参照してください。

トップに戻る

サンプル クエリ 8: クラスタリング モデルからの結果の予測

作成するクラスタリング モデルに予測可能な属性が含まれている場合は、モデルを使用して結果に関する予測を行うことができます。 ただし、予測可能な列を Predict に設定するか、 PredictOnlyに設定するかによって、モデルによって予測可能な属性の処理方法が異なります。 列の使用法を Predict に設定すると、その属性の値がクラスタリング モデルに追加され、完成したモデルに属性として表示されます。 ただし、列の使用法を PredictOnly に設定した場合、値はクラスターの作成には使用されません。 代わりに、モードが完了すると、クラスタリング アルゴリズムは、各ケースが属するクラスターに基づいて、 PredictOnly 属性の新しい値を作成します。

次のクエリでは、モデルに 1 つの新しいケースが提供されます。ケースに関する唯一の情報は年齢と性別です。 SELECT ステートメントは、関心のある予測可能な属性と値のペアを指定し、 PredictProbability (DMX) 関数は、これらの属性のケースが対象の結果を持つ確率を示します。

SELECT  
  [TM_Clustering].[Bike Buyer], PredictProbability([Bike Buyer],1)  
FROM  
  [TM_Clustering]  
NATURAL PREDICTION JOIN  
(SELECT 40 AS [Age],  
  'F' AS [Gender]) AS t  

使用状況が Predict に設定されている場合の結果の例:

自転車購入者 表現
1 0.592924735740338

使用状況が PredictOnly に設定され、モデルが再処理されたときの結果の例:

自転車購入者 表現
1 0.55843544003102

この例では、モデルの違いは重要ではありません。 ただし、値の実際の分布とモデルが予測する内容の違いを検出することが重要な場合があります。 PredictCaseLikelihood (DMX) 関数は、モデルを考えるとケースの可能性を示すので、このシナリオで役立ちます。

PredictCaseLikelihood 関数によって返される数値は確率であるため、常に 0 から 1 の間であり、値 .5 はランダムな結果を表します。 したがって、スコアが .5 未満の場合は、モデルを指定すると、予測されたケースの可能性が低いことを意味し、5 を超えるスコアは、予測されたケースがモデルに適合しないよりも可能性が高いことを示します。

たとえば、次のクエリは、新しいサンプル ケースの可能性を示す 2 つの値を返します。 正規化されていない値は、現在のモデルに与えられた確率を表します。 NORMALIZED キーワードを使用する場合、関数によって返される尤度スコアは、"確率とモデル" を "モデルなしの確率" で割ることによって調整されます。

SELECT  
PredictCaseLikelihood(NORMALIZED) AS [NormalizedValue], PredictCaseLikelihood(NONNORMALIZED) AS [NonNormalizedValue]  
FROM  
  [TM_Clustering_PredictOnly]  
NATURAL PREDICTION JOIN  
(SELECT 40 AS [Age],  
  'F' AS [Gender]) AS t  

結果の例:

正規化値 非正規化値
5.56438372679893E-11 8.65459953145182E-68

これらの結果の数値は科学的表記で表されることに注意してください。

トップに戻る

サンプル クエリ 9: クラスター メンバーシップの決定

この例では、 クラスター (DMX) 関数を使用して、新しいケースが属する可能性が最も高いクラスターを返し、 ClusterProbability (DMX) 関数を使用してそのクラスターのメンバーシップの確率を返します。

SELECT Cluster(), ClusterProbability()  
FROM  
  [TM_Clustering]  
NATURAL PREDICTION JOIN  
(SELECT 40 AS [Age],  
  'F' AS [Gender],  
  'S' AS [Marital Status]) AS t  

結果の例:

$CLUSTER 表現
クラスター 2 0.397918596951617

手記 既定では、 ClusterProbability 関数は最も可能性の高いクラスターの確率を返します。 ただし、構文 ClusterProbability('cluster name')を使用して、別のクラスターを指定できます。 これを行う場合は、各予測関数の結果が他の結果から独立していることに注意してください。 したがって、2 番目の列の確率スコアは、最初の列で指定されたクラスターとは異なるクラスターを参照する可能性があります。

トップに戻る

サンプル クエリ 10: 確率と距離を持つ可能性のあるすべてのクラスターを返す

前の例では、確率スコアはあまり高くなっていません。 より優れたクラスターがあるかどうかを判断するには、 PredictHistogram (DMX) 関数を Cluster (DMX) 関数と共に使用して、可能なすべてのクラスターを含む入れ子になったテーブルと、各クラスターに属する新しいケースの確率を返すことができます。 FLATTENED キーワードは、見やすくするために階層行セットをフラット テーブルに変更するために使用されます。

SELECT FLATTENED PredictHistogram(Cluster())  
From  
  [TM_Clustering]  
NATURAL PREDICTION JOIN  
(SELECT 40 AS [Age],  
  'F' AS [Gender],  
  'S' AS [Marital Status])  
Expression.$CLUSTER Expression.$DISTANCE Expression.$PROBABILITY
クラスター 2 0.602081403048383 0.397918596951617
クラスター 10 0.719691686785675 0.280308313214325
クラスター 4 0.867772590378791 0.132227409621209
クラスター 5 0.931039872200985 0.0689601277990149
クラスター 3 0.942359230072167 0.0576407699278328
クラスター 6 0.958973668972756 0.0410263310272437
クラスター 7 0.979081275926724 0.0209187240732763
クラスター 1 0.999169044818624 0.000830955181376364
クラスター 9 0.999831227795894 0.000168772204105754
クラスター 8 1 0

既定では、結果は確率でランク付けされます。 結果から、クラスター 2 の確率はかなり低くても、クラスター 2 が新しいデータ ポイントに最適であることが示されます。

手記 追加の列 $DISTANCEは、データ ポイントからクラスターまでの距離を表します。 既定では、Microsoft クラスタリング アルゴリズムはスケーラブルな EM クラスタリングを使用します。このクラスタリングでは、各データ ポイントに複数のクラスターが割り当てられ、可能なクラスターがランク付けされます。 ただし、K-Means アルゴリズムを使用してクラスタリング モデルを作成する場合、各データ ポイントに割り当てることができるクラスターは 1 つだけであり、このクエリでは 1 つの行のみが返されます。 PredictCaseLikelihood (DMX) 関数の結果を解釈するには、これらの違いを理解する必要があります。 EM と K 平均クラスタリングの違いの詳細については、「 Microsoft クラスタリング アルゴリズムテクニカル リファレンス」を参照してください

トップに戻る

関数リスト

すべての Microsoft アルゴリズムでは、共通の関数セットがサポートされています。 ただし、Microsoft クラスタリング アルゴリズムを使用して構築されたモデルでは、次の表に示す追加の関数がサポートされています。

予測関数 使用方法
クラスター (DMX) 入力ケースを含む可能性が最も高いクラスターを返します。
ClusterDistance (DMX) 指定したクラスターからの入力ケースの距離、またはクラスターが指定されていない場合は、最も可能性の高いクラスターからの入力ケースの距離を返します。

入力ケースが指定したクラスターに属している確率を返します。
ClusterProbability (DMX) 入力ケースが指定したクラスターに属している確率を返します。
IsDescendant (DMX) 1 つのノードがモデル内の別のノードの子であるかどうかを判断します。
IsInNode (DMX) 指定したノードに現在のケースが含まれているかどうかを示します。
PredictAdjustedProbability (DMX) 加重確率を返します。
PredictAssociation (DMX) 連想データセットのメンバーシップを予測します。
PredictCaseLikelihood (DMX) 入力ケースが既存のモデルに収まる可能性を返します。
PredictHistogram (DMX) 現在の予測値に関連する値のテーブルを返します。
PredictNodeId (DMX) 各ケースのNode_IDを返します。
PredictProbability (DMX) 予測値の確率を返します。
PredictStdev (DMX) 指定した列の予測標準偏差を返します。
PredictSupport (DMX) 指定した状態のサポート値を返します。
PredictVariance (DMX) 指定した列の分散を返します。

特定の関数の構文については、「 データ マイニング拡張機能 (DMX) 関数リファレンス」を参照してください

こちらもご覧ください

データ マイニング クエリ
Microsoft クラスタリング アルゴリズムテクニカル リファレンス
Microsoft クラスタリング アルゴリズム