Microsoft 決策樹演算法技術參考

適用於:SQL Server 2019 和更早版本的 Analysis Services Azure Analysis Services Fabric/Power BI Premium

重要

資料採礦自 SQL Server 2017 Analysis Services 起退場,現在的 SQL Server 2022 Analysis Services 已不再繼續提供。 已退場和不再繼續提供之功能的文件不予更新。 若要深入了解,請參閱 Analysis Services 回溯相容性

Microsoft 判定樹演算法是混合式演算法,其中包含建立樹狀結構的不同方法,並支援多個分析工作,包括回歸、分類和關聯。 Microsoft 決策樹演算法支援製作離散和連續屬性的模型。

本主題說明演算法的實作、描述如何針對不同的工作自訂演算法的行為,以及提供查詢決策樹模型其他資訊的連結。

實作決策樹演算法

Microsoft 決策樹演算法將貝氏方法套用至學習因果互動模型,取得模型的近似事後分佈。 如需這種方法的詳細說明,請參閱 Microsoft Research 網站上由 結構和參數學習提供的文件。

評估學習所需之 「優先」 (Priors) 資訊值的方法,是根據 「可能性相等」(Likelihood Equivalence) 的假設。 此假設認為,資料無法協助您區分代表條件式獨立之相同判斷提示的網路結構。 每個案例都假設擁有一個單一的貝氏優先網路以及對於該網路之信心的單一量值。

使用這些優先網路,演算法就可以根據目前的定型資料,計算網路結構的相對 「事後機率」 (Posterior Probabilities),並識別事後機率最高的網路結構。

Microsoft 決策樹演算法使用不同的方法計算最佳的樹狀結構。 所使用的方法取決於工作,這可以是線性迴歸、分類或關聯分析。 單一模型可以包含不同可預測屬性的多個樹狀結構。 此外,根據資料中的屬性和值數目,每個樹狀結構都可以包含多個分支。 在特定模型中建立的樹狀結構形狀和深度取決於所使用的計分方法與其他參數。 參數中的變更也可能影響節點分岔的位置。

建立樹狀結構

當 Microsoft 決策樹演算法建立一組可能的輸入值時,該演算法會執行 feature selection 來識別提供多數資訊的屬性和值,並移除值非常稀少的考量。 此演算法也會將這些值分組到 bin中,以建立可以當做一個單位處理之值的群組,讓效能最佳化。

樹狀結構可以透過決定輸入和目標結果間的關聯來建立。 讓所有屬性產生關聯之後,此演算法會找出最清楚分隔結果的單一屬性。 最佳分隔的這個點會使用計算資訊改善的方程式測量。 擁有資訊改善最佳分數的屬性用於將案例分割為子集,然後透過相同的程序進行遞迴性分析,直到無法再分割樹狀結構為止。

用於評估資訊改善的完整方程式取決於建立演算法時所設定的參數、可預測資料行的資料類型,以及輸入的資料類型。

離散和連續輸入

當可預測的屬性和輸入都是離散的時,每個輸入的計算結果就是建立矩陣,並在矩陣中建立每個資料格之分數的結果。

不過,當可預測的屬性是離散的,而輸入是連續的時,就會將連續資料行的輸入自動離散化。 您可以接受預設值,並讓 SQL Server Analysis Services 尋找最佳間隔數目,或者您可以藉由設定 DiscretizationMethodDiscretizationBucketCount 屬性來控制連續輸入離散化的方式。 如需詳細資訊,請參閱 變更採礦模型中的資料行分隔

針對連續屬性,此演算法使用線性迴歸來決定決策樹分岔之處。

當可預測的屬性是連續數值資料類型時,也會將特徵選取套用到輸出中,以降低可能的結果數目並讓模型的建立更為快速。 您可以變更特徵選取的臨界值,並藉此設定 MAXIMUM_OUTPUT_ATTRIBUTES 參數來增加或減少可能值的數目。

計分方法與特徵選取

Microsoft 決策樹演算法提供三個計算資訊改善分數的公式:「Shannon 熵」、「使用 K2 優先的貝氏網路」以及「使用優先統一狄氏分配的貝氏網路」。 三種方法全都堅實的建立在資料採礦欄位中。 建議您試驗不同的參數與計分方法來判斷哪個公式會提供最佳的結果。 如需有關這些計分方法的詳細資訊,請參閱< Feature Selection>。

