共用方式為


判定樹模型的採礦模型內容 (Analysis Services - 數據採礦)

適用於: 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判定樹演算法之模型特有的採礦模型內容。 如需所有模型類型的採礦模型內容的一般說明,請參閱 採礦模型內容(Analysis Services - 數據採礦)。 請務必記住,Microsoft判定樹演算法是混合式演算法,可以建立具有非常不同函式的模型:判定樹可以代表關聯、規則,甚至是線性回歸。 樹狀結構基本上相同,但解譯資訊的方式將取決於您建立模型的目的。

瞭解判定樹模型的結構

判定樹模型具有代表模型及其元數據的單一父節點。 父節點下方是獨立樹狀結構,代表您選取的可預測屬性。 例如,如果您設定判定樹模型來預測客戶是否會購買某個專案,並提供性別和收入的輸入,則模型會為購買屬性建立單一樹狀結構,其中許多分支會因性別和收入而劃分的條件。

不過,如果您接著新增個別的可預測屬性來參與客戶獎勵計劃,演算法將會在父節點下建立兩個不同的樹狀結構。 一個樹狀結構包含購買的分析,另一個樹狀結構則包含客戶獎勵計劃的分析。 如果您使用判定樹演算法來建立關聯模型,此演算法會為每個預測的產品建立個別的樹狀結構,而樹狀結構包含所有其他有助於選取目標屬性的產品群組。

注意

如果您的模型包含多個樹狀結構,您一次只能檢視 Microsoft 樹檢視器。 不過,在 一般內容樹視圖器 中,相同模型中的所有樹狀結構都會同時顯示。

判定樹模型內容的 結構

每個可預測屬性的樹狀結構都包含資訊,描述您選擇的輸入數據行如何影響該特定可預測屬性的結果。 每個樹狀結構都是以包含可預測屬性的節點 (NODE_TYPE = 9) 為前端,後面接著代表輸入屬性的一系列節點 (NODE_TYPE = 10)。 屬性會對應至巢狀數據表數據行的案例層級數據行或值,這通常是巢狀數據表之 索引鍵 數據行中的值。

內部和分葉節點代表分割條件。 樹狀結構可以分割在同一個屬性上多次。 例如,TM_DecisionTree 模型可能會在 [Yearly Income] 和 [Children 數目] 上分割,然後在樹狀結構更遠的 [Yearly Income] 上再次分割。

Microsoft判定樹演算法也可以包含樹狀結構中所有或部分的線性回歸。 如果您要建立模型化的屬性是連續數值數據類型,則模型可以建立回歸樹狀節點(NODE_TYPE = 25),無論屬性之間的關聯性可以以線性方式模型化。 在此情況下,節點會包含回歸公式。

不過,如果可預測屬性具有離散值,或數值已貯體或離散化,則模型一律會建立分類樹狀結構(NODE_TYPE =2)。 分類樹狀結構可以有多個分支或內部樹狀節點(NODE_TYPE =3),每個屬性的值。 不過,分割不一定位於屬性的每個值上。

Microsoft判定樹演算法不允許連續數據類型作為輸入;因此,如果有任何數據行具有連續數值數據類型,則會離散化值。 演算法會在所有連續屬性的分割點執行自己的離散化。

注意

SQL Server Analysis Services 會自動選擇用於貯體連續屬性的方法;不過,您可以控制輸入中的連續值如何離散化,方法是將採礦結構數據行的內容類型設定為 離散化,然後設定 DiscretizationBucketCountDiscretizationMethod 屬性。

Top

判定樹模型的模型內容

本節僅針對採礦模型內容中與判定樹模型模型具有特定相關性的數據行提供詳細數據和範例。 如需架構數據列集中的一般用途數據行,以及採礦模型術語的說明,請參閱 採礦模型內容 (Analysis Services - 數據採礦)

MODEL_CATALOG
儲存模型的資料庫名稱。

MODEL_NAME
模型的名稱。

