次の方法で共有


デシジョン ツリー モデルクエリの例

データ マイニング モデルに対してクエリを作成する場合は、分析で検出されたパターンに関する詳細を提供するコンテンツ クエリを作成するか、モデル内のパターンを使用して新しいデータの予測を行う予測クエリを作成できます。 たとえば、デシジョン ツリー モデルのコンテンツ クエリでは、ツリーの各レベルのケース数や、ケースを区別するルールに関する統計情報が提供される場合があります。 または、予測クエリでは、推奨事項や分類などを生成するために、モデルを新しいデータにマップします。 クエリを使用して、モデルに関するメタデータを取得することもできます。

このセクションでは、Microsoft デシジョン ツリー アルゴリズムに基づくモデルのクエリを作成する方法について説明します。

コンテンツ クエリ

データ マイニング スキーマ行セットからのモデル パラメーターの取得

DMX を使用したモデル内のツリーに関する詳細の取得

モデルからのサブツリーの取得

予測クエリ

確率を使用して予測を返す

デシジョン ツリー モデルからの関連付けの予測

デシジョン ツリー モデルから回帰式を取得する

デシジョン ツリー モデルに関する情報の検索

デシジョン ツリー モデルのコンテンツに対して意味のあるクエリを作成するには、モデル コンテンツの構造と、どのような種類の情報を格納するノード タイプかを理解する必要があります。 詳細については、「 デシジョン ツリー モデルのマイニング モデル コンテンツ (Analysis Services - データ マイニング)」を参照してください。

サンプル クエリ 1: データ マイニング スキーマ行セットからモデル パラメーターを取得する

データ マイニング スキーマ行セットに対してクエリを実行すると、モデルの作成時、モデルが最後に処理されたとき、モデルの基になっているマイニング構造の名前、予測可能な属性として使用される列の名前など、モデルに関するメタデータを検索できます。 また、モデルが最初に作成されたときに使用されたパラメーターを返すこともできます。

select MINING_PARAMETERS   
from $system.DMSCHEMA_MINING_MODELS  
WHERE MODEL_NAME = 'TM_Decision Tree'  

サンプルの結果:

マイニングパラメータ

COMPLEXITY_PENALTY=0.5、MAXIMUM_INPUT_ATTRIBUTES=255、MAXIMUM_OUTPUT_ATTRIBUTES=255、MINIMUM_SUPPORT=10、SCORE_METHOD=4、SPLIT_METHOD=3、FORCE_REGRESSOR=

サンプル クエリ 2: DMX を使用してモデル コンテンツに関する詳細を返す

次のクエリは、基本的な データ マイニング チュートリアルでモデルを構築したときに作成されたデシジョン ツリーに関する基本情報を返します。 各ツリー構造は、独自のノードに格納されます。 このモデルには予測可能な属性が 1 つ含まれているため、ツリー ノードは 1 つだけです。 ただし、デシジョン ツリー アルゴリズムを使用してアソシエーション モデルを作成する場合は、製品ごとに 1 つずつ、数百のツリーが存在する可能性があります。

このクエリは、特定の予測可能な属性を表すツリーの最上位ノードである、2 型のすべてのノードを返します。

CHILDREN_CARDINALITY列は、同じ名前の MDX 予約キーワードと区別するために、角かっこで囲む必要があります。

SELECT MODEL_NAME, NODE_NAME, NODE_CAPTION,   
NODE_SUPPORT, [CHILDREN_CARDINALITY]  
FROM TM_DecisionTrees.CONTENT  
WHERE NODE_TYPE = 2  

結果の例:

MODEL_NAME ノード名 ノードキャプション ノードサポート 子供の基数
TM_DecisionTree 000000001 全て 12939 5

これらの結果は何を伝えますか? デシジョン ツリー モデルでは、特定のノードのカーディナリティによって、そのノードに直接存在する子の数が示されます。 このノードのカーディナリティは 5 です。つまり、モデルは、潜在的な自転車購入者のターゲット母集団を 5 つのサブグループに分割したことを意味します。

