決策樹實現 分類與回歸樹(CART)

2021-08-20 21:11:54 字數 3335 閱讀 7220

決策樹是一種很基礎而又重要的機器學習演算法,是眾多更高階演算法實現的基礎,比較famous的決策樹演算法有id3,c4.5和分類與回歸樹(classify and regression tree)。要理解哪些更高階的演算法,對這些決策樹演算法有個好的理解是very useful的!

既是分類樹,又可以做回歸樹!

cart是二叉樹!

原理解析

cart用於分類時不同於id3利用資訊增益和c4.5的利用資訊增益率進行分支操作,她利用的是gini不純度來作為分類的依據。那麼,何為基尼不純度呢?如下式所描述的:

i g(

f)=∑

i=1m

fi(1

−fi)

=∑i=

1mfi

−∑i=

1mfi

2=1−

∑i=1

mfi2

i_g(f)=\sum_^mf_i(1-f_i)=\sum_^mf_i-\sum_^mf_i^2=1-\sum_^mf_i^2

ig​(f)

=i=1

∑m​f

i​(1

−fi​

)=i=

1∑m​

fi​−

i=1∑

m​fi

2​=1

−i=1

∑m​f

i2​當基尼不純度為0時,集合中的元素均屬於同一類別。

基尼不純度越大,純度越小,元素中的分類越多樣。

當所有分類的比例相同時,即f1=

f2=.

..=f

m=1m

f_1=f_2=...=f_m=\frac

f1​=f2

​=..

.=fm

​=m1

​時,所有基尼不純度最大,純度最低。此時有ig(

f)=1

−∑i=

1m1m

2=1−

1m

i_g(f)=1-\sum_^m\frac=1-\frac

ig​(f)

=1−i

=1∑m

​m21

​=1−

m1​這樣一來,我想為什麼用gini不純度可以作為cart的分類依據就很明顯了。

而當cart用於回歸時,構建樹的模型可以表達為:

f (x

)=∑m

=1mc

mi(x

∈rm)

f(x)=\sum_^c_mi(x∈r_m)

f(x)=m

=1∑m

​cm​

i(x∈

rm​)

其中,資料空間被劃分為r

1r_1

r1​,r

2r_2

r2​,…,r

mr_m

rm​ ,c

mc_m

cm​ 則是每乙個資料空間上的乙個輸出

cart實現:決策樹生成

cart的實現包括決策樹生成和剪枝兩個步驟。

1. 回歸樹的生成

參考《統計學習方法》李航

輸入:訓練資料集d

輸出:回歸樹f(x)

訓練步驟:

(1)選擇最優切分變數j與切分點s,求解

m in

j,s[

minc

1∑xi

∈r1(

j,s)

(yi−

c1)2

+min

c2∑x

i∈r2

(j,s

)(yi

−c2)

2]

min_[min_\sum_(y_i-c_1)^2+min_\sum_(y_i-c_2)^2]

minj,s

​[mi

nc1​

​xi​

∈r1​

(j,s

)∑​(

yi​−

c1​)

2+mi

nc2​

​xi​

∈r2​

(j,s

)∑​(

yi​−

c2​)

2]遍歷所有的切分變數j,對固定的j,掃瞄所有的切分s,選擇使得上式最小的(j,s)對。

(2)用選定的(j,s)對劃分區域,決定相應的輸出值:

r 1(

j,s)

=,r2

(j,s

)=

r_1(j,s)=\≤s\},r_2(j,s)=\>s\}

r1​(j,

s)=,

r2​(

j,s)

=katex parse error: expected 'eof', got '\substack' at position 1: \̲s̲u̲b̲s̲t̲a̲c̲k̲_m=\fra…

(3)對劃分的兩個子區域遞迴呼叫(1)(2),直至滿足停止條件

(4)將輸入空間劃分為m個區域r

1r_1

r1​,r

2r_2

r2​,...

.....

.,rm

r_mrm

​,生成決策樹:

katex parse error: expected 'eof', got '\substack' at position 18: …x)=\sum_^m\̲s̲u̲b̲s̲t̲a̲c̲k̲_mi(x∈r_…

2. 分類樹的生成

輸入:訓練資料集d,停止訓練的條件

輸出:cart決策樹

根據訓練資料集,從根節點開始,遞迴的對每個節點呼叫以下操作。

(1)設結點的訓練資料集為d,計算現有特徵對該資料集的基尼指數。此時,對每乙個特徵a,對其可能取的每個值a,根據樣本點對a=a的測試為「是」或「否」將d分割成d

1d_1

d1​和d

2d_2

d2​兩部分,再計算a=a時的基尼指數。

(2)在所有可能的特徵a以及它們所有可能的切分點a中,選擇基尼指數最小的特徵及其對應的切分點作為最優特徵與最優切分點。依最優特徵與最優切分點,從現結點生成兩個子節點,將訓練資料集依特徵分配到兩個子節點中去。

(3)對兩個子節點遞迴的呼叫(1),(2),直至滿足停止條件。

(4)生成cart決策樹。

演算法停止的條件是節點中的樣本個數小於預定閾值,或樣本集的基尼指數小於預定閾值(樣本基本屬於同一類),或者沒有更多特徵。

cart實現:剪枝

cart剪枝詳解

reference

決策樹演算法原理(下), 這作者也太牛了

決策樹(分類與回歸)

首先我們要知道,決策樹是根據訓練集構造乙個樹結構,每個分叉相當於一次判斷,每個葉子節點就是模型的輸出。如下圖所示 以輸入特徵為離散值的分類決策樹為例,周志華老師 機器學習 給出的演算法偽 決策樹分類演算法選擇最優屬性演算法常用資訊增益法。首先了解資訊熵,它的公式如下 e nt d k 1 y pkl...

決策樹 分類 回歸

決策樹,主要用來分類和回歸 一 首先看下分類決策樹 載入鳶尾花資料集 from sklearn.datasets import load iris iris load iris x,y iris.data,iris.target features iris.feature names 載入交叉驗證莫...

決策樹和CART決策樹

首先簡單介紹下決策樹 說到決策樹肯定離不開資訊熵 什麼是資訊熵 不要被這名字唬住,其實很簡單 乙個不太可能的時間居然發生了,要比乙個非常可能的時間發生提供更多的資訊。訊息說 今天早上太陽公升起 資訊量是很少的,以至於沒有必要傳送。但另一條訊息說 今天早上日食 資訊量就很豐富。概率越大資訊量就越少,與...