レッスン 4: マーケット バスケット予測の実行
このレッスンでは、DMX の SELECT ステートメントを使用して、「レッスン 2: Market Basket マイニング構造へのマイニング モデルの追加」で作成したアソシエーション モデルに基づく予測を作成します。DMX の SELECT ステートメントを使用して、PREDICTION JOIN 句を追加することにより、予測クエリを作成します。予測結合の構文の詳細については、「SELECT FROM <model> PREDICTION JOIN (DMX)」を参照してください。
SELECT FROM <model> PREDICTION JOIN 形式の SELECT ステートメントは、次の 3 つの部分から構成されています。
結果セットで返される、マイニング モデル列と予測関数の一覧。この一覧にはソース データからの入力列を含めることもできます。
予測の作成に使用するデータを定義するソース クエリ。たとえば、多数の予測をバッチで作成する場合、ソース クエリで顧客の一覧を取得できます。
マイニング モデル列とソース データ間のマッピング。列の名前が同じ場合は、NATURAL PREDICTION JOIN 構文を使用して列マッピングを省略できます。
予測関数を使用すると、クエリを改良できます。予測関数では、予測が発生する可能性などの追加の情報や、トレーニング データセットでの予測サポートが提供されます。予測関数の詳細については、「関数 (DMX)」を参照してください。
Business Intelligence Development Studio で予測クエリ ビルダを使用して、予測クエリを作成することもできます。詳細については、「予測クエリ ビルダを使用した DMX 予測クエリの作成」を参照してください。
単一 PREDICTION JOIN ステートメント
最初の手順では、SELECT FROM <model> PREDICTION JOIN 構文を使用し、入力値として一連の値を指定することによって、単一クエリを作成します。単一ステートメントの汎用例を次に示します。
SELECT <select list>
FROM [<mining model>]
[NATURAL] PREDICTION JOIN
(SELECT '<value>' AS [<column>],
(SELECT 'value' AS [<nested column>] UNION
SELECT 'value' AS [<nested column>] ...)
AS [<nested table>])
AS [<input alias>]
コードの最初の行では、クエリで返されるマイニング モデルの列を定義し、予測の生成に使用するマイニング モデルの名前を指定します。
SELECT <select list> FROM [<mining model>]
コードの次の行は、実行する操作を示しています。各列に値を指定し、モデルと正確に一致するように列名を入力するため、NATURAL PREDICTION JOIN 構文を使用できます。ただし、列名が異なる場合は、ON 句を追加して、モデルの列と新しいデータの列の間のマッピングを指定する必要があります。
[NATURAL] PREDICTION JOIN
次の行では、追加購入される製品の予測に使用する、ショッピング カート内の製品を定義します。
(SELECT '<value>' AS [<column>],
(SELECT 'value' AS [<nested column>] UNION
SELECT 'value' AS [<nested column>] ...)
AS [<nested table>])
このレッスンの作業
このレッスンでは、次の作業を行います。
既にショッピング カートに入っている製品に基づいて、他に購入される可能性のある製品を予測するクエリを作成します。既定の MINIMUM_PROBABILITY が設定されたマイニング モデルを使用してクエリを作成します。
既にショッピング カートに入っている製品に基づいて、他に購入される可能性のある製品を予測するクエリを作成します。このクエリは、MINIMUM_PROBABILITY が 0.01 に設定された別のモデルに基づきます。アソシエーション モデルにおける MINIMUM_PROBABILITY の既定値は 0.3 であるため、このモデルのクエリは、既定のモデルのクエリよりも多くのアイテムを返します。
既定の MINIMUM_PROBABILITY が設定されたモデルを使用した予測の作成
アソシエーション クエリを作成するには
オブジェクト エクスプローラで、Analysis Services のインスタンスを右クリックし、[新しいクエリ] をポイントして [DMX] をクリックすると、クエリ エディタが開きます。
PREDICTION JOIN ステートメントの汎用例を空のクエリにコピーします。
次の部分を探します。
<select list>
これを次の文字列に置き換えます。
PREDICT([Default Association].[Products],INCLUDE_STATISTICS,3)
ここでは、列名 [Products] だけを含めることも、Predict (DMX) 関数を使用して、アルゴリズムからツリーに返される製品数を制限することもできます。さらに、INCLUDE_STATISTICS を使用して、製品ごとのサポート、確率、および調整済みの確率を返すこともできます。これらの統計は、予測の精度を評価するときに役立ちます。
次の部分を探します。
[<mining model>]
これを次の文字列に置き換えます。
[Default Association]
次の部分を探します。
(SELECT '<value>' AS [<column>], (SELECT 'value' AS [<nested column>] UNION SELECT 'value' AS [<nested column>] ...) AS [<nested table>])
これを次の文字列に置き換えます。
(SELECT (SELECT 'Mountain Bottle Cage' AS [Model] UNION SELECT 'Mountain Tire Tube' AS [Model] UNION SELECT 'Mountain-200' AS [Model]) AS [Products]) AS t
このステートメントでは、UNION ステートメントを使用して、予測された製品と共にショッピング カートに含まれる 3 つの製品を指定します。SELECT ステートメント内の Model 列は、入れ子になった製品テーブル内のモデル列に対応しています。
最終的なステートメントは次のようになります。
SELECT PREDICT([Default Association].[Products],INCLUDE_STATISTICS,3) From [Default Association] NATURAL PREDICTION JOIN (SELECT (SELECT 'Mountain Bottle Cage' AS [Model] UNION SELECT 'Mountain Tire Tube' AS [Model] UNION SELECT 'Mountain-200' AS [Model]) AS [Products]) AS t
[ファイル] メニューで、[名前を付けて DMXQuery1.dmx を保存] をクリックします。
[名前を付けて保存] ダイアログ ボックスで、適切なフォルダを参照して指定し、ファイルに「Association Prediction.dmx」という名前を付けます。
ツール バーの [実行] ボタンをクリックします。
クエリによって、HL Mountain Tire、Fender Set - Mountain、ML Mountain Tire の 3 つの製品が含まれたテーブルが返されます。テーブルには、返された製品が確率の順に表示されます。返された製品のうち、クエリで指定した 3 つの製品と同じショッピング カートに入っている可能性の最も高いものが、テーブルの一番上に表示されます。続いて表示される 2 つは、ショッピング カートに入っている可能性が次に高い製品です。さらに、このテーブルには、予測の精度を表す統計も含まれます。
MINIMUM_PROBABILITY が 0.01 に設定されたマイニング モデルを使用した予測の作成
アソシエーション クエリを作成するには
オブジェクト エクスプローラで、Analysis Services のインスタンスを右クリックし、[新しいクエリ] をポイントして [DMX] をクリックすると、クエリ エディタが開きます。
PREDICTION JOIN ステートメントの汎用例を空のクエリにコピーします。
次の部分を探します。
<select list>
これを次の文字列に置き換えます。
PREDICT([Modified Association].[Products],INCLUDE_STATISTICS,3)
次の部分を探します。
[<mining model>]
これを次の文字列に置き換えます。
[Modified Association]
次の部分を探します。
(SELECT '<value>' AS [<column>], (SELECT 'value' AS [<nested column>] UNION SELECT 'value' AS [<nested column>] ...) AS [<nested table>])
これを次の文字列に置き換えます。
(SELECT (SELECT 'Mountain Bottle Cage' AS [Model] UNION SELECT 'Mountain Tire Tube' AS [Model] UNION SELECT 'Mountain-200' AS [Model]) AS [Products]) AS t
このステートメントでは、UNION ステートメントを使用して、予測された製品と共にショッピング カートに含まれる 3 つの製品を指定します。SELECT ステートメント内の [Model] 列は、入れ子になった製品テーブル内の列に対応しています。
最終的なステートメントは次のようになります。
SELECT PREDICT([Modified Association].[Products],INCLUDE_STATISTICS,3) From [Modified Association] NATURAL PREDICTION JOIN (SELECT (SELECT 'Mountain Bottle Cage' AS [Model] UNION SELECT 'Mountain Tire Tube' AS [Model] UNION SELECT 'Mountain-200' AS [Model]) AS [Products]) AS t
[ファイル] メニューで、[名前を付けて DMXQuery1.dmx を保存] をクリックします。
[名前を付けて保存] ダイアログ ボックスで、適切なフォルダを参照して指定し、ファイルに「Modified Association Prediction.dmx」という名前を付けます。
ツール バーの [実行] ボタンをクリックします。
クエリによって、HL Mountain Tire、Water Bottle、Fender Set - Mountain の 3 つの製品が含まれたテーブルが返されます。テーブルには、これらの製品が確率の順に表示されます。テーブルの一番上に表示されるのは、クエリで指定した 3 つの製品と同じショッピング カートに入っている可能性の最も高い製品です。それ以外は、ショッピング カートに入っている可能性が次に高い製品です。さらに、このテーブルには、予測の精度を表す統計も含まれます。
このクエリの結果を見ると、MINIMUM_PROBABILITY パラメータの値によって結果が異なることがわかります。
これで、マーケット バスケットのチュートリアルの最後の手順が終了します。このチュートリアルでは、同時に購入される可能性がある製品を予測するときに使用できる、モデルのセットを作成しました。
別の予測シナリオで DMX を使用する方法については、「Bike Buyer DMX のチュートリアル」を参照してください。