溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

大數(shù)據(jù)機(jī)器學(xué)習(xí)基礎(chǔ)中怎么用可視化方式理解決策樹

發(fā)布時間:2021-12-07 11:10:31 來源:億速云 閱讀:155 作者:柒染 欄目:大數(shù)據(jù)

大數(shù)據(jù)機(jī)器學(xué)習(xí)基礎(chǔ)中怎么用可視化方式理解決策樹剪枝,相信很多沒有經(jīng)驗(yàn)的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。

決策樹的可視化

剪枝

如果不對決策樹設(shè)置任何限制,它可以生成一顆非常龐大的樹,決策樹的樹葉節(jié)點(diǎn)所覆蓋的訓(xùn)練樣本都是“純”的。這樣決策樹在訓(xùn)練樣本上非常精準(zhǔn),但是在測試集上就沒那么好了。
層數(shù)越多,葉結(jié)點(diǎn)越多,分的越細(xì)致,對訓(xùn)練數(shù)據(jù)分的也越深,越容易過擬合,導(dǎo)致對測試數(shù)據(jù)預(yù)測時反而效果差。要解決這個問題就需要對決策樹進(jìn)行「剪枝」。

剪枝的方案主流的有兩種,一種是預(yù)剪枝,一種是后剪枝。

所謂的預(yù)剪枝,即是在生成樹的時候就對樹的生長進(jìn)行限制,防止過度擬合。比如我們可以限制決策樹在訓(xùn)練的時候每個節(jié)點(diǎn)的數(shù)據(jù)只有在達(dá)到一定數(shù)量的情況下才會進(jìn)行分裂,否則就成為葉子節(jié)點(diǎn)保留?;蛘呶覀兛梢韵拗茢?shù)據(jù)的比例,當(dāng)節(jié)點(diǎn)中某個類別的占比超過閾值的時候,也可以停止生長。

下面我們重點(diǎn)講后剪枝,因?yàn)镃ART采用的就是用的這個方法。

 

CART剪枝算法流程

大數(shù)據(jù)機(jī)器學(xué)習(xí)基礎(chǔ)中怎么用可視化方式理解決策樹  

CART樹采用的是后剪枝方法,即先從訓(xùn)練集生成一顆完整的決策樹,然后自底向上地對非葉結(jié)點(diǎn)進(jìn)行考察,若將該結(jié)點(diǎn)對應(yīng)的子樹替換為葉結(jié)點(diǎn)能帶來泛化性能提升,則將該子樹替換為葉結(jié)點(diǎn)。

李航老師《統(tǒng)計學(xué)習(xí)方法》中具體介紹了 CART 剪枝算法的步驟流程。

大數(shù)據(jù)機(jī)器學(xué)習(xí)基礎(chǔ)中怎么用可視化方式理解決策樹看起來是不是很復(fù)雜?其實(shí)核心思想就是對原始的決策時T0,從底部根節(jié)點(diǎn)不斷向上剪枝,直到根節(jié)點(diǎn)為止。在此過程中,就形成了很多子樹{T0,T1,...,Tn};然后通過交叉驗(yàn)證法在驗(yàn)證集上對{T0,T1,...,Tn}測試,從中選擇最優(yōu)子樹。

怎么度量最優(yōu)呢?就要先了解一下決策樹損失函數(shù):

剪枝前是以 t 為根結(jié)點(diǎn)的子樹 Tt 的損失函數(shù)是:

大數(shù)據(jù)機(jī)器學(xué)習(xí)基礎(chǔ)中怎么用可視化方式理解決策樹C(Tt)為訓(xùn)練數(shù)據(jù)的預(yù)測誤差,分類樹是用基尼系數(shù)度量,回歸樹是均方差度量。|Tt|是子樹T的葉子節(jié)點(diǎn)的數(shù)量。式中唯一的未知變量是正則化參數(shù) α ,其值越大,就意味著剪枝力度越大。當(dāng) α 從 0 慢慢增大到 ∞ 時,最優(yōu)子樹會慢慢從最開始的整體樹,一點(diǎn)一點(diǎn)剪枝,直到變成單結(jié)點(diǎn)樹。對于固定的 α,一定存在損失函數(shù)Cα(T)最小的子樹,我們稱之為最優(yōu)子樹,記為 Tα 。

 

兩種剪枝策略對比

