1 概念
- CART決策樹使用"基尼指數" (Gini index)來選擇划分屬性,分類和回歸任務都可用。
- 基尼值Gini(D):從數據集D中隨機抽取兩個樣本,其類別標記不一致的概率
- Gini(D)值越小,數據集D的純度越高。
2 計算
- 數據集 D 的純度可用基尼值來度量:
\(p_k=\frac{c^k}{D}\),D為樣本的所有數量,\({c^k}\)為第k類樣本的數量。
- 基尼指數Gini_index(D):一般,選擇使划分后基尼系數最小的屬性作為最優化分屬性。
3 案例
請根據下圖列表,按照基尼指數的划分依據,做出決策樹。
序號 | 是否有房 | 婚姻狀況 | 年收入 | 是否拖欠貸款 |
---|---|---|---|---|
1 | yes | single | 125k | no |
2 | no | married | 100k | no |
3 | no | single | 70k | no |
4 | yes | married | 120k | no |
5 | no | divorced | 95k | yes |
6 | no | married | 60k | no |
7 | yes | divorced | 220k | no |
8 | no | single | 85k | yes |
9 | no | married | 75k | no |
10 | No | Single | 90k | Yes |
1、對數據集非序列標號屬性{是否有房,婚姻狀況,年收入}分別計算它們的Gini指數,取Gini指數最小的屬性作為決策樹的根節點屬性。
2、根節點的Gini值為:
3、當根據是否有房來進行划分時,Gini指數計算過程為:
4、若按婚姻狀況屬性來划分,屬性婚姻狀況有三個可能的取值{married,single,divorced},分別計算划分后的Gini系數增益。
對比計算結果,根據婚姻狀況屬性來划分根節點時取Gini指數最小的分組作為划分結果{married} | {single,divorced}。
5、同理可得年收入Gini:
對於年收入屬性為數值型屬性,首先需要對數據按升序排序,然后從小到大依次用相鄰值的中間值作為分隔將樣本划分為兩組。例如當面對年收入為60和70這兩個值時,我們算得其中間值為65。以中間值65作為分割點求出Gini指數。
根據計算知道,三個屬性划分根節點的指數最小的有兩個:年收入屬性和婚姻狀況,他們的指數都為0.3。此時,選取首先出現的屬性【married】作為第一次划分。
6、接下來,采用同樣的方法,分別計算剩下屬性,其中根節點的Gini系數為(此時是否拖欠貸款的各有3個records)
7、接下來,采用同樣的方法,分別計算剩下屬性,其中根節點的Gini系數為(此時是否拖欠貸款的各有3個records)
8、對於年收入屬性則有:
經過如上流程,構建的決策樹,如下圖:
4 CART算法流程
while(當前節點"不純"):
1.遍歷每個變量的每一種分割方式,找到最好的分割點
2.分割成兩個節點N1和N2
end while
每個節點足夠“純”為止