所有 SQL Server Analysis Services 數據採礦演算法都會自動使用特徵選取來改善分析和減少處理負載。 特徵選取所使用的方法取決於建立模型所使用的演算法。 針對決策樹模型控制特徵選取的演算法參數為 MAXIMUM_INPUT_ATTRIBUTES 和 MAXIMUM_OUTPUT。

演算法 分析的方法 註解
決策樹 有趣性分數

Shannon 熵

使用 K2 優先的貝氏

使用優先統一狄氏分配的貝氏 (預設值)
如果任何資料行包含非二進位連續數值,則所有資料行都會使用有趣性分數以確保一致性。 否則,會使用預設值或指定的方法。
線性迴歸 有趣性分數 線性迴歸只會使用有趣性,因為它只支援連續的資料行。

延展性和效能

分類是一個重要的資料採擷策略。 一般而言,為案例分類所需之資訊的數量會以輸入記錄數目的直接比例成本。 這會限制可以分類之資料的大小。 Microsoft 決策樹演算法使用下列方法解決這些問題、改善效能,並排除記憶體限制。

  • 特徵選取,用於最佳化屬性選取。

  • 貝氏計分,用於控制樹狀結構的成長。

  • bin 最佳化,用於連續屬性。

  • 輸入值的動態群組,用於判斷最重要的值。

Microsoft 決策樹演算法快速、可擴充,而且針對輕鬆平行處理而設計,也就是說,所有處理器會一同運作以建立單一而且一致的模型。 這些特徵的結合可讓決策樹分類成為資料採礦的理想工具。

如果效能限制嚴苛,您可以在定期決策樹模型期間,使用下列方法改善處理時間。 不過,如果您這麼做,請注意,刪除屬性來改善處理效能將會變更模型的結果,而且可能比較不能代表總母體。

  • 增加 COMPLEXITY_PENALTY 參數的值來限制樹狀結構的成長。

  • 限制關聯模型中的項目數目以限制所建立的樹狀結構數目。

  • 增加 MINIMUM_SUPPORT 參數的值以防止過度膨脹。

  • 將任何屬性之離散值的數目限制為 10 以下。 您可以嘗試在不同的模型中,嘗試以不同的方式為這些值分組。

    注意

    您可以使用 SQL Server 2017 Integration Services (SSIS) 中可用的數據探索工具,將數據中的值分佈可視化,並在開始數據採礦之前適當地將值分組。 如需詳細資訊,請參閱 資料分析工作和檢視器。 您也可以使用 適用於 Excel 2007 的資料採礦增益集瀏覽、分組,以及重新標示 Microsoft Excel 中的資料。

自訂決策樹演算法

Microsoft 判定樹演演算法支持影響所產生採礦模型效能和精確度的參數。 您也可以設定採礦模型資料行或採礦結構資料行上的模型旗標來控制處理資料的方式。

注意

