決策樹的基尼係數計算過程

2021-10-13 00:25:10 字數 3226 閱讀 1266

在介紹具體的計算之前,先從乙個例子入手吧。

先看看下面這個資料,我們需要通過前三列的特徵來推斷出最後一列是yes,no

chest pain

good blood circulation

blocked arteries

heart disease

nono

nono

yesyes

yesyes

yesyes

nono

yesno

???yes

etc…

etc…

etc…

etc…

chest pain

true

heart disease

yes:105

no:39

false

heart disease

yes:34

no:125

good blood circulation

true

heart disease

yes:37

no:127

false

heart disease

yes:100

no:33

blocked arteries

true

heart disease

yes:92

no:31

false

heart disease

yes:45

no:129

在統計資料的時候,若遇見缺失值,最簡單的辦法就是先跳過這個缺失值

從統計的資料可以看出,在某一特徵的條件下,無論是true或者false都有患有heart disease的人,同時也都有健康的人。且這兩個分布是不同,有的true中患有heart disease的多一些,有的false中患有heart disease的多一些,則就要引出另乙個概念—純度。剛剛將的那種情況其實就是不純的,那麼我們接下來的操作就是對其不斷的提純。

接下來引出基尼指數的概念:基尼指數遵循最小的準則,計算得到的基尼指數越小,則越純。接下來則以該特徵作為決策樹的乙個分支。但若當前節點的基尼指數小於待劃分節點的基尼指數時,則不需要劃分。

single_gini = 1−(

aa+b

)2−(

ba+b

)2

1-(\dfrac)^2-(\dfrac)^2

1−(a+b

a​)2

−(a+

bb​)

2gini_index = single_gini_true * a+b

a+b+

c+

d\dfrac

a+b+c+

da+b

​ + single_gini_false * c+d

a+b+

c+

d\dfrac

a+b+c+

dc+d

​第一次分支

chest pain

gini_index = 0.364

good blood

gini_indx = 0.360

blocked arteries

gini_index = 0.381

有上面這些結果可知,我們第一次分叉應該選擇good blood這個特徵,因為前面我們提到,在同一情況下乙個特徵的基尼指數越小,其純度也就越高,也就越具有代表性,分類的效果也就越好。上面三個例子相比較,我們應該選擇good blood這個作為決策樹的乙個分支。

第二次分支

我們第一次是以good blood為分支的那麼,假設選定該分支的true,那麼其基尼指數,用上面的公式可以得到大概是0.35(false分支上的計算也是同理,這裡我們只進行true分支上的基尼指數的計算)

進行分支後我們對剩餘的兩個特徵的值進行統計

chest pain

true

heart disease

yes:13

no:98

false

heart disease

yes:24

no:29

blocked arteries

true

heart disease

yes:24

no:25

false

heart disease

yes:13

no:102

並在此基礎上,我們進行第二次分支

接下來來計算chest pain和blocked arteries這兩類特徵在good blood這類特徵的分支下的基尼指數

chest pain

gini_index = 0.3

blocked arteries

gini_index = 0.29

因為0.29<0.3<0.35,故我們選擇blocked arteries作為 good blood的true分支下的乙個分支節點

第三次分支

假設選定該分支的true,那麼其基尼指數,用上面的公式可以得到大概是0.5

進行分支後我們對剩餘的特徵的值進行統計

chest pain

true

heart disease

yes:17

no:3

false

heart disease

yes:7

no:22

並在此基礎上,我們進行第三次分支

接下來來計算chest pain這類特徵在blocked arteries這類特徵的分支下的基尼指數

chest pain

gini_index = 0.33

因為0.33<0.5,故我們選擇chest pain作為blocked arteries的true分支下的乙個分支節點

但假如選定的分支是false,那麼其基尼指數計算得到大概是0.2

chest pain

true

heart disease

yes:7

no:26

false

heart disease

yes:6

no:76

接下來來計算chest pain這類特徵在blocked arteries這類特徵的分支下的基尼指數

chest pain

gini_index = 0.29

因為0.29>0.2故該節點不需要分支,因為分支的目的是提純,而提純,則是選擇使基尼指數變小的那個特徵,而0.29>0.2基尼係數上公升,沒有達到提純的目的,故不需要分支。

決策樹 資訊熵 資訊增益 基尼係數

決策樹系列目錄 文末有彩蛋 決策樹 決策樹演算法原理 id3,c4.5,cart 決策樹 決策樹引數介紹 分類和回歸 決策樹 決策樹sklearn調參 gridsearchcv 決策樹 python 實現決策樹 決策樹應用例項 鐵達尼號分類 決策樹應用例項 使用者流失 模型 決策樹應用例項 銀行借貸...

決策樹的特徵選擇之1 夏農熵 基尼指數 誤分類誤差

特徵選擇是決策樹學習的重要內容,本文討論的特徵指標是夏農熵 基尼指數和誤分類誤差。決策樹學習的關鍵在如何選擇最優劃分屬性。一般而言,隨著劃分過程 斷進行,我們希望決策樹的分支結點所包含的樣本盡可能屬於同一類別,即結點的 純度 purity 越來越高。在分類樹中,劃分的優劣用不純度度 impurity...

基於單層決策樹的 AdaBoost的訓練及測試過程

1 整個實現的偽 python 對每次迭代 計算alpha 利用該決策樹的錯誤率進行計算 計算新的每個樣本的權重d 使用alpha進行計算,第一次分對的樣本,權重減小反之,權重增大 給最佳單側決策樹的 結果新增alpha權重 弱分類器 這裡指最佳的單側決策樹 的錯誤率越小,賦予該分類器的權重值alp...