天天看點

決策樹模型

作者:spssau

SPSSAU-線上SPSS分析軟體

決策樹模型DecisionTree SPSSAU

決策樹模型

決策樹模型

決策樹(DecisionTree)常用于研究類别歸屬和預測關系的模型,比如是否抽煙、是否喝酒、年齡、體重等4項個人特征可能會影響到‘是否患癌症’,上述4項個人特征稱作‘特征’,也即自變量(影響因素X),‘是否患癌症’稱為‘标簽’,也即因變量(被影響項Y)。決策樹模型時,其可首先對年齡進行劃分,比如以70歲為界,年齡大于70歲時,可能更容易歸類為‘患癌症’,接着對體重進行劃分,比如大于50公斤為界,大于50公斤時更可能劃分為‘患癌症’,依次循環下去,特征之間的邏輯組合後(比如年齡大于70歲,體重大于50公斤),會對應到是否患癌症這一标簽上。

決策樹是一種預測模型,為讓其有着良好的預測能力,是以通常需要将資料分為兩組,分别是訓練資料和測試資料。訓練資料用于建立模型使用,即建立特征組合與标簽之間的對應關系,得到這樣的對應關系後(模型後),然後使用測試資料用來驗證目前模型的優劣。通常情況下,訓練資料和測試資料的比例通常為9:1,8:2,7:3,6:4或者5:5(比如9:1時指所有資料中90%作為訓練模型使用,餘下10%作為測試模型好壞使用)。具體比例情況似研究資料量而定無固定标準,如果研究資料較少,比如僅幾百條資料,可考慮将70%或者60%,甚至50%的資料用于訓練,餘下資料用于測試。上述中包括模型建構和模型預測兩項,如果訓練資料得到的模型優秀,此時可考慮将其進行儲存并且部署出去使用(此為計算機工程中應用,SPSSAU暫不提供);除此之外,當決策樹模型建構完成後可進行預測,比如新來一個病人,他是否會患癌症及患癌症的可能性有多高。

決策樹模型可用于特征品質判斷,比如上述是否抽煙、是否喝酒、年齡、體重等4項,該四項對于‘是否患癌症’的預測作用重要性大小可以進行排名用于篩選出最有用的特征項。

決策樹模型的建構時,需要對參數進行設定,其目的在于建構良好的模型(良好模型的标準通常為:訓練資料得到的模型評估結果良好,并且測試資料時評估結果良好)。需要特别注意一點是:訓練資料模型評估結果可能很好(甚至準确率等各項名額為100%),但是在測試資料上評估結果确很糟糕,此種情況稱為‘過拟合’。因而在實際研究資料中,需要特别注意此種情況。模型的建構時通常情況下參數設定越複雜,其會帶來訓練資料的模型評估結果越好,但測試效果卻很糟糕,因而在決策樹建構時,需要特别注意參數的相關設定,接下來會使用案例資料進行相關說明。

決策樹模型案例

Contents

1背景2

2理論2

3操作3

4SPSSAU輸出結果4

5文字分析4

6剖析7

1背景

使用經典的‘鸢尾花分類資料集’進行案例示範,其資料集為150個樣本,包括4個特征屬性(4個自變量X),分别是花萼長度,花萼寬度,花瓣長度,花瓣寬度,标簽為鸢尾花卉類别,共包括3個類别分别是剛毛鸢尾花、變色鸢尾花和弗吉尼亞鸢尾花(下稱A、B、C三類)。

2理論

決策樹模型的原理上,其第1步是找出最優的特征和其分割點,比如影響是否患癌症的特征最可能是年齡,并且分割點可能是70歲,小于70歲可能歸為‘不患癌症’,70歲及以上可能歸為‘患癌症’。此第1步時會涉及到2個專業名詞,分别是‘節點分裂标準’和‘節點劃分方式’。第2步是找出次優的特征和其分割點,繼續進行拆分。一直循環下去。

關于決策樹模型時,通常涉及到以下參數值,如下:

決策樹模型

節點分裂标準:其指模型找到特征優先順序的計算方式,共有兩種,分别是gini系數和entropy系數,二者僅為計算标準的差別功能完全一緻,一般情況下使用gini系數。

特别提示:

節點分裂标準的數學原理為:如果按某特征及其分割點後(比如年齡這個特征并且70歲這個分割點)後,分成兩組時,一組為患癌症,一組不患癌症,如果‘分的特别開’,特别純,混雜性特别小(比如一組為患癌症确實全部都患問卷,一組不患癌症确實都不患癌症),那麼這個特征就是優秀的,節點分裂标準正是用于衡量特征的優劣。

節點劃分方式:包括兩種,一是best法即完全按照節點分裂标準進行計算,另一種是random随機法,随機法會減少過拟合現象,但通常預設使用best法。