次の関連クエリは、これら 5 つのサブグループの子を、子ノード内の属性と値の分布と共に返します。 サポート、確率、分散などの統計は入れ子になったテーブルに格納されるため、この例では NODE_DISTRIBUTIONFLATTENED キーワードを使用して入れ子になったテーブル列を出力します。

入れ子になったテーブル列 ( SUPPORT) は、同じ名前の予約済みキーワードと区別するために、角かっこで囲む必要があります。

SELECT FLATTENED NODE_NAME, NODE_CAPTION,  
(SELECT ATTRIBUTE_NAME, ATTRIBUTE_VALUE, [SUPPORT]  
FROM NODE_DISTRIBUTION) AS t  
FROM TM_DecisionTree.CONTENT  
WHERE [PARENT_UNIQUE_NAME] = '000000001'  

結果の例:

ノード名 ノードキャプション T.ATTRIBUTE_NAME T.ATTRIBUTE_VALUE サポート
00000000100 保有車両数 = 0 自転車購入者 行方不明 0
00000000100 保有車両数 = 0 自転車購入者 0 1067
00000000100 所有する車の数 = 0 自転車購入者 1 1875
00000000101 所有自動車の数 = 3 自転車購入者 行方不明 0
00000000101 保有車両数 = 3 自転車購入者 0 678
00000000101 保有車両数 = 3 自転車購入者 1 473

これらの結果から、自転車を購入した顧客 ([Bike Buyer] = 1)、1067 人の顧客が 0 台、473 人の顧客が 3 台だったことが分かります。

サンプル クエリ 3: モデルからサブツリーを取得する

自転車を購入した顧客の詳細を見つけたいとします。 次の例に示すように、クエリで IsDescendant (DMX) 関数を使用して、サブツリーの追加の詳細を表示できます。 このクエリは、42 歳以上の顧客を含むツリーからリーフ ノード (NODE_TYPE = 4) を取得することで、自転車購入者の数を返します。 このクエリでは、入れ子になったテーブルの行が Bike Buyer = 1 の行に制限されます。

SELECT FLATTENED NODE_NAME, NODE_CAPTION,NODE_TYPE,  
(  
SELECT [SUPPORT] FROM NODE_DISTRIBUTION WHERE ATTRIBUTE_NAME = 'Bike Buyer' AND ATTRIBUTE_VALUE = '1'  
) AS t  
FROM TM_DecisionTree.CONTENT  
WHERE ISDESCENDANT('0000000010001')  
AND NODE_TYPE = 4  

結果の例:

ノード名 ノードキャプション サポート
000000001000100 年収 >= 26000、 < 42000 266
00000000100010100 子供の合計 = 3 75
0000000010001010100 自宅の子の数 = 1 75

デシジョン ツリー モデルを使用した予測の作成

デシジョン ツリーは分類、回帰、さらには関連付けなど、さまざまなタスクに使用できるため、デシジョン ツリー モデルで予測クエリを作成する場合は、多くのオプションを使用できます。 予測の結果を理解するには、モデルが作成された目的を理解する必要があります。 次のクエリ サンプルは、3 つの異なるシナリオを示しています。

  • 予測が正しい確率と共に分類モデルの予測を返し、結果を確率でフィルター処理する。

  • 関連付けを予測するシングルトン クエリを作成する。

  • 入力と出力の間のリレーションシップが線形であるデシジョン ツリーの一部の回帰式を取得する。

サンプル クエリ 4: 確率を使用して予測を返す

次のサンプル クエリでは、 基本的なデータ マイニング チュートリアルで作成されたデシジョン ツリー モデルを使用します。 クエリは、テーブル dbo から新しいサンプル データのセットを渡します。AdventureWorks2012 DW の ProspectiveBuyers は、新しいデータ セット内のどの顧客が自転車を購入するかを予測します。

このクエリでは予測関数 PredictHistogram (DMX) を使用します。この関数は、モデルによって検出された確率に関する有用な情報を含む入れ子になったテーブルを返します。 クエリの最後の WHERE 句は、自転車を購入する可能性が高いと予測された顧客のみを返すように結果をフィルター処理し、確率が 0%を超えています。

SELECT  
  [TM_DecisionTree].[Bike Buyer],  
  PredictHistogram([Bike Buyer]) as Results  
From  
  [TM_DecisionTree]  
PREDICTION JOIN  
  OPENQUERY([Adventure Works DW Multidimensional 2012],  
    'SELECT  
      [FirstName],  
      [LastName],  
      [MaritalStatus],  
      [Gender],  
      [YearlyIncome],  
      [TotalChildren],  
      [NumberChildrenAtHome],  
      [HouseOwnerFlag],  
      [NumberCarsOwned]  
    FROM  
      [dbo].[ProspectiveBuyer]  
    ') AS t  
ON  
  [TM_DecisionTree].[First Name] = t.[FirstName] AND  
  [TM_DecisionTree].[Last Name] = t.[LastName] AND  
  [TM_DecisionTree].[Marital Status] = t.[MaritalStatus] AND  
  [TM_DecisionTree].[Gender] = t.[Gender] AND  
  [TM_DecisionTree].[Yearly Income] = t.[YearlyIncome] AND  
  [TM_DecisionTree].[Total Children] = t.[TotalChildren] AND  
  [TM_DecisionTree].[Number Children At Home] = t.[NumberChildrenAtHome] AND  
  [TM_DecisionTree].[House Owner Flag] = t.[HouseOwnerFlag] AND  
  [TM_DecisionTree].[Number Cars Owned] = t.[NumberCarsOwned]  
WHERE [Bike Buyer] = 1  
AND PredictProbability([Bike Buyer]) >'.05'  

既定では、Analysis Services は列ラベルと共に入れ子になったテーブルを返します。 このラベルは、返される列にエイリアスを付けることで変更できます。 この場合、エイリアス (この場合は Results) が列見出しと入れ子になったテーブルの値の両方として使用されます。 結果を表示するには、入れ子になったテーブルを展開する必要があります。

Bike Buyer = 1 の結果の例:

自転車購入者 サポート $PROBABILITY $ADJUSTEDPROBABILITY $分散 $STDEV
1 2540 0.634849242045644 0.013562168281562 0 0
0 1460 0.364984174579377 0.00661336932550915 0 0
0 0.000166583374979177 0.000166583374979177 0 0

ここに示すような階層行セットがプロバイダーでサポートされていない場合は、クエリで FLATTENED キーワードを使用して、繰り返し列の値の代わりに null を含むテーブルとして結果を返すことができます。 詳細については、「 入れ子になったテーブル (Analysis Services - データ マイニング) 」または 「DMX Select ステートメントについて」を参照してください

サンプル クエリ 5: デシジョン ツリー モデルからのアソシエーションの予測

次のサンプル クエリは、アソシエーション マイニング構造に基づいています。 この例に従うには、このマイニング構造に新しいモデルを追加し、アルゴリズムとして Microsoft デシジョン ツリーを選択します。 アソシエーション マイニング構造を作成する方法の詳細については、「 レッスン 3: マーケット バスケット シナリオの構築 (中間データ マイニング チュートリアル)」を参照してください。

次のサンプル クエリはシングルトン クエリです。これは、フィールドを選択し、ドロップダウン リストからそれらのフィールドの値を選択することで、SQL Server Data Tools (SSDT) で簡単に作成できます。

SELECT PredictAssociation([DT_Association].[v Assoc Seq Line Items],3)  
FROM  
  [DT_Association]  
NATURAL PREDICTION JOIN  
(SELECT (SELECT 'Patch kit' AS [Model]) AS [v Assoc Seq Line Items]) AS t  

期待される結果:

モデル
Mountain-200
マウンテンタイヤチューブ
ツーリング用タイヤチューブ

結果は、パッチ キット製品を購入したお客様に推奨する 3 つの最適な製品を示しています。 値を入力するか、[ Singleton Query Input]\(シングルトン クエリ入力 \) ダイアログ ボックスを使用して値を追加または削除することで、推奨事項を行うときに複数の製品を入力として指定することもできます。 次のサンプル クエリは、複数の値を指定する方法を示しています。この値を使用して予測を行います。 値は、入力値を定義する SELECT ステートメントの UNION 句によって接続されます。

SELECT PredictAssociation([DT_Association].[v Assoc Seq Line Items],3)  
From  
  [DT_Association]  
NATURAL PREDICTION JOIN  
(SELECT (SELECT 'Racing Socks' AS [Model]  
  UNION SELECT 'Women''s Mountain Shorts' AS [Model]) AS [v Assoc Seq Line Items]) AS t  

期待される結果:

モデル
Long-Sleeve ロゴ ジャージー
Mountain-400-W
クラシック ベスト

サンプル クエリ 6: デシジョン ツリー モデルから回帰式を取得する

連続属性の回帰を含むデシジョン ツリー モデルを作成する場合は、回帰式を使用して予測を行うか、回帰式に関する情報を抽出できます。 回帰モデルのクエリの詳細については、「 線形回帰モデルクエリの例」を参照してください。

デシジョン ツリー モデルに、不連続の属性または範囲で分割された回帰ノードとノードの組み合わせが含まれている場合は、回帰ノードのみを返すクエリを作成できます。 NODE_DISTRIBUTIONテーブルには、回帰式の詳細が含まれています。 この例では、列はフラット化され、NODE_DISTRIBUTION テーブルは見やすくするためにエイリアス化されています。 ただし、このモデルでは、Income を他の継続的な属性と関連付けるリグレッサーは見つかりませんでした。 このような場合、Analysis Services は属性の平均値と、その属性のモデルの総分散を返します。

SELECT FLATTENED NODE_DISTRIBUTION AS t  
FROM DT_Predict. CONTENT  
WHERE NODE_TYPE = 25  

結果の例:

t.ATTRIBUTE_NAME t.ATTRIBUTE_VALUE サポート t.確率 t.分散 t.バリュータイプ
年収 行方不明 0 0.000457142857142857 0 1
年収 57220.8876687257 17484 0.999542857142857 1041275619.52776 3
57220.8876687257 0 0 1041216662.54387 11

回帰モデルで使用される値の型と統計の詳細については、「 線形回帰モデルのマイニング モデル コンテンツ (Analysis Services - データ マイニング)」を参照してください。

予測関数の一覧

すべての Microsoft アルゴリズムでは、共通の関数セットがサポートされています。 ただし、Microsoft デシジョン ツリー アルゴリズムでは、次の表に示す追加の関数がサポートされています。

予測関数 使用方法
IsDescendant (DMX) 1 つのノードがモデル内の別のノードの子であるかどうかを判断します。
IsInNode (DMX) 指定したノードに現在のケースが含まれているかどうかを示します。
PredictAdjustedProbability (DMX) 加重確率を返します。
PredictAssociation (DMX) 連想データセットのメンバーシップを予測します。
PredictHistogram (DMX) 現在の予測値に関連する値のテーブルを返します。
PredictNodeId (DMX) 各ケースのNode_IDを返します。
PredictProbability (DMX) 予測値の確率を返します。
PredictStdev (DMX) 指定した列の予測標準偏差を返します。
PredictSupport (DMX) 指定した状態のサポート値を返します。
PredictVariance (DMX) 指定した列の分散を返します。

すべての Microsoft アルゴリズムに共通する関数の一覧については、「 一般的な予測関数 (DMX)」を参照してください。 特定の関数の構文については、「 データ マイニング拡張機能 (DMX) 関数リファレンス」を参照してください

こちらもご覧ください

データ マイニング クエリ
Microsoft デシジョン ツリー アルゴリズム
Microsoft デシジョン ツリー アルゴリズムテクニカル リファレンス
デシジョン ツリー モデルのマイニング モデル コンテンツ (Analysis Services - データ マイニング)