レッスン 4: マーケット バスケット予測の実行
このレッスンでは、DMX SELECT
ステートメントを使用して、「 レッスン 2: マーケット バスケット マイニング構造へのマイニング モデルの追加」で作成した関連付けモデルに基づいて予測を作成します。 DMX の SELECT
ステートメントを使用して、PREDICTION JOIN
句を追加することにより、予測クエリを作成します。 予測結合の構文の詳細については、「 SELECT FROM <model> PREDICTION JOIN (DMX)」を参照してください。
ステートメント の SELECT FROM <モデル> PREDICTION JOIN 形式には、次の SELECT
3 つの部分が含まれています。
結果セットで返される、マイニング モデル列と予測関数の一覧。 この一覧にはソース データからの入力列を含めることもできます。
予測の作成に使用するデータを定義するソース クエリ。 たとえば、多数の予測をバッチで作成する場合、ソース クエリで顧客の一覧を取得できます。
マイニング モデル列とソース データ間のマッピング。 列の名前が同じ場合は、
NATURAL PREDICTION JOIN
構文を使用して列マッピングを省略できます。
予測関数を使用すると、クエリを改良できます。 予測関数では、予測が発生する可能性などの追加の情報や、トレーニング データセットでの予測サポートが提供されます。 予測関数の詳細については、「 関数 (DMX)」を参照してください。
SQL Server Data Tools (SSDT) の予測クエリ ビルダーを使用して予測クエリを作成することもできます。
単一 PREDICTION JOIN ステートメント
最初の手順では、 SELECT FROM <モデル> 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) 関数を使用すると、アルゴリズムによって返される製品の数を 3 つに制限できます。 さらに、
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 As の保存] をクリックします。
[ 名前を付けて保存 ] ダイアログ ボックスで、適切なフォルダーを参照し、ファイルに という名前を付けます
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 As の保存] をクリックします。
[ 名前を付けて保存 ] ダイアログ ボックスで、適切なフォルダーを参照し、ファイルに という名前を付けます
Modified Association Prediction.dmx
。ツール バーの [ 実行 ] ボタンをクリックします。
クエリによって、HL Mountain Tire、Water Bottle、Fender Set - Mountain の 3 つの製品が含まれたテーブルが返されます。 テーブルには、これらの製品が確率の順に表示されます。 テーブルの一番上に表示されるのは、クエリで指定した 3 つの製品と同じショッピング カートに入っている可能性の最も高い製品です。 それ以外は、ショッピング カートに入っている可能性が次に高い製品です。 このテーブルには、予測の精度を表す統計も含まれています。
このクエリの結果から、 MINIMUM_PROBABILITY パラメーターの値がクエリによって返される結果に影響することを確認できます。
これで、マーケット バスケットのチュートリアルの最後の手順が終了します。 このチュートリアルでは、同時に購入される可能性がある製品を予測するときに使用できる、モデルのセットを作成しました。
別の予測シナリオで DMX を使用する方法については、「 Bike Buyer DMX チュートリアル」を参照してください。