節點分列最小樣本:比如大于等于70歲劃分為一組,如果發現70歲及以上時患癌症的樣本量特别小,說明不能繼續劃分分組,一般情況下該值應該越大越好,過小的話容易帶來過拟合現象。

葉節點最小樣本量:比如大于等于70歲劃分為一組,那麼這個組别時最小的樣本量需要多少,SPSSAU預設是2,一般情況下:該值越大越可能減少過拟合現象,該值越小越容易導緻過拟合。

樹最大深度:比如上述先按年齡劃分,接着小于70歲時,再按次優特征比如體重進行劃分,接着再按次次優特征比如是否吸煙進行劃分,此處則出現劃分的層次(即權最大深度),該值可以自行指定,當層次越多(樹最大深度)時,此時模型越為複雜,拟合效果通常更好,但也可能帶來過拟合現象,因而可結合特征數量及輸出等,調整該參數值,確定模型相對簡單但拟合效果良好時。

3操作

本例子操作如下:

決策樹模型

訓練集比例預設選擇為:0.8即80%(150*0.8=120個樣本)進行訓練決策樹模型,餘下20%即30個樣本(測試資料)用于模型的驗證。需要注意的是,多數情況下,會首先對資料進行标準化處理,處理方式一般使用為正态标準化,此處理目的是讓資料保持一緻性量綱。當然也可使用其它的量綱方式,比如區間化,歸一化等。

接着對參數設定如下:

決策樹模型

節點分裂标準預設為gini系數(該參數值隻是計算分裂标準的方式,不需要設定),節點劃分方式為best法,即為結合特征的優劣順序進行分類劃分,如果為了設定參數對比需要考慮,建議可對該參數值進行切換為random即随機特征的優先順序,用于對比模型訓練效果。

節點分列最小樣本量預設為2即可,葉節點最小樣本量預設為1即可。需要注意的是:如果資料量較大時,建議将該2個參數值盡量大,以減少過拟合現象,但該2個參數值越大時通常訓練模型的拟合效果越差。具體應該以測試資料的拟合效果為準,因為訓練模型容易出現過拟合現象。樹最大深度這個參數時,其代表決策樹最多有幾層的意思,該參數值設定越大時,訓練模型拟合效果通常越好,但可能帶來過拟合情況,本案例出于示範需求,先設定為4層。(另提示:樹最大深度會受到節點分裂最小樣本量、葉節點最小樣本量的影響,并非設定為4它一定就會為4)。

4SPSSAU輸出結果

SPSSAU共輸出7項結果,依次為基本資訊彙總,決策樹結構圖,特征模型圖和特征權重圖,訓練集或測試集模型評估結果,測試集結果混淆矩陣,模型彙總表和模型代碼,如下說明:

上述表格中,決策樹結構圖用于展示決策樹建構的具體過程,通過決策樹結構圖可檢視到模型建構的具體步驟;特征模型圖和特征權重圖可用于檢視特征的相對重要性對比情況;模型評估結果(包括訓練集或測試集),其用于對模型的拟合效果判斷,尤其是測試集的拟合效果,非常重要,因而SPSSAU單獨提供測試集結果混淆矩陣,用于進一步檢視測試集資料的效果情況;模型彙總表格将各類參數值進行彙總,并且在最後,SPSSAU附錄核心的決策樹建構代碼,需要提示的是:SPSSAU機器學習算法子產品直接調用sklean包進行建構,因而研究者可使用核心代碼進行複現使用等。

5文字分析

決策樹模型

決策樹結構圖中:第1個矩陣稱為‘根節點’,下面為子節點,不能再細分的為‘葉子節點’。樹最大深度目前設定為4,上圖中除‘根節點’外為4層。針對每個節點(根節點或葉子節點),其包括四項,分别是‘劃分特征及分割點’,gini系數值,目前節點的樣本量,不同類别的樣本量。如下表格說明:

上述決策樹結構圖時,第1個點使用X[2],接着使用X[3],接着使用X[1],X[4],接着使用X[2]等,括号裡面數字表示放入模型的第幾個X。那麼這幾個X的綜合重要性情況如何,可檢視特征權重圖,如下:

決策樹模型

花萼寬的重要性路徑成本為0.5726,其對模型的作用力度最大,其次是花瓣長為0.3555。相對來看,花萼長和花瓣寬這兩項的重要性相對較弱,如果是進行特征篩選,可考慮隻留下最重要的兩項即可。

解讀完決策樹結構圖和特征重要性圖後,已經了解決策樹運作原理,其實質上是不斷地對各個特征進行循環劃分下去,根深度越深時,其劃分出來後通常拟合效果越好。但訓練資料拟合效果好,并不一定代表測試資料上也好,訓練資料拟合效果很容易‘造假’,即過拟合現象。因而接下來對模型拟合效果進行說明。

決策樹模型

