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 網站上的檔,方法是 結構和參數學習。
評估學習所需 信息價值的方法,是以假設 可能性等價為基礎。 此假設表示數據不應協助區分表示條件式獨立之相同判斷提示的網路結構。 假設每個案例都有單一貝氏舊版網路,以及該網路的單一信賴度量值。
使用這些先前的網路,演算法接著會根據目前的定型數據,計算網路結構的相對 後機率,並識別具有最高後數機率的網路結構。
Microsoft判定樹演算法會使用不同的方法來計算最佳樹狀結構。 所使用的方法取決於工作,這可以是線性回歸、分類或關聯分析。 單一模型可以包含不同可預測屬性的多個樹狀結構。 此外,每個樹狀結構都可以包含多個分支,視數據中有多少屬性和值而定。 在特定模型中建置的樹狀結構圖形和深度取決於評分方法,以及所使用的其他參數。 參數中的變更也會影響節點分割的位置。
建置樹狀結構
當Microsoft判定樹演算法建立一組可能的輸入值時,它會執行 特徵選取 來識別提供最多資訊的屬性和值,並從考慮非常罕見的值中移除。 此演算法也會將值分組為 bin,以建立可做為單位來處理的值群組,以將效能優化。
樹狀結構是藉由判斷輸入與目標結果之間的相互關聯來建置。 在所有屬性都相互關聯之後,演算法會識別最清楚分隔結果的單一屬性。 這個最佳分隔點是使用計算資訊取得的方程序來測量。 具有資訊取得最佳分數的屬性可用來將案例分割成子集,然後由同一個進程遞歸分析,直到無法再分割樹狀結構為止。
用來評估資訊取得的確切方程式取決於您建立演算法時所設定的參數、可預測數據行的數據類型,以及輸入的數據類型。
離散和連續輸入
當可預測屬性是離散的,而且輸入是離散的時,計算每個輸入的結果是建立矩陣併產生矩陣中每個單元格的分數。
不過,當可預測屬性是離散的,而且輸入是連續的時,就會自動離散化連續數據行的輸入。 您可以接受預設值,並讓 SQL Server Analysis Services 找到最佳的間隔數目,或者您可以藉由設定 DiscretizationMethod 和 DiscretizationBucketCount 屬性來控制連續輸入的離散化方式。 如需詳細資訊,請參閱 變更採礦模型中數據行的離散化。
針對連續屬性,演算法會使用線性回歸來判斷判定樹分割的位置。
當可預測屬性是連續數值數據類型時,特徵選取也會套用至輸出,以減少可能的結果數目,並更快建置模型。 您可以變更特徵選取的臨界值,藉由設定 MAXIMUM_OUTPUT_ATTRIBUTES 參數來增加或減少可能的值數目。
評分方法和特徵選取
Microsoft判定樹演算法提供三個公式來取得評分資訊:Shannon 的 entropy、Bayesian 網路與 K2 先前,以及貝氏網路具有統一的 Dirichlet 分佈。 這三種方法都是在數據採礦欄位中建立完善的。 建議您試驗不同的參數和評分方法,以判斷哪一個可提供最佳結果。 如需這些評分方法的詳細資訊,請參閱 功能選取。
所有 SQL Server Analysis Services 數據採礦演算法都會自動使用特徵選取來改善分析和減少處理負載。 用於特徵選取的方法取決於用來建置模型的演算法。 控制判定樹模型特徵選取的演算法參數是MAXIMUM_INPUT_ATTRIBUTES和MAXIMUM_OUTPUT。
演算法 | 分析方法 | 評論 |
---|---|---|
判定樹 | 有趣的分數 香農的 Entropy 貝氏與 K2 舊版 貝氏迪里希萊特與統一之前 (預設值) |
如果有任何數據行包含非二進位連續值,則會針對所有數據行使用有趣的分數,以確保一致性。 否則,會使用預設或指定的方法。 |
線性回歸 | 有趣的分數 | 線性回歸只會使用有趣性,因為它只支持連續數據行。 |
延展性和效能
分類是重要的數據採礦策略。 一般而言,分類案例所需的資訊量會直接與輸入記錄數目成正比增加。 這會限制可分類的數據大小。 Microsoft判定樹演算法會使用下列方法來解決這些問題、改善效能,以及消除記憶體限制:
功能選取以優化屬性的選取範圍。
貝氏評分以控制樹狀結構生長。
連續屬性的量化優化。
輸入值的動態群組,以判斷最重要的值。
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 版本支援的
設定演算法參數
下表描述您可以搭配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 | 貝氏迪里希萊特對等專案 (BDE) 與制服之前 (預設值) |
預設值為 4 或 BDE。
如需這些評分方法的說明,請參閱 功能選取。
SPLIT_METHOD
決定用來分割節點的方法。 有下列選項可供使用:
標識碼 | 名字 |
---|---|
1 | 二進位: 指出,無論屬性的實際值數目為何,樹狀結構應該分割成兩個分支。 |
2 | 完成: 指出樹狀結構可以建立與屬性值一樣多的分割。 |
3 | 兩者: 指定 Analysis Services 可以判斷是否應該使用二進位或完整分割來產生最佳結果。 |
預設值為 3。
模型旗標
Microsoft判定樹演演算法支援下列模型旗標。 當您建立採礦結構或採礦模型時,您可以定義模型旗標,以指定在分析期間處理每個數據行中的值的方式。 如需詳細資訊,請參閱 模型旗標 (資料採礦)。
模型旗標 | 描述 |
---|---|
MODEL_EXISTENCE_ONLY | 表示資料列將被視為有兩種可能的狀態:遺漏 和 現有。 Null 是遺漏值。 適用於採礦模型數據行。 |
NOT NULL | 表示數據行不能包含 Null。 如果 Analysis Services 在模型定型期間遇到 Null,將會產生錯誤。 適用於採礦結構數據行。 |
判定樹模型中的回歸輸入器
即使您不使用Microsoft線性回歸演算法,任何具有連續數值輸入和輸出的判定樹模型,都可能包含代表連續屬性上回歸的節點。
您不需要指定連續數值資料的數據行代表回歸輸入變數。 Microsoft判定樹演算法會自動使用數據行作為可能的回歸輸入變數,並將數據集分割成具有有意義模式的區域,即使您未在數據行上設定 REGRESSOR 旗標也一樣。
不過,您可以使用 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 |
注意
支援迴圈和已排序的內容類型,但演算法會將它們視為離散值,而且不會執行特殊處理。
另請參閱
Microsoft 判定樹演算法
判定樹模型查詢範例
判定樹模型的採礦模型內容 (Analysis Services - 數據採礦)