當您針對數據採礦模型建立查詢時,您可以建立內容查詢,以提供分析中探索到之模式的詳細數據,或者您可以建立預測查詢,該查詢會使用模型中的模式來為新數據進行預測。 例如,判定樹模型的內容查詢可能會提供樹狀結構每個層級案例數目的相關統計數據,或區分案例的規則。 或者,預測查詢會將模型對應至新的數據,以產生建議、分類等等。 您也可以使用查詢來擷取模型的相關元數據。
本節說明如何針對以Microsoft判定樹演算法為基礎的模型建立查詢。
內容查詢
預測查詢
尋找決策樹模型的相關信息
若要針對判定樹模型的內容建立有意義的查詢,您應該瞭解模型內容的結構,以及哪些節點類型會儲存何種資訊。 如需詳細資訊,請參閱判定樹模型的採礦模型內容(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 傳回模型內容的詳細數據
下列查詢會傳回您在 基本數據採礦教學課程中建立模型時所建立之判定樹的一些基本資訊。 每個樹狀結構都會儲存在自己的節點中。 由於此模型包含單一可預測屬性,因此只有一個樹狀節點。 不過,如果您使用決策樹演算法建立關聯模型,則每個產品可能會有數百個決策樹。
此查詢會傳回類型 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_CAPTION | NODE_SUPPORT | CHILDREN_CARDINALITY (子項目基數) |
|---|---|---|---|---|
| TM_決策樹 | 000000001 | 全部 | 12939 | 5 |
這些結果會告訴您什麼? 在決策樹模型中,特定節點的基數會告訴你該節點有多少個直接子節點。 此節點的基數為5,這表示模型會將潛在自行車購買者的目標母體分成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 | 支援 |
|---|---|---|---|---|
| 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
範例結果︰
| NODE_NAME | NODE_CAPTION | t.支援 |
|---|---|---|
| 000000001000100 | 年收入 >= 26000 和 < 42000 | 266 |
| 00000000100010100 | 總孩子數 = 3 | 75 |
| 0000000010001010100 | 家中子係數 = 1 | 75 |
使用判定樹模型進行預測
因為判定樹可用於各種工作,包括分類、回歸甚至關聯,因此當您在判定樹模型上建立預測查詢時,有許多選項可供您使用。 您必須瞭解建立模型的目的,以了解預測的結果。 下列查詢範例說明三個不同的案例:
傳回分類模型的預測,以及預測正確的可能性,然後依機率篩選結果:
建立單一查詢以預測關聯性
擷取判定樹部分的回歸公式,其中輸入和輸出之間的關聯性是線性的。
範例查詢 4:返回具有機率的預測結果
下列範例查詢會使用 在基本數據採礦教學課程中建立的判定樹模型。 查詢將從 AdventureWorks2012 DW 的數據表 dbo.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 會傳回具有數據行標籤 Expression 的巢狀數據表。 您可以藉由為返回的列設置別名來變更此標籤。 如果您這樣做,別名 (在此案例中為 Results) 會作為數據行標題和巢狀數據表中的值使用。 您必須展開巢狀數據表,才能看到結果。
Bike Buyer = 1 的範例結果:
| 自行車買家 | $SUPPORT | $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 |
| 山輪胎管 |
| 導覽輪胎管 |
結果會告訴您三個最佳產品,以建議已購買 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 標誌球衣 |
| Mountain-400-W |
| 傳統背心 |
範例查詢 6:從判定樹模型擷取回歸公式
當您建立包含連續屬性回歸的判定樹模型時,您可以使用回歸公式進行預測,也可以擷取回歸公式的相關信息。 如需回歸模型查詢的詳細資訊,請參閱 線性回歸模型查詢範例。
如果決策樹模型同時包含回歸節點和在離散屬性或範圍上分割的節點,您可以撰寫查詢以僅傳回回歸節點。 NODE_DISTRIBUTION數據表包含回歸公式的詳細數據。 在此範例中,欄會被扁平化,且NODE_DISTRIBUTION數據表已設定別名以方便檢視。 然而,在此模型中,沒有發現將收入與其他連續屬性關聯的回歸變數。 在這種情況下,Analysis Services 會傳回該屬性的平均值和模型中的總變數。
SELECT FLATTENED NODE_DISTRIBUTION AS t
FROM DT_Predict. CONTENT
WHERE NODE_TYPE = 25
範例結果︰
| t.ATTRIBUTE_NAME | t.屬性值 | t.SUPPORT | t.概率 | t.變異數 | t.VALUETYPE |
|---|---|---|---|---|---|
| 每年收入 | 失蹤 | 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) | 判斷某個節點是否為模型中另一個節點的子系。 |
| 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 - 數據採礦)