レッスン 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 が設定されたモデルを使用した予測の作成

アソシエーション クエリを作成するには

  1. オブジェクト エクスプローラで、Analysis Services のインスタンスを右クリックし、[新しいクエリ] をポイントして [DMX] をクリックすると、クエリ エディタが開きます。

  2. PREDICTION JOIN ステートメントの汎用例を空のクエリにコピーします。

  3. 次の部分を探します。

    <select list> 
    

    これを次の文字列に置き換えます。

    PREDICT([Default Association].[Products],INCLUDE_STATISTICS,3)
    

    ここでは、列名 [Products] だけを含めることも、Predict (DMX) 関数を使用して、アルゴリズムからツリーに返される製品数を制限することもできます。さらに、INCLUDE_STATISTICS を使用して、製品ごとのサポート、確率、および調整済みの確率を返すこともできます。これらの統計は、予測の精度を評価するときに役立ちます。

  4. 次の部分を探します。

    [<mining model>] 
    

    これを次の文字列に置き換えます。

    [Default Association]
    
  5. 次の部分を探します。

    (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
    
  6. [ファイル] メニューで、[名前を付けて DMXQuery1.dmx を保存] をクリックします。

  7. [名前を付けて保存] ダイアログ ボックスで、適切なフォルダを参照して指定し、ファイルに「Association Prediction.dmx」という名前を付けます。

  8. ツール バーの [実行] ボタンをクリックします。

    クエリによって、HL Mountain Tire、Fender Set - Mountain、ML Mountain Tire の 3 つの製品が含まれたテーブルが返されます。テーブルには、返された製品が確率の順に表示されます。返された製品のうち、クエリで指定した 3 つの製品と同じショッピング カートに入っている可能性の最も高いものが、テーブルの一番上に表示されます。続いて表示される 2 つは、ショッピング カートに入っている可能性が次に高い製品です。さらに、このテーブルには、予測の精度を表す統計も含まれます。

MINIMUM_PROBABILITY が 0.01 に設定されたマイニング モデルを使用した予測の作成

アソシエーション クエリを作成するには

  1. オブジェクト エクスプローラで、Analysis Services のインスタンスを右クリックし、[新しいクエリ] をポイントして [DMX] をクリックすると、クエリ エディタが開きます。

  2. PREDICTION JOIN ステートメントの汎用例を空のクエリにコピーします。

  3. 次の部分を探します。

    <select list> 
    

    これを次の文字列に置き換えます。

    PREDICT([Modified Association].[Products],INCLUDE_STATISTICS,3)
    
  4. 次の部分を探します。

    [<mining model>] 
    

    これを次の文字列に置き換えます。

    [Modified Association]
    
  5. 次の部分を探します。

    (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
    
  6. [ファイル] メニューで、[名前を付けて DMXQuery1.dmx を保存] をクリックします。

  7. [名前を付けて保存] ダイアログ ボックスで、適切なフォルダを参照して指定し、ファイルに「Modified Association Prediction.dmx」という名前を付けます。

  8. ツール バーの [実行] ボタンをクリックします。

    クエリによって、HL Mountain Tire、Water Bottle、Fender Set - Mountain の 3 つの製品が含まれたテーブルが返されます。テーブルには、これらの製品が確率の順に表示されます。テーブルの一番上に表示されるのは、クエリで指定した 3 つの製品と同じショッピング カートに入っている可能性の最も高い製品です。それ以外は、ショッピング カートに入っている可能性が次に高い製品です。さらに、このテーブルには、予測の精度を表す統計も含まれます。

    このクエリの結果を見ると、MINIMUM_PROBABILITY パラメータの値によって結果が異なることがわかります。

これで、マーケット バスケットのチュートリアルの最後の手順が終了します。このチュートリアルでは、同時に購入される可能性がある製品を予測するときに使用できる、モデルのセットを作成しました。

別の予測シナリオで DMX を使用する方法については、「Bike Buyer DMX のチュートリアル」を参照してください。