基尼不純度Gini Impurity是理解決策樹和隨機森林分類算法的一個重要概念。我們先看看下面的一個簡單例子 -
假如我們有以下的數據集
我們如何選擇一個很好的分割值把上面的5個藍點和5個綠點完美的分開呢?通過觀察,我們選擇分隔值x=2
如果我們選取x=1.5呢?
這樣做的結果是左邊是4個藍點,右邊是5個綠點和1個藍點。很顯然,這種划分沒有上面的好,可是我們如何定量地比較划分結果的好壞呢?
為了解決這個問題,人們引入了基尼不純度這個概念,英文名稱是Gini Impurity。接下來我們看看它是怎么計算出來的。
1. 隨機從數據集中選出一個點
2. 計算數據集中數據分布概率:由於數據集中共有5個藍點和5個綠點,所以隨機選取的數據點有50%的可能性是藍點,50%的可能性是綠點
3. 計算我們把上面隨機選取的數據點分錯類的概率(這個概率就是基尼不純度Gini Impurity):直覺告訴我們這個分錯類的概率是0.5,因此使用隨機分類的基尼不純度就是0.5
這是一個最簡單的情況,如果我們的數據集中有C個分類,一個數據點正好是第i個分類的概率是p(i),那么計算基尼不純度的公式就是
使用這個公式計算前面隨機分類的例子,我們還是得到同樣的結果0.5
如果我們使用x=2進行分類,相對應的基尼不純度是多少呢?
使用x=2進行分類的決策樹會有左右2給分支,左邊有5個藍點,右邊有5個綠點。套用上面的公式,我們分別得到左右分支的基尼不純度:
因為這個一個完美的分類,因此這個不純度為0,這也是最理想的分類結果。
我們再看看使用x=1.5進行分類的情況 -
因為左邊分支只有4個藍點,沒有綠點,因此它的基尼不純度為0;而右邊分支有5個綠點1個藍點,因此基尼不純度為:
有了上面的計算,我們應該如何選擇最好的分類方法呢?
對應選擇x=1.5的情況,我們知道在分類前的基尼不純度為0.5,分類后左邊分支為0,右邊分支為0.278。如果我們考慮到2個分支各自擁有的數據點個數,我們得到一個加權平均值:
跟分類前的基尼不純度0.5相比,我們可以認為這個不純度在分類后被降低了0.5 - 0.167 = 0.333,因此又把它稱作基尼增益(Gini Gain)。基尼增益值越高,說明我們的分類效果越好。