データ マイニング モデルに対してクエリを作成する場合は、コンテンツ クエリを作成して、分析中に検出されたルールとアイテムセットの詳細を提供するか、データで検出された関連付けを使用して予測を行う予測クエリを作成できます。 関連付けモデルの場合、予測は通常、ルールに基づいており、推奨事項を作成するために使用できます。一方、コンテンツに対するクエリでは、通常、アイテムセット間の関係を調べることができます。 モデルに関するメタデータを取得することもできます。
このセクションでは、Microsoft アソシエーション ルール アルゴリズムに基づくモデルに対して、このような種類のクエリを作成する方法について説明します。
コンテンツ クエリ
予測クエリ
モデルに関する情報の検索
すべてのマイニング モデルは、マイニング モデル スキーマ行セットという名前の標準化されたスキーマに従って、アルゴリズムによって学習されたコンテンツを公開します。 マイニング モデル スキーマ行セットに対するクエリは、データ マイニング拡張機能 (DMX) ステートメントを使用するか、Analysis Services ストアド プロシージャを使用して作成できます。 SQL Server 2014 では、SQL に似た構文を使用して、スキーマ行セットをシステム テーブルとして直接クエリすることもできます。
サンプル クエリ 1: DMX を使用したモデル メタデータの取得
次のクエリは、モデルの名前、モデルが格納されているデータベース、モデル内の子ノードの数など、 Association
関連付けモデルに関する基本的なメタデータを返します。 このクエリでは、DMX コンテンツ クエリを使用して、モデルの親ノードからメタデータを取得します。
SELECT MODEL_CATALOG, MODEL_NAME, NODE_CAPTION,
NODE_SUPPORT, [CHILDREN_CARDINALITY], NODE_DESCRIPTION
FROM Association.CONTENT
WHERE NODE_TYPE = 1
注
列の名前 (CHILDREN_CARDINALITY) を角かっこで囲んで、同じ名前の MDX 予約キーワードと区別する必要があります。
結果の例:
モデルカタログ | 関連付けテスト |
MODEL_NAME | 関連付け |
ノードキャプション | 関連付けルールモデル |
ノードサポート | 14879 |
子供の基数 | 942 |
ノードの説明 | アソシエーション ルール モデル;ITEMSET_COUNT=679;RULE_COUNT=263;MIN_SUPPORT=14;MAX_SUPPORT=4334;MIN_ITEMSET_SIZE=0;MAX_ITEMSET_SIZE=3;MIN_PROBABILITY=0.400390625;MAX_PROBABILITY=1;MIN_LIFT=0.14309369632511;MAX_LIFT=1.95758227647523 |
関連付けモデルでのこれらの列の意味の定義については、「関連付けモデルの マイニング モデル コンテンツ (Analysis Services - データ マイニング)」を参照してください。
サンプル クエリ 2: スキーマ行セットから追加のメタデータを取得する
データ マイニング スキーマ行セットに対してクエリを実行すると、DMX コンテンツ クエリで返されるのと同じ情報を見つけることができます。 ただし、スキーマ行セットには、モデルが最後に処理された日付、マイニング構造、予測可能な属性として使用される列の名前など、追加の列がいくつか用意されています。
SELECT MODEL_CATALOG, MODEL_NAME, SERVICE_NAME, PREDICTION_ENTITY,
MINING_STRUCTURE, LAST_PROCESSED
FROM $system.DMSCHEMA_MINING_MODELS
WHERE MODEL_NAME = 'Association'
結果の例:
モデルカタログ | Adventure Works DW 多次元 2012 |
MODEL_NAME | 関連付け |
SERVICE_NAME | アソシエーションルールモデル |
PREDICTION_ENTITY | v Assoc Seq 行項目 |
マイニング構造 | 関連付け |
最終処理済み | 2007 年 9 月 29 日午後 10:21:24 |
サンプル クエリ 3: モデルの元のパラメーターの取得
次のクエリは、モデルの作成時に使用されたパラメーター設定に関する詳細を含む 1 つの列を返します。
SELECT MINING_PARAMETERS
from $system.DMSCHEMA_MINING_MODELS
WHERE MODEL_NAME = 'Association'
結果の例:
MAXIMUM_ITEMSET_COUNT=200000,MAXIMUM_ITEMSET_SIZE=3,MAXIMUM_SUPPORT=1,MINIMUM_SUPPORT=9.40923449156529E-04,MINIMUM_IMPORTANCE=-9999999999,MINIMUM_ITEMSET_SIZE=0,MINIMUM_PROBABILITY=0.4
ルールとアイテムセットに関する情報の検索
関連付けモデルには、頻繁に使用されるアイテムセットに関する情報を検出し、特定のルールとアイテムセットに関する詳細を抽出する 2 つの一般的な用途があります。 たとえば、特に興味深いとスコア付けされたルールの一覧を抽出したり、最も一般的なアイテムセットのリストを作成したりできます。 このような情報は、DMX コンテンツ クエリを使用して取得します。 この情報は、 Microsoft アソシエーション ビューアーを使用して参照することもできます。
サンプル クエリ 4: アイテムセットと製品の一覧を取得する
次のクエリでは、すべてのアイテムセットと、各アイテムセットに含まれる製品を一覧表示する入れ子になったテーブルを取得します。 NODE_NAME列にはモデル内のアイテムセットの一意の ID が含まれますが、NODE_CAPTIONは項目の説明をテキストで提供します。 この例では、入れ子になったテーブルがフラット化され、2 つの製品を含むアイテムセットによって結果に 2 つの行が生成されます。 クライアントが階層データをサポートしている場合は、FLATTENED キーワードを省略できます。
SELECT FLATTENED NODE_NAME, NODE_CAPTION,
NODE_PROBABILITY, NODE_SUPPORT,
(SELECT ATTRIBUTE_NAME FROM NODE_DISTRIBUTION) as PurchasedProducts
FROM Association.CONTENT
WHERE NODE_TYPE = 7
結果の例:
ノード名 | 37 |
ノードキャプション | Sport-100 = 既存 |
NODE_PROBABILITY | 0.291283016331743 |
NODE_SUPPORT (ノードサポート) | 4334 |
PURCHASEDPRODUCTS。ATTRIBUTE_NAME | v Assoc Seq 行項目(Sport-100) |
サンプル クエリ 5: 上位 10 個のアイテムセットを返す
この例では、DMX が既定で提供するグループ化および順序付け関数の一部を使用する方法を示します。 このクエリは、各ノードのサポートによって順序付けされると、上位 10 個のアイテムセットを返します。 Transact-SQL の場合と同様に、結果を明示的にグループ化する必要はありません。ただし、各クエリで使用できる集計関数は 1 つだけです。
SELECT TOP 10 (NODE_SUPPORT),NODE_NAME, NODE_CAPTION
FROM Association.CONTENT
WHERE NODE_TYPE = 7
結果の例:
ノードサポート | 4334 |
ノード名 | 37 |
ノードキャプション | Sport-100 = 既存 |
モデルを使用した予測の作成
アソシエーション ルール モデルは、多くの場合、アイテムセットで検出された相関関係に基づく推奨事項を生成するために使用されます。 そのため、アソシエーション ルール モデルに基づいて予測クエリを作成する場合は、通常、モデル内のルールを使用して、新しいデータに基づいて推測を行います。 PredictAssociation (DMX) は、推奨事項を返す関数であり、クエリ結果をカスタマイズするために使用できるいくつかの引数があります。
アソシエーション モデルに対するクエリが役に立つ可能性があるもう 1 つの例は、さまざまなクロスセル戦略の有効性を比較できるように、さまざまなルールとアイテムセットの信頼度を返す方法です。 次の例は、このようなクエリを作成する方法を示しています。
サンプル クエリ 6: 関連する項目の予測
この例では、 中間データ マイニング チュートリアル (Analysis Services - データ マイニング) で作成した関連付けモデルを使用します。 特定の製品を購入した顧客に推奨する製品を示す予測クエリを作成する方法を示します。 この種類のクエリでは、 SELECT...UNION
ステートメントでモデルに値を指定し、シングルトン クエリと呼びます。 新しい値に対応する予測可能なモデル列は入れ子になったテーブルであるため、1 つの SELECT
句を使用して新しい値を入れ子になったテーブル列にマップし、 [Model]
別の SELECT
句を使用して、入れ子になったテーブル列をケース レベルの列 ( [v Assoc Seq Line Items]
) にマップする必要があります。 クエリにキーワード INCLUDE-STATISTICS を追加すると、推奨事項の確率とサポートを確認できます。
SELECT PredictAssociation([Association].[vAssocSeqLineItems],INCLUDE_STATISTICS, 3)
FROM [Association]
NATURAL PREDICTION JOIN
(SELECT
(SELECT 'Classic Vest' as [Model])
AS [v Assoc Seq Line Items])
AS t
結果の例:
モデル | サポート | $PROBABILITY | $ADJUSTEDPROBABILITY |
---|---|---|---|
Sport-100 | 4334 | 0.291283 | 0.252696 |
水筒 | 2866 | 0.19262 | 0.175205 |
パッチ キット | 2113 | 0.142012 | 0.132389 |
サンプル クエリ 7: 関連アイテムセットの信頼度の決定
ルールはレコメンデーションの生成に役立ちますが、アイテムセットは、データ セット内のパターンをより深く分析する場合に役立ちます。 たとえば、前のサンプル クエリによって返された推奨事項に満足していない場合は、製品 A を含む他のアイテムセットを調べて、製品 A がすべての種類の製品で購入する傾向があるアクセサリであるか、または A が特定の製品の購入と強く関連しているかどうかをよりよく理解できます。 これらの関係を調べる最も簡単な方法は、Microsoft アソシエーション ビューアーでアイテムセットをフィルター処理することです。ただし、クエリを使用して同じ情報を取得できます。
次のサンプルクエリでは、ウォーターボトルを含む単一の項目を含め、ウォーターボトル項目を含むすべてのアイテムセットが返されます。
SELECT TOP 100 FROM
(
SELECT FLATTENED NODE_CAPTION, NODE_SUPPORT,
(SELECT ATTRIBUTE_NAME from NODE_DISTRIBUTION
WHERE ATTRIBUTE_NAME = 'v Assoc Seq Line Items(Water Bottle)') as D
FROM Association.CONTENT
WHERE NODE_TYPE = 7
) AS Items
WHERE [D.ATTRIBUTE_NAME] <> NULL
ORDER BY NODE_SUPPORT DESC
結果の例:
ノードキャプション | NODE_SUPPORT | D.ATTRIBUTE_NAME |
---|---|---|
ウォーター ボトル = 既存 | 2866 | v 結合順序項目 (ウォーターボトル) |
マウンテン ボトル ケージ = 既存、水ボトル = 既存 | 1136 | v Assoc Seq ラインアイテム(水ボトル) |
ロード ボトル ケージ = 既存、水ボトル = 既存 | 1068 | v Assoc Seq 項目(ウォーターボトル) |
ウォーターボトル = 既存、Sport-100 = 既存 | 734 | v Assoc Seq 行アイテム (ウォーターボトル) |
このクエリは、条件に一致する入れ子になったテーブルの行と、外側またはケース テーブルのすべての行の両方を返します。 そのため、ターゲット属性名に null 値を持つ case テーブル行を排除する条件を追加する必要があります。
関数リスト
すべての Microsoft アルゴリズムでは、共通の関数セットがサポートされています。 ただし、Microsoft アソシエーション アルゴリズムでは、次の表に示す追加の関数がサポートされています。
予測関数 | 使用方法 |
IsDescendant (DMX) | 1 つのノードがニューラル ネットワーク グラフ内の別のノードの子であるかどうかを判断します。 |
IsInNode (DMX) | 指定したノードに現在のケースが含まれているかどうかを示します。 |
PredictAdjustedProbability (DMX) | 加重確率を返します。 |
PredictAssociation (DMX) | 連想データセットのメンバーシップを予測します。 |
PredictHistogram (DMX) | 現在の予測値に関連する値のテーブルを返します。 |
PredictNodeId (DMX) | 各ケースのNode_IDを返します。 |
PredictProbability (DMX) | 予測値の確率を返します。 |
PredictSupport (DMX) | 指定した状態のサポート値を返します。 |
PredictVariance (DMX) | 予測値の分散を返します。 |
こちらもご覧ください
Microsoft アソシエーション アルゴリズム
Microsoft アソシエーション アルゴリズムテクニカル リファレンス
関連付けモデルのマイニング モデル コンテンツ (Analysis Services - データ マイニング)