レッスン 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)」を参照してください。
SQL Server データ ツール (SSDT) で予測クエリ ビルダーを使用して、予測クエリを作成することもできます。 詳細については、「予測クエリ ビルダーを使用した 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 のチュートリアル」を参照してください。