在決策樹應用一文中,在構建決策分類樹應用決策算法時,介紹了基尼係數(Gini Index)和基於熵(Entropy)兩種算法。本文通過實例來更加深入的介紹一下這兩個算法。
仍然以簡單的數據為例:
| id | 喜歡顏色 | 是否有喉結 | 身高 | 性別 |
|---|---|---|---|---|
| 1 | 綠 | 否 | 165 | 女 |
| 2 | 藍 | 是 | 170 | 男 |
| 3 | 粉 | 否 | 172 | 女 |
| 4 | 綠 | 是 | 175 | 男 |
基尼係數
分別對 喜歡顏色 是否有喉結 求基尼係數如下:
喜歡的顏色
| id | 喜歡顏色 | 性別 |
|---|---|---|
| 1 | 綠 | 女 |
| 2 | 藍 | 男 |
| 3 | 粉 | 女 |
| 4 | 綠 | 男 |
對於姓別女分類而言,數據如下:
| id | 喜歡顏色 | 性別 |
|---|---|---|
| 1 | 綠 | 女 |
| 3 | 粉 | 女 |
其中綠色的佔比為0.5 ,粉色的佔比也為0.5,則特徵喜歡的顏色相對於類別女的基尼係數為:1 - (0.5^2 + 0.5^2) = 0.5。①
對於姓別男分類而言,數據如下:
| id | 喜歡顏色 | 性別 |
|---|---|---|
| 2 | 藍 | 男 |
| 4 | 綠 | 男 |
其中藍色的佔比為0.5 ,綠色的佔比也為0.5,則特徵喜歡的顏色相對於類別男的基尼係數為:1 - (0.5^2 + 0.5^2) = 0.5。②
最終特徵喜歡的顏色對性別類別的基尼係數為 (① + ②) / 2 = (0.5 + 0.5) / 2 = 0.5。 ③
是否有喉結
| id | 是否有喉結 | 性別 |
|---|---|---|
| 1 | 否 | 女 |
| 2 | 是 | 男 |
| 3 | 否 | 女 |
| 4 | 是 | 男 |
對於姓別女分類而言,數據如下:
| id | 是否有喉結 | 性別 |
|---|---|---|
| 1 | 否 | 女 |
| 3 | 否 | 女 |
其中否的佔比為1,則特徵 是否有喉結 相對於類別女的基尼係數為:1 - 1^2 = 0。④
對於姓別男分類而言,數據如下:
| id | 是否有喉結 | 性別 |
|---|---|---|
| 2 | 是 | 男 |
| 4 | 是 | 男 |
其中是的佔比為1,則特徵 是否有喉結 相對於類別男的基尼係數為:1 - 1^2 = 0。⑤
最終特徵是否有喉結對性別類別的基尼係數為 (④ + ⑤) / 2 = (0 + 0) / 2 = 0。⑥
決策支持
綜合③⑥得知對於性別分類而言特徵是否有喉結的基尼係數為0,類別的基尼係數為0.5,所以基於當前數據集的決策時,第一個決策的特徵應該是是否有喉結,即基尼系統越小,使用此特徵進行決策效率越高。
實際的使用也是如何,通過基尼係數為0的特徵是否有喉結決策時,可以直接決策中性別是男還是女,比使用特徵喜歡顏色決策的效率更高。
基於熵(Entropy)
分別對 喜歡顏色 是否有喉結 求熵如下:
喜歡的顏色
| id | 喜歡顏色 | 性別 |
|---|---|---|
| 1 | 綠 | 女 |
| 2 | 藍 | 男 |
| 3 | 粉 | 女 |
| 4 | 綠 | 男 |
對於姓別女分類而言,數據如下:
| id | 喜歡顏色 | 性別 |
|---|---|---|
| 1 | 綠 | 女 |
| 3 | 粉 | 女 |
其中綠色的佔比為0.5 ,粉色的佔比也為0.5,則特徵喜歡的顏色相對於類別女的熵為:$$ - (0.5*log_{2}{0.5} + 0.5*log_{2}{0.5})$$ = - (-0.5 + -0.5) = 1。➊
對於姓別男分類而言,數據如下:
| id | 喜歡顏色 | 性別 |
|---|---|---|
| 2 | 藍 | 男 |
| 4 | 綠 | 男 |
其中藍色的佔比為0.5 ,綠色的佔比也為0.5,則特徵喜歡的顏色相對於類別男的熵為:
$$ - (0.5*log_{2}{0.5} + 0.5*log_{2}{0.5})$$
即: - (-0.5 + -0.5) = 1。➋
最終特徵喜歡的顏色對性別類別的熵為 (➊ + ➋) / 2 = (1 + 1) / 2 = 1。 ➌
是否有喉結
| id | 是否有喉結 | 性別 |
|---|---|---|
| 1 | 否 | 女 |
| 2 | 是 | 男 |
| 3 | 否 | 女 |
| 4 | 是 | 男 |
對於姓別女分類而言,數據如下:
| id | 是否有喉結 | 性別 |
|---|---|---|
| 1 | 否 | 女 |
| 3 | 否 | 女 |
其中否的佔比為1,則特徵 是否有喉結 相對於類別女的熵為:$$ - (1*log_{2}{1})$$
即: - (0) = 0。➍
對於姓別男分類而言,數據如下:
| id | 是否有喉結 | 性別 |
|---|---|---|
| 2 | 是 | 男 |
| 4 | 是 | 男 |
其中是的佔比為1,則特徵 是否有喉結 相對於類別男的熵為:
$$ - (1*log_{2}{1})$$
即: - (0) = 0。 = 0。➎
最終特徵是否有喉結對性別類別的熵為 (➍ + ➎) / 2 = (0 + 0) / 2 = 0。➏
決策支持
綜合③⑥得知對於性別分類而言特徵是否有喉結的熵為0,類別的熵為1,所以基於當前數據集的決策時,第一個決策的特徵應該是是否有喉結,即熵越小,使用此特徵進行決策效率越高。
實際的使用也是如何,通過熵為0的特徵是否有喉結決策時,可以直接決策中性別是男還是女,比使用特徵喜歡顏色決策的效率更高。
對比
在實際的應用中,當處理類別分佈不均勻的數據集時(比如在銀行轉賬記錄,只有不到1%的記錄屬於異常轉賬,其它的都屬於正常轉賬),更推薦使用基尼係數;而當處理類別分佈相對均勻的數據集時(比如不文明駕車中人羣中中人的年齡分佈都差不多),則傾向於用熵。