Microsoft 判定樹演算法適用於所有版本的 SQL Server;不過,自定義 Microsoft 判定樹演演算法行為的一些進階參數僅適用於特定版本的 SQL Server。 如需 SQL Server 版本支援的功能清單,請參閱 SQL Server 2012 版本支援的功能 (https://go.microsoft.com/fwlink/?linkid=232473)。

設定演算法參數

下表說明您可以搭配 Microsoft 判定樹演算法使用的參數。

COMPLEXITY_PENALTY
控制決策樹的成長。 低值會增加分岔數目,而高值會減少分岔數目。 預設值是依據特定模型的屬性數目,如下列清單所述:

  • 1 到 9 個屬性,預設值為 0.5。

  • 10 到 99 個屬性,預設值為 0.9。

  • 100 個以上的屬性,預設值為 0.99。

FORCE_REGRESSOR
強制演算法使用指定的資料行做為迴歸輸入變數,不考慮演算法計算出來之資料行的重要性。 此參數只用於預測連續屬性的決策樹。

注意

您可以設定這個屬性來強制演算法嘗試使用屬性當做迴歸輸入變數。 不過,屬性實際上在最終模型中是否當做迴歸輸入變數使用,則視分析的結果而定。 您可以查詢模型內容,找出當做迴歸輸入變數使用的資料行。

[僅適用於某些版本的 SQL Server ]

MAXIMUM_INPUT_ATTRIBUTES
定義演算法在叫用特徵選取之前,可以處理的輸入屬性數目。

預設值為 255。

將此值設定為 0 可關閉特徵選取。

[僅適用於某些版本的 SQL Server]

MAXIMUM_OUTPUT_ATTRIBUTES
定義演算法在叫用特徵選取之前,可以處理的輸出屬性數目。

預設值為 255。

將此值設定為 0 可關閉特徵選取。

[僅適用於某些版本的 SQL Server]

MINIMUM_SUPPORT
決定要在決策樹中產生分岔所需的最小分葉案例數目。

預設值為 10。

如果資料集非常大,您可能需要增加這個值以防止過度膨脹。

SCORE_METHOD
決定用來計算分岔準則的方法。 可用選項如下:

識別碼 名稱
1
3 使用 K2 優先的貝氏
4 使用統一優先的貝氏狄氏等價 (Bayesian Dirichlet Equivalent,BDE)

(預設值)

預設值是 4 或 BDE。

如需這些計分方法的說明,請參閱< Feature Selection>。

SPLIT_METHOD
決定用來分岔節點的方法。 可用選項如下:

識別碼 名稱
1 Binary: 表示不管屬性的實際數目為何,樹狀結構都會分岔為兩個分支。
2 Complete: 表示樹狀結構可以建立與屬性值一樣多的分岔。
3 Both: 指定 Analysis Services 可以決定應該使用二進位還是完整分岔來產生最佳的結果。

預設值為 3。

模型旗標

Microsoft 判定樹演演算法支援下列模型旗標。 當您建立採礦結構或採礦模型時,您會定義模型旗標來指定分析期間要如何處理每個資料行中的值。 如需詳細資訊,請參閱 模型旗標 (數據採礦)

模型旗標 Description
MODEL_EXISTENCE_ONLY 表示資料行將被視為擁有兩個可能狀態: MissingExisting。 Null 為遺漏值。

適用於採礦模型資料行。
NOT NULL 表示資料行不能包含 Null 值。 如果 Analysis Services 在模型定型期間遇到 Null 值,將會產生錯誤。

適用於採礦結構資料行。

決策樹模型中的迴歸輸入變數

即使您未使用 Microsoft 線性回歸演算法,任何具有連續數值輸入和輸出的判定樹模型,都可以包含代表連續屬性回歸的節點。

您不需要指定連續數值資料的資料行代表迴歸輸入變數。 即使未在數據行上設定 REGRESSOR 旗標,Microsoft 判定樹演算法也會自動使用數據行作為潛在的回歸輸入變數,並將數據集分割成具有有意義模式的區域。

不過,您可以使用 FORCE_REGRESSOR 參數來確保演算法會使用特定的迴歸輸入變數。 此參數只能與 Microsoft 判定樹和 Microsoft 線性回歸演算法搭配使用。 當您設定模型旗標時,演算法會嘗試尋找 a*C1 + b*C2 + ... 形式的迴歸方程式,以比對樹狀結構節點中的模式。 之後會計算剩餘數的總和,如果差異過大,就會在樹狀結構中強制進行分割。

例如,如果您要使用 Income 做為屬性來預測客戶購買行為,且在資料行上設定 REGRESSOR 模型旗標,則演算法首先會使用標準迴歸公式來比對 Income 值。 如果差異過大,就會放棄迴歸公式,且根據其他的屬性分割樹狀結構。 在分割之後,決策樹演算法就會接著嘗試在每個分支中比對迴歸輸入變數與收入。

規格需求

決策樹模型必須包含索引鍵資料行、輸入資料行和至少一個可預測資料行。

輸入和可預測資料行

Microsoft 判定樹演演算法支援下表所列的特定輸入數據行和可預測數據行。 如需在採礦模型中使用內容類型的意義詳細資訊,請參閱 內容類型 (資料採礦)

資料行 內容類型
輸入屬性 Continuous、Cyclical、Discrete、Discretized、Key、Ordered、Table
可預測屬性 Continuous、Cyclical、Discrete、Discretized、Ordered、Table

注意

系統支援 Cyclical 和 Ordered 內容類型,但是演算法將它們視為離散值,因此不會執行特殊處理。

另請參閱

Microsoft 判定樹演算法
決策樹模型查詢範例
Mining Model Content for Decision Tree Models (Analysis Services - Data Mining)