ATTRIBUTE_NAME
對應至此節點的屬性名稱。

NODE_NAME
一律與NODE_UNIQUE_NAME相同。

NODE_UNIQUE_NAME
模型內節點的唯一標識符。 這個值無法變更。

對於判定樹模型,唯一名稱會遵循下列慣例,不適用於所有演算法:

任何特定節點的子節點都會有相同的十六進位前置詞,後面接著另一個十六進位數位,代表父節點內的子節點序列。 您可以使用前置詞來推斷路徑。

NODE_TYPE
在判定樹模型中,會建立下列類型的節點:

節點類型 描述
1 (模型) 模型的根節點。
2 (樹) 模型中分類樹狀架構的父節點。 標示為 「All」
3 (內部) 內部分支的負責人,位於分類樹狀結構或回歸樹狀結構中。
4 (分佈) 分葉節點,位於分類樹狀結構或回歸樹狀結構內。
25 (回歸樹狀結構) 模型中回歸樹狀結構的父節點。 標示為 「All」

NODE_CAPTION
方便顯示之用的易記名稱。

當您建立模型時,會自動使用NODE_UNIQUE_NAME的值作為標題。 不過,您可以變更 NODE_CAPTION 的值,以程序設計方式或使用查看器來更新叢集的顯示名稱。 模型會自動產生標題。 標題的內容取決於模型的類型,以及節點類型。

在判定樹模型中,視樹狀結構中的層級而定,NODE_CAPTION和NODE_DESCRIPTION有不同的資訊。 如需詳細資訊和範例,請參閱 節點標題和節點描述

CHILDREN_CARDINALITY
估計節點擁有的子係數目。

父節點 指出已建立模型的可預測屬性數目。 系統會為每個可預測屬性建立樹狀結構。

