アソシエーションの予測 (中級者向けデータ マイニング チュートリアル)
モデルの処理が完了したら、モデルに格納されているアソシエーションに関する情報を使用して予測を作成できます。 このレッスンの最後の作業では、作成したアソシエーション モデルに対して予測クエリを作成する方法について学習します。 このレッスンは、予測クエリ ビルダーの使用方法について理解していることを前提に、アソシエーション モデルに対する予測クエリの作成方法について説明します。 予測クエリ ビルダーの使用方法の詳細については、「 データ マイニング クエリ インターフェイス」を参照してください。
単一予測クエリの作成
アソシエーション モデルに対する予測クエリは、次のようなときに、非常に役に立ちます。
以前の購入または関連する購入に基づいて、製品を顧客に勧める。
関連するイベントを検索する。
取引のセット内の、またはそれらにまたがる関係を識別する。
予測クエリを作成するには、まず使用するアソシエーション モデルを選択し、次に入力データを指定します。 値の一覧などの外部データ ソースから入力を得ることも、単一クエリを作成して値を指定することもできます。
このシナリオでは、まずいくつかの単一予測クエリを作成して、予測がどのように機能するかについて確認します。 次に、顧客の現在の購入状況に基づいて提案を行う場合に使用するバッチ予測用のクエリを作成します。
アソシエーション モデルに対する予測クエリを作成するには
[データ マイニング] Designerの [マイニング モデル予測] タブをクリックします。
[ マイニング モデル ] ウィンドウで、[ モデルの選択] をクリックします。 (適切なモデルが既に選択されている場合は、この手順と次の手順をスキップできます)。
[ マイニング モデルの選択 ] ダイアログ ボックスで、マイニング構造の 関連付けを表すノードを展開し、モデルの 関連付けを選択します。 [OK] をクリックします。
ここでは、入力ペインは無視します。
グリッドで、[ ソース ] の下にある空のセルをクリックし、[ 予測関数 ] を選択します。[ フィールド] の下のセルで、 を選択します
PredictAssociation
。Predict 関数を 使用して、関連付けを予測することもできます。 その場合は、テーブル列を引数として受け取る Predict 関数のバージョンを必ず選択してください。
[ マイニング モデル ] ペインで、入れ子になったテーブル
vAssocSeqLineItems
を選択し、グリッド内の関数の [ 抽出条件/引数 ] ボックスにPredictAssociation
ドラッグします。テーブル名と列名をドラッグ アンド ドロップすると、構文エラーを発生させずに複雑なステートメントを作成できます。 ただし、セルの現在の内容が置き換えられます。これには、関数の他の省略可能な引数が
PredictAssociation
含まれます。 その他の引数を表示するには、関数の 2 番目のインスタンスを参照用として一時的にグリッドに追加します。[ 抽出条件/引数 ] ボックスをクリックし、テーブル名の後に次のテキストを入力します。
,3
[ 抽出条件/引数 ] ボックスの完全なテキストは次のようになります。
[Association].[v Assoc Seq Line Items],3
予測クエリ ビルダーの右上隅にある [ 結果 ] ボタンをクリックします。
予想される結果には、 Expression という見出しを持つ 1 つの列が含まれています。 式列には、1 つの列と次の 3 つの行を含む入れ子になったテーブルが含まれています。 入力値を指定していないため、これらの予測は、モデル全体で最も可能性の高い製品のアソシエーションを表します。
モデル |
---|
Women's Mountain Shorts |
Water Bottle |
Touring-3000 |
次に、[ シングルトン クエリ入力 ] ペインを使用して、クエリへの入力として製品を指定し、そのアイテムに関連付けられている可能性が最も高い製品を表示します。
入れ子になったテーブルの入力を使用する単一予測クエリを作成するには
予測クエリ ビルダーの隅にある [ デザイン ] ボタンをクリックして、クエリ作成グリッドに戻ります。
[ マイニング モデル ] メニューの [ シングルトン クエリ] を選択します。
[ マイニング モデル ] ダイアログ ボックスで、[ 関連付け モデル] を選択します。
グリッドで、[ ソース ] の下にある空のセルをクリックし、[ 予測関数 ] を選択します。[ フィールド] の下のセルで、 を選択します
PredictAssociation
。[ マイニング モデル ] ペインで、入れ子になったテーブル
vAssocSeqLineItems
を選択し、グリッド内の関数の [ 抽出条件/引数 ] ボックスにPredictAssociation
ドラッグします。 前の手順と同様に、入れ子になったテーブル名の後に を入力,3
します。[シングルトン クエリ入力] ダイアログ ボックスで、vAssoc Seq Line Items の横にある [値] ボックスをクリックし、[(...)] ボタンをクリックします。
[入れ子になったテーブル入力] ダイアログ ボックスの [キー列] ペインで を選択
Touring Tire
し、[追加] をクリックします。[ 結果 ] ボタンをクリックします。
Touring Tire との関連が最も高い製品の予測が結果として表示されます。
モデル |
---|
Touring Tire Tube |
Sport-100 |
Water Bottle |
ただし、Touring Tire Tube が Touring Tire と一緒に購入されることが多いのは、モデルの調査から既にわかっています。それよりも関心があるのは、これらの製品を同時に購入した顧客にどの製品を提案できるかということです。 買い物かごに入っている 2 つの商品を基に関連する製品を予測するように、クエリを変更します。 また、予測された製品ごとに確率を追加するようにクエリを変更します。
単一予測クエリに入力と確率を追加するには
予測クエリ ビルダーの隅にある [ デザイン ] ボタンをクリックして、クエリ作成グリッドに戻ります。
[シングルトン クエリ入力] ダイアログ ボックスで、vAssoc Seq Line Items の横にある [値] ボックスをクリックし、[(...)] ボタンをクリックします。
[ キー列 ] ウィンドウで、 を選択
Touring Tire
し、 [ 追加] をクリックします。グリッドで、[ ソース ] の下にある空のセルをクリックし、[ 予測関数 ] を選択します。[ フィールド] の下のセルで、 を選択します
PredictAssociation
。[ マイニング モデル ] ペインで、入れ子になったテーブル
vAssocSeqLineItems
を選択し、グリッド内の関数の [ 抽出条件/引数 ] ボックスにPredictAssociation
ドラッグします。 前の手順と同様に、入れ子になったテーブル名の後に を入力,3
します。[入れ子になったテーブル入力] ダイアログ ボックスの [キー列] ペインで を選択
Touring Tire Tube
し、[追加] をクリックします。グリッドの関数の行
PredictAssociation
で、[ 抽出条件/引数 ] ボックスをクリックし、引数を変更して引数を追加INCLUDE_STATISTICS。[ 抽出条件/引数 ] ボックスの完全なテキストは次のようになります。
[Association].[v Assoc Seq Line Items], INCLUDE_STATISTICS, 3
[ 結果 ] ボタンをクリックします。
入れ子になったテーブル内の結果が変更され、予測がサポートおよび確率と共に表示されます。 これらの値を解釈する方法の詳細については、「 関連付けモデルのマイニング モデル コンテンツ (Analysis Services - データ マイニング)」を参照してください。
モデル | $SUPPORT | $PROBABILITY | $ADJUSTEDPROBABILITY |
---|---|---|---|
Sport-100 | 4334 | 0.291... | 0.252... |
Water Bottle | 2866 | 0.192... | 0.175... |
パッチ キット | 2113 | 0.142... | 0.132 |
結果の操作
結果に多数の入れ子になったテーブルが含まれている場合は、結果をフラット化して見やすくすることができます。 そのためには、クエリを手動で変更し、FLATTENED
キーワードを追加します。
予測クエリで入れ子になった行セットをフラット化するには
予測クエリ ビルダーの隅にある [SQL ] ボタンをクリックします。
グリッドが開いたペインに変わり、予測クエリ ビルダーで作成された DMX ステートメントを表示および変更できるようになります。
SELECT
キーワードの後に、「FLATTENED
」と入力します。クエリの全テキストは次のようになります。
SELECT FLATTENED PredictAssociation([Association].[v Assoc Seq Line Items],INCLUDE_STATISTICS,3) FROM [Association] NATURAL PREDICTION JOIN (SELECT (SELECT 'Touring Tire' AS [Model] UNION SELECT 'Touring Tire Tube' AS [Model]) AS [v Assoc Seq Line Items]) AS t
予測クエリ ビルダーの右上隅にある [ 結果 ] ボタンをクリックします。
クエリを手動で編集した後に [デザイン] ビューに戻ると、変更が失われることに注意してください。 クエリを保存する場合は、手動で作成した DMX ステートメントをテキスト ファイルにコピーします。 [デザイン] ビューに戻ると、クエリが [デザイン] ビューで有効であった最後のバージョンに戻ります。
複数の予測の作成
過去の購入記録を基に、各顧客に対して最も精度の高い予測を作成するとします。 予測クエリには、顧客 ID と最近購入した製品が記録されているテーブルなどの外部データを入力として使用できます。 その場合は、データ テーブルが Analysis Services データ ソース ビューとして既に定義されていることが条件となります。さらにモデルで使用されているものと同様のケース テーブルと入れ子になったテーブルが入力データに含まれている必要があります。 テーブル名が同じである必要はありませんが、構造は類似している必要があります。 このチュートリアルでは、モデルのトレーニングが行われた元のテーブルを使用します。
予測クエリの入力方法を変更するには
[マイニング モデル] メニューの [シングルトン クエリ] をもう一度選択して、チェックマークをクリアします。
単一クエリが失われることを警告するエラー メッセージが表示されます。 [はい] をクリックします。
入力ダイアログ ボックスの名前が [入力テーブルの選択] に変わります。
顧客 ID と製品一覧を入力として提供する予測クエリを作成することが目的であるため、ケース テーブルとして顧客テーブルを、入れ子になったテーブルとして購入記録テーブルをそれぞれ追加します。 その後に、提案を作成するための予測関数を追加します。
入れ子になったテーブルの入力を使用する予測クエリを作成するには
[マイニング モデル] ペインで、[Association Filtered] モデルを選択します。
[ 入力テーブルの選択 ] ダイアログ ボックスで、[ ケース テーブルの選択] をクリックします。
[ テーブルの選択 ] ダイアログ ボックスの [ データ ソース] で、[AdventureWorksDW2008] を選択します。 [ テーブル/ビュー名] ボックスの一覧で [vAssocSeqOrders] を選択し、[OK] をクリック します。
テーブル vAssocSeqOrders がペインに追加されます。
[ 入力テーブルの選択 ] ダイアログ ボックスで、[ 入れ子になったテーブルの選択] をクリックします。
[ テーブルの選択 ] ダイアログ ボックスの [ データ ソース] で、[AdventureWorksDW2008] を選択します。 [ テーブル/ビュー名 ] ボックスの一覧で [vAssocSeqLineItems] を選択し、[OK] をクリック します。
テーブル vAssocSeqLineItems がペインに追加されます。
[ 入れ子になった結合の指定 ] ダイアログ ボックスで、ケース テーブルから OrderNumber フィールドをドラッグし、入れ子になったテーブルの OrderNumber フィールドにドロップします。
[ リレーションシップの追加 ] をクリックし、一覧から列を選択してリレーションシップを作成することもできます。
[ リレーションシップの指定 ] ダイアログ ボックスで、[OrderNumber] フィールドが正しくマップされていることを確認し、[OK] をクリック します。
[ OK] をクリックして [ 入れ子になった結合の指定 ] ダイアログ ボックスを閉じます。
ケース テーブルと入れ子になったテーブルがデザイン ペインで更新され、外部データの列とモデル内の列を結ぶ結合が表示されます。 リレーションシップが間違っている場合は、結合行を右クリックして [ 接続の変更 ] を選択して列マッピングを編集するか、結合線を右クリックして [削除 ] を選択してリレーションシップを完全に削除できます。
グリッドに新しい行を追加します。 [ ソース] で、 vAssocSeqOrders テーブルを選択します。 [ フィールド] で、[CustomerKey] を選択します。
グリッドに新しい行を追加します。 [ ソース] で、 vAssocSeqOrders テーブルを選択します。 [ フィールド] で[リージョン] を選択します。
グリッドに新しい行を追加します。 [ ソース] で [ 予測関数] を選択し、[ フィールド] で を選択します
PredictAssociation
。vAssocSeqLineItems を行の [抽出条件/引数 ] ボックスに
PredictAssociation
ドラッグします。 [ 抽出条件/引数 ] ボックスの末尾をクリックし、次のテキストを入力します。INCLUDE_STATISTICS,3
[ 抽出条件/引数 ] ボックスの完全なテキストは次のようになります。
[Association].[v Assoc Seq Line Items], INCLUDE_STATISTICS, 3
[ 結果 ] ボタンをクリックして、各顧客の予測を表示します。
同様の予測クエリを複数のモデルに対して作成し、フィルター処理によって予測結果が変わるかどうかを確認してみてください。 予測やその他の種類のクエリの作成の詳細については、「 アソシエーション モデル クエリの例」を参照してください。
参照
アソシエーション モデルのマイニング モデル コンテンツ (Analysis Services - データ マイニング)
PredictAssociation (DMX)
予測クエリ ビルダーを使用した予測クエリの作成