データ マイニング モデルに対してクエリを作成する場合は、モデルに格納されている情報に関する詳細を提供するコンテンツ クエリを作成するか、モデル内のパターンを使用して、指定した新しいデータに基づいて予測を行う予測クエリを作成できます。 シーケンス クラスタリング モデルの場合、コンテンツ クエリは通常、検出されたクラスターまたはそれらのクラスター内の遷移に関する追加の詳細を提供します。 クエリを使用して、モデルに関するメタデータを取得することもできます。
シーケンス クラスタリング モデルに対する予測クエリは、通常、シーケンスと遷移、モデルに含まれていた非シーケンス属性、またはシーケンス属性と非シーケンス属性の組み合わせに基づいて推奨事項を作成します。
このセクションでは、Microsoft シーケンス クラスタリング アルゴリズムに基づくモデルのクエリを作成する方法について説明します。 クエリの作成に関する一般的な情報については、「 データ マイニング クエリ」を参照してください。
コンテンツ クエリ
データ マイニング スキーマ行セットを使用してモデル パラメーターを返す
予測クエリ
シーケンス クラスタリング モデルに関する情報の検索
マイニング モデルのコンテンツに対して意味のあるクエリを作成するには、モデル コンテンツの構造と、どのような種類の情報を格納するノードの種類を理解する必要があります。 詳細については、「 シーケンス クラスタリング モデルのマイニング モデル コンテンツ (Analysis Services - データ マイニング)」を参照してください。
サンプル クエリ 1: データ マイニング スキーマ行セットを使用してモデル パラメーターを返す
データ マイニング スキーマ行セットに対してクエリを実行すると、基本メタデータ、モデルが作成されて最後に処理された日時、モデルの基になっているマイニング構造の名前、予測可能な属性として使用される列など、モデルに関するさまざまな種類の情報を見つけることができます。
次のクエリは、モデルの構築とトレーニングに使用されたパラメーターを返します ( [Sequence Clustering]
)。 このモデルは、 基本的なデータ マイニング チュートリアルのレッスン 5 で作成できます。
SELECT MINING_PARAMETERS
from $system.DMSCHEMA_MINING_MODELS
WHERE MODEL_NAME = 'Sequence Clustering'
結果の例:
マイニングパラメータ |
---|
CLUSTER_COUNT=15,MINIMUM_SUPPORT=10,MAXIMUM_STATES=100,MAXIMUM_SEQUENCE_STATES=64 |
このモデルは、CLUSTER_COUNTの既定値の 10 を使用して構築されていることに注意してください。 CLUSTER_COUNTに 0 以外のクラスター数を指定すると、アルゴリズムはこの数を検索するクラスターの概数のヒントとして扱います。 ただし、分析の過程で、アルゴリズムによって検出されるクラスターの数が増減する場合があります。 この場合、アルゴリズムでは、15 個のクラスターがトレーニング データに最適であることが判明しました。 そのため、完成したモデルのパラメーター値の一覧は、モデルの作成時に渡された値ではなく、アルゴリズムによって決定されたクラスターの数を報告します。
この動作は、アルゴリズムで最適なクラスター数を決定させることとどのように異なりますか? 実験として、同じデータを使用する別のクラスタリング モデルを作成できますが、CLUSTER_COUNTを 0 に設定します。 これを行うと、アルゴリズムによって 32 個のクラスターが検出されます。 したがって、CLUSTER_COUNTに既定値の 10 を使用すると、結果の数が制限されます。
クラスターの数を減らすと、ほとんどのユーザーがデータ内のグループを参照して理解しやすくなるため、既定では 10 の値が使用されます。 ただし、各モデルとデータ セットは異なります。 さまざまな数のクラスターを試して、最も正確なモデルを生成するパラメーター値を確認できます。
サンプル クエリ 2: 状態のシーケンスの一覧を取得する
マイニング モデル コンテンツには、トレーニング データ内で見つかったシーケンスが最初の状態として格納され、関連するすべての 2 番目の状態の一覧と組み合わせて格納されます。 最初の状態はシーケンスのラベルとして使用され、関連する 2 番目の状態は遷移と呼ばれます。
たとえば、次のクエリは、シーケンスがクラスターにグループ化される前に、モデルの最初の状態の完全な一覧を返します。 このリストを取得するには、モデル ルート ノードが親 (PARENT_UNIQUE_NAME = 0) であるシーケンスの一覧 (NODE_TYPE = 13) を返します。 FLATTENED キーワードを使用すると、結果が読みやすくなります。
注
列名「PARENT_UNIQUE_NAME」、「サポート」、および「確率」を、同じ名前の予約済みキーワードと区別するために、角かっこで囲む必要があります。
SELECT FLATTENED NODE_UNIQUE_NAME,
(SELECT ATTRIBUTE_VALUE AS [Product 1],
[Support] AS [Sequence Support],
[Probability] AS [Sequence Probability]
FROM NODE_DISTRIBUTION) AS t
FROM [Sequence Clustering].CONTENT
WHERE NODE_TYPE = 13
AND [PARENT_UNIQUE_NAME] = 0
結果の一部 :
ノード_ユニーク_ネーム | 製品 1 | シーケンスのサポート | シーケンス確率 |
---|---|---|---|
1081327 | 行方不明 | 0 | ####### |
1081327 | All-Purpose バイクスタンド | 十七 | 0.00111 |
1081327 | 自転車洗浄 | 64 | 0.00418 |
1081327 | (行 4 ~ 36 は省略) | ||
1081327 | ウィメンズ マウンテン ショーツ | 506 | 0.03307 |
モデル内のシーケンスの一覧は、常にアルファベット順に昇順で並べ替えられます。 シーケンスの順序付けは、シーケンスの順序番号を調べることで関連する遷移を見つけることができるので重要です。
Missing
値は常に遷移 0 です。
たとえば、前の結果では、製品 "ウィメンズ マウンテン ショーツ" はモデルのシーケンス番号 37 です。 その情報を使用して、"ウィメンズ マウンテン ショーツ" の後に購入したすべての製品を表示できます。
これを行うには、まず、前のクエリでNODE_UNIQUE_NAMEに返された値を参照して、モデルのすべてのシーケンスを含むノードの ID を取得します。 この値を親ノードの ID としてクエリに渡して、このノードに含まれる遷移のみを取得します。このノードには、モデルのシーケンスの一覧が含まれます。 ただし、特定のクラスターの遷移の一覧を表示する場合は、クラスター ノードの ID を渡し、そのクラスターに関連付けられているシーケンスのみを表示できます。
SELECT NODE_UNIQUE_NAME
FROM [Sequence Clustering].CONTENT
WHERE NODE_DESCRIPTION = 'Transition row for sequence state 37'
AND [PARENT_UNIQUE_NAME] = '1081327'
結果の例:
NODE_UNIQUE_NAME |
---|
1081365 |
この ID で表されるノードには、"Women's Mountain Shorts" 製品に続くシーケンスの一覧と、サポート値と確率値が含まれています。
SELECT FLATTENED
(SELECT ATTRIBUTE_VALUE AS Product2,
[Support] AS [P2 Support],
[Probability] AS [P2 Probability]
FROM NODE_DISTRIBUTION) AS t
FROM [Sequence Clustering].CONTENT
WHERE NODE_UNIQUE_NAME = '1081365'
結果の例:
t.プロダクト2 | t.P2 サポート | t.P2 確率 |
---|---|---|
行方不明 | 230.7419 | 0.456012 |
クラシック ベスト | 8.16129 | 0.016129 |
サイクリングキャップ | 60.83871 | 0.120235 |
Half-Finger 手袋 | 30.41935 | 0.060117 |
Long-Sleeve ロゴ ジャージー | 86.80645 | 0.171554 |
レーシング ソックス | 28.93548 | 0.057185 |
Short-Sleeve クラシック ジャージー | 60.09677 | 0.118768 |
ウィメンズ マウンテン ショーツに関連するさまざまなシーケンスのサポートは、モデルでは 506 であることに注意してください。 切り替えのサポート値も 506 まで加算されます。 ただし、数値は整数ではありません。サポートが単に各遷移を含むケースの数を表すと予想される場合は、少し奇妙に思えます。 ただし、クラスターを作成する方法では部分的なメンバーシップが計算されるため、クラスター内の遷移の確率は、その特定のクラスターに属する確率によって重み付けする必要があります。
たとえば、4 つのクラスターがある場合、特定のシーケンスには、クラスター 1 に属する可能性が 40%、クラスター 2 に属する可能性が 30%、クラスター 3 に属する可能性が 20%、クラスター 4 に属する可能性が 10% 場合があります。 移行の可能性が最も高いクラスターがアルゴリズムによって決定された後、クラスター内の確率がクラスター内の確率の前の確率によって重み付けされます。
サンプル クエリ 3: システム ストアド プロシージャの使用
これらのクエリ サンプルから、モデルに格納されている情報が複雑であり、必要な情報を取得するために複数のクエリを作成する必要がある可能性があることを確認できます。 ただし、Microsoft シーケンス クラスタリング ビューアーには、シーケンス クラスタリング モデルに含まれる情報をグラフィカルに参照するための強力なツール セットが用意されており、ビューアーを使用してモデルのクエリとドリルダウンを行うこともできます。
ほとんどの場合、Microsoft シーケンス クラスタリング ビューアーに表示される情報は、Analysis Services システム ストアド プロシージャを使用してモデルのクエリを実行することによって作成されます。 モデル コンテンツに対してデータ マイニング拡張機能 (DMX) クエリを記述して同じ情報を取得できますが、Analysis Services システム ストアド プロシージャは、探索やモデルのテストに便利なショートカットを提供します。
注
システム ストアド プロシージャは、サーバーと、Analysis Services サーバーとの対話に Microsoft が提供するクライアントによる内部処理に使用されます。 したがって、Microsoft は、いつでも変更する権利を留保します。 ここでは便宜上説明していますが、運用環境での使用はサポートされていません。 運用環境での安定性と互換性を確保するには、常に DMX を使用して独自のクエリを記述する必要があります。
このセクションでは、システム ストアド プロシージャを使用してシーケンス クラスタリング モデルに対するクエリを作成する方法のサンプルをいくつか示します。
クラスター プロファイルとサンプル ケース
[クラスター プロファイル] タブには、モデル内のクラスターの一覧、各クラスターのサイズ、クラスターに含まれる状態を示すヒストグラムが表示されます。 同様の情報を取得するためにクエリで使用できるシステム ストアド プロシージャは 2 つあります。
GetClusterProfile
は、クラスターのNODE_DISTRIBUTIONテーブルに含まれるすべての情報を含むクラスターの特性を返します。GetNodeGraph
は、シーケンス クラスタリング ビューの最初のタブに表示される内容に対応する、クラスターの数学的グラフ表現を構築するために使用できるノードとエッジを返します。 ノードはクラスターであり、エッジは重みまたは強度を表します。
次の例は、システム ストアド プロシージャ ( GetClusterProfiles
) を使用して、モデル内のすべてのクラスターをそれぞれのプロファイルと共に返す方法を示しています。 このストアド プロシージャは、モデル内のプロファイルの完全なセットを返す一連の DMX ステートメントを実行します。 ただし、このストアド プロシージャを使用するには、モデルのアドレスを知っている必要があります。
CALL System.Microsoft.AnalysisServices.System.DataMining.Clustering.GetClusterProfiles('Sequence Clustering', 2147483647, 0)
次の例では、システム ストアド プロシージャ GetNodeGraph
を使用して、クラスター 12 という特定のクラスターのプロファイルを取得し、クラスター ID (通常はクラスター名の番号と同じ) を指定する方法を示します。
CALL System.Microsoft.AnalysisServices.System.DataMining.Clustering.GetNodeGraph('Sequence Clustering','12',0)
次のクエリに示すように、クラスター ID を省略すると、 GetNodeGraph
はすべてのクラスター プロファイルの順序付けされたフラット化された一覧を返します。
CALL System.Microsoft.AnalysisServices.System.DataMining.Clustering.GetNodeGraph('Sequence Clustering','',0)
[ クラスター プロファイル] タブには、モデル サンプル ケースのヒストグラムも表示されます。 これらのサンプル ケースは、モデルの理想化されたケースを表します。 これらのケースは、トレーニング データと同じ方法でモデルに格納されません。モデルのサンプル ケースを取得するには、特別な構文を使用する必要があります。
SELECT * FROM [Sequence Clustering].SAMPLE_CASES WHERE IsInNode('12')
詳細については、「 SELECT FROM <model>」を参照してください。SAMPLE_CASES (DMX)。
クラスターの特性とクラスターの識別
[ クラスターの特性 ] タブには、各クラスターの主な属性が確率でランク付けされます。 クラスターに属するケースの数と、クラスター内のケースの分布を確認できます。各特性には、特定のサポートがあります。 特定のクラスターの特性を確認するには、クラスターの ID を知っている必要があります。
次の例では、システム ストアド プロシージャ ( GetClusterCharacteristics
) を使用して、指定されたしきい値 0.0005 を超える確率スコアを持つクラスター 12 のすべての特性を返します。
CALL System.Microsoft.AnalysisServices.System.DataMining.Clustering.GetClusterCharacteristics('Sequence Clustering','12',0.0005)
すべてのクラスターの特性を返すには、クラスター ID を空のままにします。
CALL System.Microsoft.AnalysisServices.System.DataMining.Clustering.GetClusterCharacteristics('Sequence Clustering','',0.0005)
次の例では、システム ストアド プロシージャ GetClusterDiscrimination
を呼び出して、クラスター 1 とクラスター 12 の特性を比較します。
CALL System.Microsoft.AnalysisServices.System.DataMining.Clustering.GetClusterDiscrimination('Sequence Clustering','1','12',0.0005,true)
DMX で独自のクエリを作成して 2 つのクラスターを比較する場合、またはクラスターとその補数を比較する場合は、まず 1 つの特性セットを取得してから、関心のある特定のクラスターの特性を取得し、2 つのセットを比較する必要があります。 このシナリオはより複雑で、通常はクライアントの処理が必要です。
状態と遷移
Microsoft シーケンス クラスタリングの [ 状態遷移 ] タブでは、バックエンドで複雑なクエリを実行して、さまざまなクラスターの統計を取得して比較します。 これらの結果を再現するには、より複雑なクエリといくつかのクライアント処理が必要です。
ただし、「コンテンツ クエリ」セクションの例 2 で説明されている DMX クエリを使用して、シーケンスまたは個々の遷移の確率と状態を取得できます。
モデルを使用して予測を行う
シーケンス クラスタリング モデルの予測クエリでは、他のクラスタリング モデルで使用される多くの予測関数を使用できます。 さらに、特別な予測関数 PredictSequence (DMX) を使用して、推奨事項を作成したり、次の状態を予測したりすることもできます。
サンプル クエリ 4: 次の状態を予測する
PredictSequence (DMX) 関数を使用すると、値を指定して、次に最も可能性の高い状態を予測できます。 また、複数の次の状態を予測することもできます。たとえば、顧客が購入する可能性が高い上位 3 つの製品の一覧を返して、推奨事項の一覧を表示できます。
次のサンプル クエリは、上位 5 つの予測とその確率を返すシングルトン予測クエリです。 モデルには入れ子になったテーブルが含まれているため、予測を行うときは、入れ子になったテーブル [v Assoc Seq Line Items]
を列参照として使用する必要があります。 また、値を入力として指定する場合は、入れ子になった SELECT ステートメントで示されているように、case テーブルと入れ子になったテーブル列の両方を結合する必要があります。
SELECT FLATTENED PredictSequence([v Assoc Seq Line Items], 7)
FROM [Sequence Clustering]
NATURAL PREDICTION JOIN
(SELECT (SELECT 1 as [Line Number],
'All-Purpose Bike Stand' as [Model]) AS [v Assoc Seq Line Items])
AS t
結果の例:
Expression.$Sequence | 式.行番号 | Expression.Model |
---|---|---|
1 | サイクリングキャップ | |
2 | サイクリングキャップ | |
3 | Sport-100 | |
4 | Long-Sleeve ロゴ ジャージー | |
5 | Half-Finger 手袋 | |
6 | All-Purpose バイクスタンド | |
7 | All-Purpose バイクスタンド |
クエリは常にケース テーブルの列を返すので、1 つの列しか期待しない場合でも、結果には 3 つの列があります。 ここでは結果がフラット化されます。それ以外の場合、クエリは 2 つの入れ子になったテーブル列を含む 1 つの列を返します。
$sequence列は、予測結果を並べ替えるために PredictSequence
関数によって既定で返される列です。
[Line Number]
列は、モデル内のシーケンス キーと一致する必要がありますが、キーは出力されません。
興味深いことに、All-Purpose 自転車スタンドの後に予測される上位のシーケンスは、サイクリングキャップとサイクリングキャップです。 これはエラーではありません。 データが顧客に提示される方法と、モデルのトレーニング時のグループ化方法に応じて、この種のシーケンスを持つことは非常に可能です。 たとえば、顧客がサイクリング キャップ (赤) と別のサイクリング キャップ (青) を購入したり、数量を指定する方法がない場合は 2 つ連続して購入したりする場合があります。
行 6 と 7 の値はプレースホルダーです。 予測結果を終了するのではなく、可能な遷移のチェーンの最後に達すると、入力として渡された値が結果に追加されます。 たとえば、予測の数を 20 に増やした場合、行 6 から 20 の値はすべて同じになります。自転車スタンド All-Purpose。
関数リスト
すべての Microsoft アルゴリズムでは、共通の関数セットがサポートされています。 ただし、Microsoft シーケンス クラスタリング アルゴリズムでは、次の表に示す追加の関数がサポートされています。
予測関数 | 使用方法 |
クラスター (DMX) | 入力ケースを含む可能性が最も高いクラスターを返します。 |
ClusterDistance (DMX) | 指定したクラスターからの入力ケースの距離、またはクラスターが指定されていない場合は、最も可能性の高いクラスターからの入力ケースの距離を返します。 この関数は、任意の種類のクラスタリング モデル (EM、K-Means など) で使用できますが、結果はアルゴリズムによって異なります。 |
ClusterProbability (DMX) | 入力ケースが指定したクラスターに属している確率を返します。 |
IsInNode (DMX) | 指定したノードに現在のケースが含まれているかどうかを示します。 |
PredictAdjustedProbability (DMX) | 指定した状態の調整された確率を返します。 |
PredictAssociation (DMX) | 関連メンバーシップを予測します。 |
PredictCaseLikelihood (DMX) | 入力ケースが既存のモデルに収まる可能性を返します。 |
PredictHistogram (DMX) | 特定の列の予測のヒストグラムを表すテーブルを返します。 |
PredictNodeId (DMX) | ケースが分類されるノードのNode_IDを返します。 |
PredictProbability (DMX) | 指定した状態の確率を返します。 |
PredictSequence (DMX) | 指定したシーケンス データのセットの将来のシーケンス値を予測します。 |
PredictStdev (DMX) | 指定した列の予測標準偏差を返します。 |
PredictSupport (DMX) | 指定した状態のサポート値を返します。 |
PredictVariance (DMX) | 指定した列の分散を返します。 |
すべての Microsoft アルゴリズムに共通する関数の一覧については、「 一般的な予測関数 (DMX)」を参照してください。 特定の関数の構文については、「 データ マイニング拡張機能 (DMX) 関数リファレンス」を参照してください。
こちらもご覧ください
データ マイニング クエリ
Microsoft シーケンス クラスタリング アルゴリズムテクニカル リファレンス
Microsoft シーケンス クラスタリング アルゴリズム
シーケンス クラスタリング モデルのマイニング モデル コンテンツ (Analysis Services - データ マイニング)