樹狀節點 每個樹狀結構的 [所有 節點都會告訴您目標屬性使用多少值。

  • 如果目標屬性是離散的,則值會等於 遺漏 狀態的相異值數目加上 1。

  • 如果可預測的屬性是連續的,值會告訴您有多少值區用來建立連續屬性的模型。

[永遠 0] 分葉節點。

PARENT_UNIQUE_NAME
節點父代的唯一名稱。 根層級的任何節點會傳回NULL。

NODE_DESCRIPTION
節點的描述。

在判定樹模型中,視樹狀結構中的層級而定,NODE_CAPTION和NODE_DESCRIPTION有不同的資訊。

如需詳細資訊和範例,請參閱 節點標題和節點描述

NODE_RULE
規則的 XML 描述,描述目前節點的直接父節點路徑。

如需詳細資訊和範例,請參閱 節點規則和臨界規則

MARGINAL_RULE
描述從模型父節點到目前節點之路徑之規則的 XML 描述。

如需詳細資訊,請參閱 節點規則和臨界規則

NODE_PROBABILITY
與此節點相關聯的機率。

如需詳細資訊,請參閱 Probability

MARGINAL_PROBABILITY
從父節點到達節點的機率。

如需詳細資訊,請參閱 Probability

NODE_DISTRIBUTION
包含節點機率直方圖的數據表。 此數據表中的資訊會根據可預測的屬性是連續或離散變數而有所不同。

模型根節點 此數據表是空的。

(All) 節點 包含整個模型的摘要。

內部節點 包含其分葉節點的匯總統計數據。

分葉節點 包含預測結果的支持和機率,因為路徑中的所有條件都導致目前分葉節點。

回歸節點 包含回歸公式,代表輸入與可預測屬性之間的關聯性。

如需詳細資訊,請參閱 離散屬性的節點散發 和連續屬性 節點散發

NODE_SUPPORT
支援此節點的案例數目。

MSOLAP_MODEL_COLUMN
指出包含可預測屬性的數據行。

MSOLAP_NODE_SCORE
顯示與節點相關聯的分數。 如需詳細資訊,請參閱 節點分數

MSOLAP_NODE_SHORT_CAPTION
用於顯示用途的標籤。

言論

判定樹模型沒有個別的節點來儲存整個模型的統計數據,不同於貝氏機率分類或類神經網路模型中發現的臨界統計數據節點。 相反地,模型會為每個可預測屬性建立個別的樹狀結構,並在樹狀結構頂端有一個 (All) 節點。 每個樹狀結構彼此無關。 如果您的模型只包含一個可預測的屬性,則只有一個樹狀結構,因此只有一個 (All) 節點。

代表輸出屬性的每個樹狀結構都會另外細分為代表分割的內部分支(NODE_TYPE = 3)。 每個樹狀結構都包含目標屬性分佈的相關統計數據。 此外,每個分葉節點 (NODE_TYPE = 4) 都包含描述輸入屬性及其值的統計數據,以及支援每個屬性值組的案例數目。 因此,在判定樹的任何分支中,您可以輕鬆地檢視機率或數據分佈,而不需要查詢源數據。 樹狀結構的每個層級都必須代表其立即子節點的總和。

如需如何擷取這些統計數據的範例,請參閱 判定樹模型查詢範例

Top

判定樹結構的範例

若要瞭解判定樹的運作方式,請考慮範例,例如 AdventureWorks 自行車購買者案例。 假設可預測的屬性是客戶購買,判定樹演算法會嘗試在您提供的所有輸入中尋找一個數據行,最有效地偵測可能購買自行車的客戶,以及不太可能購買自行車的客戶。 例如,模型可能會發現 Age 是購買行為的最佳指標。 具體來說,30歲以上的客戶很可能購買自行車,而所有其他客戶都不太可能購買。 在此案例中,模型會在 Age 屬性上建立 分割。 這表示樹狀結構分成兩個分支,一個包含 30 歲以上的客戶,另一個則包含 30 歲以下的客戶。 新的分支會在模型結構中表示為兩個新的內部樹狀結構(NODE_TYPE = 3)。

針對每個分支,模型會繼續尋找用於區分客戶的其他屬性。 如果數據中沒有足夠的辨識項無法繼續建立客戶的子群組,模型就會停止建置樹狀結構。 不論分割有多好,或值是否為 Null 或遺失,模型也會在節點中的案例數目太小而無法繼續時停止建置樹狀結構。 藉由提早停止樹狀結構的成長,您會防止模型定型太接近一組特定的數據集。

每個內部樹狀節點都包含分葉節點,提供目前分類結果的結果明細。 例如,您可能有代表 Age >= 30 且 Gender = Male 的內部節點。 此群組的節點會顯示此類別中有多少客戶已購買或未購買專案。 例如,分類可能包含下列樹狀結構分割:

內部樹狀結構 分裂
年齡 >= 30 年齡 >= 30,性別 = 男性
年齡 >= 30,性別 = 女性
年齡 < 30 年齡 < 30 和性別 = 男性
年齡 < 30 歲和性別 = 女性

當您使用判定樹模型進行預測時,模型會採用您提供給它的屬性做為自變數,並遵循樹狀結構中的屬性路徑。 一般而言,所有預測都會移至分葉,而內部節點只會用於分類。

分葉節點一律具有 4(散發)的NODE_TYPE,並包含直方圖,告知您提供的屬性,每個結果(購買或未購買)的機率。 例如,如果您要求預測男性超過 60 歲的新客戶,模型將會查閱對應的節點 (Age > 30 和 Gender = Male),然後傳回您所指定結果的機率。 這些機率會儲存在節點 NODE_DISTRIBUTION 數據表中。

如果可預測屬性是連續數位,演算法會嘗試建立回歸公式,以模型化可預測屬性與輸入之間的關聯性。

Top

節點標題和節點描述

在判定樹模型中,節點標題和節點描述包含類似的資訊。 不過,當您更接近分葉節點時,節點描述會更完整,並包含更多資訊。 節點標題和節點描述都是本地化的字串。

描述
顯示屬性,這個屬性會區分該特定節點相對於父節點。 節點標題會根據分割條件定義母體擴展的子區段。 例如,如果分割在 [Age] 上且它是三向分割,則三個子節點的節點標題可能是 “[Age] < 40”、“40 <= [Age] < 50”、“[Age] >= 50”。
NODE_DESCRIPTION 包含從模型父節點開始,區分該節點與其他節點之屬性的完整清單。 例如,產品名稱 = Apple,Color = Red。

Top

節點規則和臨界規則

NODE_RULE和MARGINAL_RULE數據行包含與NODE_CAPTION和NODE_DESCRIPTION數據行相同的資訊,但以 XML 片段表示資訊。 節點規則是完整路徑的 XML 版本,而臨界規則則表示最新的分割。

XML 片段所表示的屬性可以是簡單或複雜。 簡單屬性包含模型數據行的名稱,以及屬性的值。 如果模型數據行包含巢狀數據表,則巢狀數據表屬性會表示為數據表名稱、索引鍵值和屬性的串連。

注意

SQL Server SQL Server Analysis Services 支援 PMML 標準 2.0 版,具有擴充功能以支援使用巢狀數據表。 如果您的數據包含巢狀數據表,而且您產生模型的 PMML 版本,則包含述詞的模型中的所有元素都會標示為延伸模組。

Top

離散屬性的節點分佈

在判定樹模型中,NODE_DISTRIBUTION數據表包含有用的統計數據。 不過,統計數據的類型取決於樹狀結構是否預測離散或連續屬性。 本節描述離散屬性的節點散發統計數據的意義。

屬性名稱和屬性值

在分類樹狀結構中,屬性名稱一律包含可預測數據行的名稱。 此值會告訴您樹狀結構所預測的內容。 由於單一樹狀結構一律代表單一可預測屬性,因此在整個樹狀結構中重複這個值。

針對離散數據類型,屬性值字段會列出可預測數據行的可能值,加上 遺漏 值。

支援

每個節點的支援值會告訴您此節點包含多少案例。 在 (All) 層級,您應該會看到用來定型模型之案例的完整計數。 對於樹狀結構中的每個分割,支援值是已分組到該樹狀節點的案例計數。 分葉節點中的案例總和,必然等於樹狀結構父節點中的案例計數。

對於代表連續屬性的節點,數據中存在 Null 可能會導致一些反直覺的結果。 例如,如果有 m 案例,平均值會計算為 sum(所有案例)/n,其中 n 是小於 m 的數位,而 m-n 表示遺漏值的案例計數。 支援也會以 n 表示。

概率

與每個節點相關聯的機率會告訴您整個數據集中的任何案例最終都會出現在這個特定節點的機率。 機率分數會同時計算整個樹狀結構,以及立即分割。

例如,下表顯示非常簡單的模型,有100個案例。

內部樹狀結構 分葉節點 相對於父節點的機率 相對於最上層節點的機率
年齡 >= 30 60 年齡 >= 30,性別 = 男性 50 50/60 = .83 50/100 = .5
年齡 >= 30,性別 = 女性 10 10/60 = .16 10/100 = .10
年齡 < 30 40 年齡 < 30 和性別 = 男性 30 30/40 = .75 30/100 = .30
年齡 < 30 歲和性別 = 女性 10 10/40 = .25 10/100 = .10

所有模型中都會進行小型調整,以考慮可能的遺漏值。 對於連續屬性,每個值或值範圍都會以狀態表示(例如 Age <30、Age = 30 和 Age >30),而且機率的計算方式如下:狀態存在(value = 1),有些其他狀態存在(value = 0),狀態 遺漏。 如需如何調整機率以表示遺漏值的詳細資訊,請參閱 遺漏值 (Analysis Services - 數據採礦)

每個節點的機率幾乎直接從分佈計算,如下所示:

Probability = (狀態支援 + 先前狀態支援) / (節點支援加上先前節點支援)

SQL Server Analysis Services 會針對每個節點使用機率來比較預存機率與先前的機率,以判斷從父節點到子節點的路徑是否表示強推斷。

進行預測時,分佈的機率必須與節點的機率平衡,才能平滑機率。 例如,如果樹狀結構中的分割以9000/1000的比例分隔大小寫,則樹狀結構非常不平衡。 因此,來自小型分支的預測不應與來自有許多案例之分支的預測具有相同權數。

方差

根據預期的分佈,變異數是樣本中散佈值方式的量值。 對於離散值,變異數依定義為 0。

如需如何計算連續值變異數的資訊,請參閱 線性回歸模型的採礦模型內容(Analysis Services - 數據採礦)

實值類型

實值類型數據行提供NODE_DISTRIBUTION數據表中其他數據行中提供之數值意義的相關信息。 您可以使用查詢中的實值類型,從巢狀數據表擷取特定數據列。 如需範例,請參閱 判定樹模型查詢範例

MiningValueType 列舉中的型別中,下列專案用於分類樹狀結構中。

實值類型 描述
1 (遺漏) 指出與遺漏值相關的計數、機率或其他統計數據。
4 (離散) 指出與離散或離散化值相關的計數、機率或其他統計數據。

如果模型包含連續可預測屬性,樹狀結構也可能包含回歸公式特有的實值型別。 如需回歸樹狀結構中使用的實值型別清單,請參閱 線性回歸模型(Analysis Services - 數據採礦)的採礦模型內容

節點分數

節點分數代表樹狀結構每個層級稍微不同的資訊。 一般而言,分數是一個數值,可告訴您透過分割條件來達成分割有多好。 此值會以雙精度浮點表示,其中較高的值比較好。

根據定義,模型節點和所有分葉節點的節點分數為0。

針對代表每個樹狀結構頂端的 [全部] 節點,MSOLAP_NODE_SCORE數據行包含整個樹狀結構中的最佳分割分數。

對於樹狀結構中的所有其他節點(分葉節點除外),每個節點的分數都代表目前節點的最佳分割分數,減去父節點的分割分數。 一般而言,父節點的分割分數應該一律優於其任何一個子節點上的分割分數。 這是因為判定樹模型最好先在最重要的屬性上分割。

注意

如果您建立同時具有連續和離散可預測屬性的判定樹模型,您會在代表每個樹狀結構的 [所有] 節點中看到完全不同的分數。 每個模型都應該獨立考慮,用於評分回歸的方法與用於評分分類的方法完全不同。 無法比較節點分數值。

Top

判定樹模型中的回歸節點

如果判定樹模型包含具有連續數值數據的可預測屬性,則Microsoft判定樹演算法會尋找預測狀態與輸入變數之間關聯性為線性的數據區域。 如果演算法成功尋找線性關聯性,它會建立代表線性回歸的特殊樹狀結構(NODE_TYPE = 25)。 這些回歸樹狀節點比代表離散值的節點更為複雜。

一般而言,回歸會將連續相依變數中的變更對應為輸入變更的函式。 如果相依變數具有任何連續輸入,且輸入與預測值之間的關聯性足以計算成折線圖,則回歸的節點會包含公式。

不過,如果輸入與預測值之間的關聯性 非線性,則會改為建立分割,就像標準判定樹一樣。 例如,假設 A 是可預測的屬性,而 B 和 C 是輸入,其中 C 是連續實值型別。 如果 A 與 C 之間的關聯性在數據的某些部分相當穩定,但在其他部分則不穩定,則演算法會建立分割來表示數據的不同區域。

分割條件 結果節點
如果 n < 5 關聯性可以表示為方程式 1
如果 n 介於 5 到 10 之間 沒有方程式
如果 n > 10 關聯性可以表示為方程式 2

如需回歸節點的詳細資訊,請參閱 線性回歸模型(Analysis Services - 數據採礦)的採礦模型內容

另請參閱

採礦模型內容 (Analysis Services - 數據採礦)
數據採礦模型查看器
數據採礦查詢
Microsoft 判定樹演算法