アソシエーション モデルのクエリ (Analysis Services - データ マイニング)

データ マイニング モデルに対するクエリを作成する際には、コンテンツ クエリを作成することも、予測クエリを作成することもできます。コンテンツ クエリでは、分析の間に検出されたルールやアイテムセットの詳細情報を取得できます。予測クエリでは、データ内で検出されたアソシエーションを使用して予測を行うことができます。アソシエーション モデルの場合、予測はルールに基づいて行われるのが一般的で、提案を行うために使用できます。一方、コンテンツ クエリではアイテムセット間の関係を調べるのが一般的です。モデルに関するメタデータを取得することもできます。

ここでは、Microsoft アソシエーション ルール アルゴリズムに基づくモデルに対して以下の種類のクエリを作成する方法について説明します。

  • コンテンツ クエリ

    DMX を使用してモデル メタデータを取得する

    スキーマ行セットから追加のメタデータを取得する

    アイテムセットと製品のリストを取得する

    モデルの元のパラメータを取得する

    上位 10 個のアイテムセットを取得する

  • 予測クエリ

    関連のあるアイテムを予測する

    関連するアイテムセットの信頼度を特定する

モデルに関する情報の入手

すべてのマイニング モデルでは、アルゴリズムによる学習内容が、標準化されたスキーマ (マイニング モデル スキーマ行セット) に従って公開されます。マイニング モデル スキーマ行セットに対するクエリは、データ マイニング拡張機能 (DMX) ステートメントか Analysis Services ストアド プロシージャを使用して作成できます。SQL Server 2008 では、スキーマ行セットがシステム テーブルとして公開されるため、Transact-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_CATALOG

Association Test

MODEL_NAME

Association

NODE_CAPTION

Association Rules Model

NODE_SUPPORT

14879

CHILDREN_CARDINALITY

942

NODE_DESCRIPTION

Association Rules Model; 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'

例の結果を次に示します。

MODEL_CATALOG

AdventureWorks DW

MODEL_NAME

Association

SERVICE_NAME

Association Rules Model

PREDICTION_ENTITY

v Assoc Seq Line Items

MINING_STRUCTURE

Association

LAST_PROCESSED

9/29/2007 10:21:24 PM

トップに戻る

サンプル クエリ 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=-999999999,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

例の結果を次に示します。

NODE_NAME

37

NODE_CAPTION

Sport-100 = Existing

NODE_PROBABILITY

0.291283016331743

NODE_SUPPORT

4334

PURCHASEDPRODUCTS.ATTRIBUTE_NAME

v Assoc Seq Line Items(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

例の結果を次に示します。

NODE_SUPPORT

4334

NODE_NAME

37

NODE_CAPTION

Sport-100 = Existing

モデルを使用した予測

アソシエーション ルール モデルは、アイテムセットで検出された相関関係に基づく提案を生成するためによく使用されます。したがって、アソシエーション ルール モデルに基づく予測クエリを作成する際には、そのモデルのルールを使用して新しいデータに基づく推測を行うのが一般的です。PredictAssociation (DMX) は提案を返す関数であり、クエリ結果をカスタマイズするために使用できるいくつかの引数が用意されています。

アソシエーション モデルに対するクエリは、そのほか、異なるクロスセル戦略の効果を比較できるようにさまざまなルールやアイテムセットの信頼度を取得するためにも使用できます。以降の例は、このようなクエリの作成方法を示しています。

トップに戻る

サンプル クエリ 6 : 関連のあるアイテムを予測する

この例では、「基本的なデータ マイニング チュートリアル」で作成したアソシエーション モデルを使用しています。この例は、特定の製品を購入した顧客に対してどの製品を提案すればよいかを示す予測クエリの作成方法を示しています。このクエリのように、SELECT...UNION ステートメントでモデルに値を渡す種類のクエリを、単一クエリと呼びます。新しい値に対応する予測可能なモデル列は入れ子になったテーブルなので、2 つの SELECT 句を使用して、新しい値を入れ子になったテーブルの列 ([Model]) にマップし、入れ子になったテーブルの列をケース レベルの列 ([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

例の結果を次に示します。

Model

$SUPPORT

$PROBABILITY

$ADJUSTEDPROBABILITY

Sport-100

4334

0.291283

0.252696

Water Bottle

2866

0.19262

0.175205

Patch kit

2113

0.142012

0.132389

トップに戻る

サンプル クエリ 7 : 関連するアイテムセットの信頼度を特定する

提案を生成するにはルールが便利ですが、データセット内のパターンをより深く分析するためにはアイテムセットの方が興味深い対象であると言えます。たとえば、前のサンプル クエリで返された提案が満足できるものでなかった場合、Product A を含む他のアイテムセットを調べると、Product A があらゆる種類の製品と一緒に購入されるような付属品なのか、それとも特定の製品の購入との間に強い相関関係があるのかがわかります。これらの関係は、Microsoft アソシエーション ビューアでアイテムセットにフィルタを適用することによって簡単に調べることができますが、同じ情報をクエリで取得することもできます。

次のサンプル クエリは、Water Bottle というアイテムを含むすべてのアイテムセットを、単一のアイテムの Water Bottle も含めて返します。

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_CAPTION

NODE_SUPPORT

D.ATTRIBUTE_NAME

Water Bottle = Existing

2866

v Assoc Seq Line Items(Water Bottle)

Mountain Bottle Cage = Existing, Water Bottle = Existing

1136

v Assoc Seq Line Items(Water Bottle)

Road Bottle Cage = Existing, Water Bottle = Existing

1068

v Assoc Seq Line Items(Water Bottle)

Water Bottle = Existing, Sport-100 = Existing

734

v Assoc Seq Line Items(Water Bottle)

入れ子になったテーブルを含むクエリを作成すると、条件に一致した入れ子になったテーブルの行だけでなく、外部テーブル (ケース テーブル) のすべての行も返されます。そのため、この例では WHERE 句を追加して、対象の属性名が NULL 値になっているケース テーブル行を除外しています。

関数一覧

すべての Microsoft アルゴリズムでは、共通の関数セットがサポートされています。ただし、Microsoft アソシエーション アルゴリズムでは、次の表のような追加の関数がサポートされています。

変更履歴

変更内容

クエリ サンプルを簡単に確認できるようにトピック内のリンクを追加しました。