このレッスンでは、DMX SELECT
ステートメントを使用して、「 レッスン 2: マーケット バスケット マイニング構造へのマイニング モデルの追加」で作成したアソシエーション モデルに基づいて予測を作成します。 予測クエリは、DMX SELECT
ステートメントを使用し、 PREDICTION JOIN
句を追加することによって作成されます。 予測結合の構文の詳細については、「 SELECT FROM <model> PREDICTION JOIN (DMX)」を参照してください。
SELECT
ステートメントの SELECT FROM <model> PREDICTION JOIN 形式には、次の 3 つの部分が含まれています。
結果セットで返されるマイニング モデル列と予測関数の一覧。 このリストには、ソース データからの入力列を含めることもできます。
予測の作成に使用されるデータを定義するソース クエリ。 たとえば、バッチで多数の予測を作成する場合、ソース クエリは顧客の一覧を取得できます。
マイニング モデル列とソース データ間のマッピング。 列名が一致する場合は、
NATURAL PREDICTION JOIN
構文を使用し、列マッピングを省略できます。
予測関数を使用してクエリを拡張できます。 予測関数は、予測が発生する確率や、トレーニング データセットでの予測のサポートなど、追加情報を提供します。 予測関数の詳細については、「 関数 (DMX)」を参照してください。
SQL Server Data Tools (SSDT) の予測クエリ ビルダーを使用して、予測クエリを作成することもできます。
Singleton 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) 関数を使用すると、アルゴリズムによって返される製品の数を 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]
列は、入れ子になった products テーブルの列に対応します。これで、完全なステートメントは次のようになります。
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 パラメーターの値がクエリによって返される結果に影響を与えることがわかります。
これは、Market Basket チュートリアルの最後の手順です。 これで、顧客が同時に購入する可能性のある製品を予測するために使用できる一連のモデルが作成されました。
別の予測シナリオで DMX を使用する方法については、 Bike Buyer DMX チュートリアルを参照してください。