后剪枝決策樹通常比預(yù)剪枝決策樹保留了更多的分支;
后剪枝決策樹的欠擬合風(fēng)險很小,泛化性能往往優(yōu)于預(yù)剪枝決策樹;
后剪枝決策樹訓(xùn)練時間開銷比未剪枝決策樹和預(yù)剪枝決策樹都要大的多。其實(shí),只需掌握后剪枝就行了。

 

CART決策樹剪枝(參數(shù)解讀)

sklearn.tree.DecisionTreeClassifier (criterion=’gini’, splitter=’best’, max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features=None, random_state=None, max_leaf_nodes=None, min_impurity_decrease=0.0, min_impurity_split=None, class_weight=None, presort=False)

  • max_depth:限制樹的最大深度

決策樹多生長一層,對樣本量的需求會增加一倍,所以限制樹深度能夠有效地限制過擬合。在高維度低樣本量時非常有效;建議從=3開始嘗試。

  • min_samples_leaf:一個節(jié)點(diǎn)在分枝后,每個子節(jié)點(diǎn)都必須至少包含的訓(xùn)練樣本數(shù)量

一個節(jié)點(diǎn)在分枝后,每個子節(jié)點(diǎn)都必須包含至少min_samples_leaf個訓(xùn)練樣本,兩種取值:(1)整數(shù) (2)浮點(diǎn)型:如果葉節(jié)點(diǎn)中含有的樣本量變化很大,輸入浮點(diǎn)數(shù)表示樣本量的百分比。如果分支后的子節(jié)點(diǎn)不滿足參數(shù)條件,分枝就不會發(fā)生,或者,分枝會朝著滿足每個子節(jié)點(diǎn)都包含min_samples_leaf個樣本的方向去發(fā)生。

這個參數(shù)可以保證每個葉子的最小尺寸,在回歸問題中避免低方差,過擬合的葉子節(jié)點(diǎn)出現(xiàn)。搭配max_depth使用,在回歸樹中可以讓模型變得更加平滑;建議從=5開始;對于類別不多的分類問題,=1通常就是最佳選擇。

  • min_samples_split:一個節(jié)點(diǎn)必須要至少包含的訓(xùn)練樣本數(shù)量

如果小于這個數(shù)量,這個節(jié)點(diǎn)才允許被分枝,否則分枝就不會發(fā)生。

  • max_features:分枝時考慮的最大特征個數(shù)

即在分支時,超過限制個數(shù)的特征都會被舍棄。但是在不知道決策樹中的各個特征的重要性的情況下,強(qiáng)行設(shè)定這個參數(shù)可能會導(dǎo)致模型學(xué)習(xí)不足。

  • min_impurity_decrease:子父節(jié)點(diǎn)信息增益的最小值

信息增益是父節(jié)點(diǎn)的信息熵與子節(jié)點(diǎn)信息熵之差,信息增益越大,說明這個分支對模型的貢獻(xiàn)越大;相反的,如果信息增益非常小,則說明該分支對模型的建立貢獻(xiàn)不大。又由于分支需要的計算量又非常大,所以如果信息增益非常小時,我們就選擇放棄該分支。

以上便是剪枝常用到的參數(shù)了。

 

實(shí)例

如果不對決策樹設(shè)置任何限制,生成結(jié)果如下:大數(shù)據(jù)機(jī)器學(xué)習(xí)基礎(chǔ)中怎么用可視化方式理解決策樹每個葉子結(jié)點(diǎn)gini指數(shù)都等于 0 。

iris = load_iris()
clf = tree.DecisionTreeClassifier(random_state=66,min_samples_leaf=15)
clf = clf.fit(iris.data, iris.target)

dot_data = tree.export_graphviz(clf, out_file=None, 
                         feature_names=iris.feature_names,  
                         class_names=iris.target_names,  
                         filled=True, rounded=True,  
                         special_characters=True)  
graph = pydotplus.graph_from_dot_data(dot_data)  
Image(graph.create_png())
 

設(shè)置葉子節(jié)點(diǎn)最少樣本數(shù)min_samples_leaf=15,這個值限制了葉子節(jié)點(diǎn)最少的樣本數(shù),如果某葉子節(jié)點(diǎn)數(shù)目小于樣本數(shù),則會和兄弟節(jié)點(diǎn)一起被剪枝。

大數(shù)據(jù)機(jī)器學(xué)習(xí)基礎(chǔ)中怎么用可視化方式理解決策樹

看完上述內(nèi)容,你們掌握大數(shù)據(jù)機(jī)器學(xué)習(xí)基礎(chǔ)中怎么用可視化方式理解決策樹剪枝的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI