查詢決策樹模型 (Analysis Services - 資料採礦)
當您針對資料採礦模型建立查詢時,可以建立內容查詢來提供有關分析期間所發現之模式的詳細資料,或是建立預測查詢來使用模型中的模式,為新的資料進行預測。例如,決策樹模型的內容查詢可能會提供有關每一樹狀結構層上之案例數的統計資料,或是區分案例的規則。或者,預測查詢會將此模型對應到新的資料,以便產生建議、分類等等。您也可以使用查詢來擷取有關模型的中繼資料。
本章節說明如何針對以 Microsoft 決策樹演算法為基礎的模型來建立查詢。
內容查詢
從資料採礦結構描述資料列集擷取模型參數
使用 DMX 傳回有關模型中樹狀結構的詳細資料
從決策樹模型傳回迴歸節點
預測查詢
傳回預測和機率
從決策樹預測關聯
尋找有關決策樹模型的資訊
若要在決策樹模型的內容上建立有意義的查詢,您應該了解模型內容的結構,以及哪一種節點類型會儲存那一種資訊。如需詳細資訊,請參閱<決策樹模型的採礦模型內容 (Analysis Services - 資料採礦)>。
回到頁首
範例查詢 1:從資料採礦結構描述資料列集擷取模型參數
您可以藉由查詢資料採礦結構描述資料列集來尋找有關此模型的中繼資料,例如此模型建立的時間、上次處理此模型的時間、此模型所根據的採礦結構名稱,以及用來當做可預測屬性的資料行名稱。您也可以傳回初次建立此模型時所使用的參數。
select MINING_PARAMETERS
from $system.DMSCHEMA_MINING_MODELS
WHERE MODEL_NAME = 'TM_Decision Tree'
範例結果:
MINING_PARAMETERS
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 傳回有關模型中樹狀結構的詳細資料
下列查詢會傳回有關您在<資料採礦基本教學課程>中建立之決策樹模型的一些基本資訊。此查詢會傳回類型 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 |
NODE_NAME |
NODE_CAPTION |
NODE_SUPPORT |
CHILDREN_CARDINALITY |
---|---|---|---|---|
TM_DecisionTree |
000000001 |
All |
12939 |
5 |
在決策樹模型中,特定節點的基數會告訴您該節點擁有多少下層子節點。因此,前一個查詢傳回之節點的基數會告訴您,此模型已將潛在自行車買主的目標母體分成五個子群組。下列相關查詢會傳回這五個子群組的子節點,連同這些子節點中屬性和值的分佈。由於統計資料 (如支援、機率和變異數) 會儲存在巢狀資料表 NODE_DISTRIBUTION 中,所以這個範例會使用 FLATTENED 關鍵字來輸出巢狀資料表資料行。
[!附註]
巢狀資料表資料行 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'
範例結果:
NODE_NAME |
NODE_CAPTION |
T.ATTRIBUTE_NAME |
T.ATTRIBUTE_VALUE |
SUPPORT |
---|---|---|---|---|
00000000100 |
Number Cars Owned = 0 |
Bike Buyer |
Missing |
0 |
00000000100 |
Number Cars Owned = 0 |
Bike Buyer |
0 |
1067 |
00000000100 |
Number Cars Owned = 0 |
Bike Buyer |
1 |
1875 |
00000000101 |
Number Cars Owned = 3 |
Bike Buyer |
Missing |
0 |
00000000101 |
Number Cars Owned = 3 |
Bike Buyer |
0 |
678 |
00000000101 |
Number Cars Owned = 3 |
Bike Buyer |
1 |
473 |
從這些結果中,您可以得知在購買自行車的客戶 ([Bike Buyer] = 1) 中,有 1067 位客戶擁有 0 輛汽車,而有 473 位客戶擁有 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
範例結果:
NODE_NAME |
NODE_CAPTION |
t.SUPPORT |
---|---|---|
000000001000100 |
Yearly Income >= 26000 and < 42000 |
266 |
00000000100010100 |
Total Children = 3 |
75 |
0000000010001010100 |
Number Children At Home = 1 |
75 |
回到頁首
範例查詢 3:從決策樹模型傳回迴歸節點
當您建立的決策樹模型在連續屬性上包含迴歸時,您可以使用迴歸公式來進行預測,或是可以擷取有關此迴歸公式的資訊。如需有關迴歸模型上之查詢的詳細資訊,請參閱<查詢線性迴歸模型 (Analysis Services - 資料採礦)>。
如果此模型包含迴歸節點及分散於離散屬性或範圍上之節點的混合,您只能建立傳回迴歸節點的查詢。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.SUPPORT |
t.PROBABILITY |
t.VARIANCE |
t.VALUETYPE |
---|---|---|---|---|---|
Yearly Income |
Missing |
0 |
0.000457142857142857 |
0 |
1 |
Yearly Income |
57220.8876687257 |
17484 |
0.999542857142857 |
1041275619.52776 |
3 |
|
57220.8876687257 |
0 |
0 |
1041216662.54387 |
11 |
如需有關迴歸模型中所用的值類型和統計資料的詳細資訊,請參閱<線性迴歸模型的採礦模型內容 (Analysis Services - 資料採礦)>。
回到頁首
使用模型進行預測
由於決策樹可用於各種工作,包括分類、迴歸,甚至是關聯,所以當您在決策樹模型上建立預測查詢時,您有許多可用的選項。您必須了解此模型的建立目的,才能了解預測的結果。下列查詢範例說明三種不同的案例:
傳回分類模型的預測,連同正確預測的機率,然後根據機率篩選結果。
建立單一查詢來預測關聯。
當輸入和輸出之間的關係為線性時,針對決策樹的一部分擷取迴歸公式。
回到頁首
範例查詢 4:傳回預測和機率
下列範例查詢會使用<資料採礦基本教學課程>中所建立的決策樹模型,然後將 AdventureWorks DW 中的範例資料表 dbo.ProspectiveBuyers 傳入此模型,以預測清單中的哪些客戶將會購買自行車。此查詢包括預測函數 PredictHistogram (DMX),它會傳回一個巢狀資料表,其中包含有關此模型所探索之機率的有用資訊。藉由加入 WHERE 子句來篩選預測,只傳回預測為可能為自行車買主的機率大於 50% 的客戶。
SELECT
[TM_DecisionTree].[Bike Buyer],
PredictHistogram([Bike Buyer]) as Results
FROM
[TM_DecisionTree]
PREDICTION JOIN
OPENQUERY([Adventure Works DW],
'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 會傳回具有資料行標籤 Expression 的巢狀資料表。您可以為傳回的資料行設定別名來變更這個標籤。如果您這樣做,此別名 (此案例中為 Results) 會用來當做資料行標題及巢狀資料表中的值。您必須展開此巢狀資料表,才能看到結果。
範例結果:
Bike Buyer |
Results |
---|---|
1 |
Results
Bike Buyer$SUPPORT$PROBABILITY$ADJUSTEDPROBABILITY$VARIANCE$STDEV
125400.6348492420456440.01356216828156200
014600.3649841745793770.0066133693255091500
00.0001665833749791770.00016658337497917700
|
如果提供者不支援階層式資料列集 (例如這裡顯示的結果),您可以在查詢中使用 FLATTENED 關鍵字,以資料表的形式傳回結果,此資料表包含了用來取代重複資料行值的 Null。如需詳細資訊,請參閱<巢狀資料表 (Analysis Services - 資料採礦)>或<瞭解 Select 陳述式 (DMX)>。
回到頁首
範例查詢 5:從決策樹預測關聯
若要使用下列查詢,您可以在教學課程中建立關聯模型的複本,然後將演算法變更為決策樹演算法。如需詳細資訊,請參閱<第 3 課:建立購物籃狀況 (中繼資料採礦教學課程)>。
下列範例查詢為單一查詢,您可以在 Business Intelligence Development Studio 中輕鬆地建立此查詢,其方式是選擇欄位,然後從下拉式清單中選取這些欄位的值。
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
預期的結果:
Model |
---|
Mountain-200 |
Mountain Tire Tube |
Touring Tire Tube |
結果告訴您建議已經購買 Patch Kit 產品的客戶來購買的三件最佳產品。當您做出建議時,也可以提供多個產品當做輸入,其方式是輸入值,或是使用 [單一查詢輸入] 對話方塊以及加入或移除值。下列範例查詢會示範如何提供多個值,根據這些值進行預測。定義輸入值之 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 Logo Jersey |
Mountain-400-W |
Classic Vest |
回到頁首
預測函數的清單
所有 Microsoft 演算法都支援一組常用的函數。不過,Microsoft 決策樹演算法支援下表所列出的其他函數。
如需所有 Microsoft 演算法通用的函數清單,請參閱<將函數對應至查詢類型 (DMX)>。如需特定函數的語法,請參閱<資料採礦延伸模組 (DMX) 函數參考>。
變更記錄
更新的內容 |
---|
已新增主題中的連結,讓您更輕鬆地檢視查詢範例。 |
已將迴歸節點範例移至有關內容查詢的正確章節。 |