上表格中分别針對訓練集和測試集,提供四個評估名額,分别是精确率、召回率、f1-scrore、準确率,以及平均名額和樣本量名額等,如下表格說明:

一般來說,f1-score名額值最适合,因為其綜合精确率和召回率兩個名額,并且可檢視其平均值(綜合)名額,本案例為0.992,接近于1非常高,但訓練資料名額拟合可以‘造假’即可能有過拟合現象,最準确的是檢視‘測試集資料’時的名額情況,本案例時測試資料占比是20%即30個樣本,其平均綜合f1-score值為0.906,可以簡單了解為模型拟合優度為90.6%,依舊比較高(即使小于訓練資料的0.992),整體說明目前模型拟合良好,即可用于特征篩選,資料進一步預測使用等。

另需要提示:當訓練資料的拟合效果遠好于測試資料時,通常則為‘過拟合現象’,但訓練資料的拟合效果不好但測試資料拟合效果好時,此種情況也不能使用,可能僅僅是偶然現象。因而可使用的模型應該為“訓練資料和測試資料上均有良好的拟合效果,并且差别應該較小”。

進一步地,可檢視測試資料的‘混淆矩陣’,即模型預測和事實情況的交叉集合,如下圖:

決策樹模型

‘混淆矩陣’時,右下三角對角線的值越大越好,其表示預測值和真實值完全一緻。上圖中A類共11個,其中10個預測準确,還有1個被預測成C類;B類共13個,11個預測準确,但2個被預測為C類;C類時全部預測準确。另外還可通過‘混淆矩陣’自行計算精确率、召回率和準确率等名額。

決策樹模型

最後針對模型彙總表,其展示建構決策樹的各項參數設定,包括針對資料進行标準化正态處理,參數值為norm,訓練集占比,節點分裂标準等名額值。并且将測試集合上的模型評估結果彙總在一個表格裡面。最後,SPSSAU輸出使用python中slearn包建構本次決策樹模型的核心代碼如下:

model= DecisionTreeClassifier(criterion=gini, max_depth=4,min_samples_leaf=1, min_samples_split=2, splitter=best)

model.fit(x_train,y_train)

6剖析

涉及以下幾個關鍵點,分别如下:

  • 決策樹模型時是否需要标準化處理?

一般建議是進行标準化處理,通常使用正态标準化處理方式即可。

  • 訓練集比例應該選擇多少?

如果資料量很大,比如1萬,那麼訓練集比例可以較高比如0.9,如果資料量較小,此時訓練集比例選擇較小預留出較多資料進行測試即可。

  • 儲存預測值

儲存預測值時,SPSSAU會新生成一個标題用于存儲模型預測的類别資訊,其數字的意義與模型中标簽項(因變量Y)的數字保持一緻意義。

  • 參數如何設定?

如果要進行參數設定,建議針對‘節點劃分方式’切換best和random,節點分列最小樣本量往上調,葉節點最小樣本量往上調,樹最大深度可考慮設定相對較小值。設定後,分别将訓練拟合效果,測試拟合效果進行彙總和對比,調整參數,找出相對最優模型。另建議保障訓練集和測試集資料的f1-score值在0.9以上。

  • SPSSAU中決策樹具體算法是什麼?

決策樹的具體算法通常包括ID3,C4.5, C5.0 和CART等,SPSSAU目前借助sklearn包進行決策樹,其算法為CART優化版,具體可點選檢視。

https://scikit-learn.org/stable/modules/tree.html#tree-algorithms-id3-c4-5-c5-0-and-cart

  • SPSSAU進行決策樹模型建構時,自變量X(特征項)中包括定類資料如何處理?

決策樹模型時本身并不單獨針對定類資料處理,如果有定類資料,建議對其啞變量處理後放入,關于啞變量可點選檢視。

http://spssau.com/front/spssau/helps/otherdocuments/dummy.html

  • SPSSAU中決策樹剪枝優化方式是什麼?

決策樹剪枝主要有兩種方式,分别是前置剪枝和後置剪枝,目前SPSSAU隻提供前置剪枝方式。

  • SPSSAU中決策樹模型合格的判斷标準是什麼?

機器學習模型中,通常均為先使用訓練資料訓練模型,然後使用測試資料測試模型效果。通常判斷标準為訓練模型具有良好的拟合效果,同時測試模型也有良好的拟合效果。機器學習模型中很容易出現‘過拟合’現象即假的好結果,因而一定需要重點關注測試資料的拟合效果。針對單一模型,可通過變換參數調優,與此同時,可使用多種機器學習模型,比如使用随機森林等,綜合對比選擇最優模型。

  • SPSSAU進行決策樹時提示資料品質異常?

目前決策樹模型支援分類任務,需要確定标簽項(因變量Y)為定類資料,如果為定量連續資料,也或者樣本量較少(或者非會員僅分析前100個樣本)時可能出現無法計算因而提示資料品質異常。