我們在使用分類算法訓練數據後,評價分類模型的優劣時,經常會遇到一個詞,“基尼係數”。
那麼,什麼是基尼係數呢?
本文將嘗試用最簡單的方式介紹什麼是“基尼係數”以及它的計算方法和意義。
希望能讓大家對基尼係數有個直觀的印象,而不僅僅是記住它枯燥的計算公式。
1. 從分類模型開始
首先,先假設有一個分類案例,包含2個種類的數據(紫色和藍色),每個分類的數據有10個。
上圖中的3種不同顏色的直線,代表3種不同參數的分類模型。
從圖中可以看出:
- 綠色的線分類效果最好,完美分割了2個種類的數據
- 黃色次之,有3個藍色的數據分類錯誤
- 紅色的分類效果最差,有8個紫色的數據分類錯誤
對於上面這種簡單的數據(只有2個維度的10個數據)和簡單的分類模型(線性分類)來說,
我們通過作圖可以一眼看出哪個分類模型的效果最好。
而現實中的實際情況,往往是不僅數據量大,數據維度也很多,分類模型也不會僅僅是一條二維直線。
這時,無法像上面那樣繪製出二維圖形來,那麼該如何去定量的評估一個分類模型的好壞呢?
2. 基尼係數
基尼係數就是這樣一種指標,通過一個分類模型的基尼係數(Gini),來幫助我們判斷分類模型的好壞。
2.1. 綠色模型
對於綠色的分類模型:
分類過程 | 分類結果 | 概率 |
---|---|---|
選擇 紫色 數據,並且被分類爲 紫色 | 正確 | 50% |
選擇 紫色 數據,並且被分類爲 藍色 | 錯誤 | 0% |
選擇 藍色 數據,並且被分類爲 藍色 | 正確 | 50% |
選擇 藍色 數據,並且被分類爲 紫色 | 錯誤 | 0% |
概率計算方式說明:比如對於表格第一行,【選擇 紫色 數據,並且被分類爲 紫色】的概率。
首先,【選擇 紫色 數據】的概率爲50%
,因爲總共20條數據,紫色數據有10條。
其次,【並且被分類爲** 紫色**】的概率爲100%
,因爲綠色的模型可以正確分類所有的數據。
所以,【選擇 紫色 數據,並且被分類爲 紫色】的概率爲 50% x 100% = 50%
。
其餘3行的概率同上一樣計算。
2.2. 黃色模型
對於黃色的模型:
分類過程 | 分類結果 | 概率 |
---|---|---|
選擇 紫色 數據,並且被分類爲 紫色 | 正確 | 50% |
選擇 紫色 數據,並且被分類爲 藍色 | 錯誤 | 0% |
選擇 藍色 數據,並且被分類爲 藍色 | 正確 | 35% |
選擇 藍色 數據,並且被分類爲 紫色 | 錯誤 | 15% |
對於上面表格中的第三行,【選擇 藍色 數據,並且被分類爲 藍色】爲什麼是35%
?
首先,【選擇 藍色 數據】的概率爲50%
,因爲總共20條數據,藍色數據有10條。
其次,【並且被分類爲 藍色】的概率是70%
,從圖中可以看出黃色的模型對於10條藍色數據,有7條分類正確,有3條被錯誤分類到紫色的那一類中了。
所以,【選擇 藍色 數據,並且被分類爲 藍色】的概率爲 50% x 70% = 35%
。
表格第四行的15%
也是同樣方式計算出的。
2.3. 紅色模型
最後,看下紅色的模型:
分類過程 | 分類結果 | 概率 |
---|---|---|
選擇 紫色 數據,並且被分類爲 紫色 | 正確 | 10% |
選擇 紫色 數據,並且被分類爲 藍色 | 錯誤 | 40% |
選擇 藍色 數據,並且被分類爲 藍色 | 正確 | 50% |
選擇 藍色 數據,並且被分類爲 紫色 | 錯誤 | 0% |
計算方式前面已經介紹,這裏不再贅述。
2.4. 計算公式
3種不同效果的分類模型的分類效果統計在上面的表格中。
根據這些概率,我們如何給模型打分,從而確定模型好壞呢?
答案就是基尼係數(Gini
),這時我們再來看看基尼係數的計算公式:
\(Gini = \sum_{i=1}^C p(i)\times (1-p(i))\)
其中,\(C\)是數據的總類別數量,本文的例子中有兩類數據,所以 \(C=2\)
\(p(i)\)是選擇某個類別\(i\)的數據的概率。
下面來看看本文中的3個模型的基尼係數分別是多少。
我們假設 \(p(1)\)代表選中紫色數據的概率;\(p(2)\)代表選中藍色數據的概率
那麼,對於綠色模型,
綠色線上部分的基尼係數:\(G_{up} = p(1)\times(1-p(1)) + p(2)(1-p(2))\)
在綠色線上部分,全是紫色數據,所以 \(p(1) = 1,\quad p(2)=0\);
因此,\(G_{up} = 1\times(1-1)+0\times(1-0) = 0\)
對於綠色線下部分,同理可計算出\(G_{down}=0\)
又因爲綠色線上下部分的數據量都是10條,各佔總數據量的50%
,
所以最終綠色模型整體的基尼係數:\(G_{green}=50\% G_{up} + 50\% G_{down} = 0\)
對於黃色模型:
在黃色線上部分,10個紫色數據,3個藍色數據,所以 \(p(1) = \frac{10}{13},\quad p(2)=\frac{3}{13}\),
因此,\(G_{up} = \frac{10}{13}\times(1-\frac{10}{13})+\frac{3}{13}\times(1-\frac{3}{13}) \approx 0.355\)
黃色線下部分,0個紫色數據,7個藍色數據,所以 \(p(1) = 0,\quad p(2)=1\),所以\(G_{down}=0\)
又因爲黃色線上下部分的數據量分別13條和7條,各佔總數據量的\(\frac{13}{20},\quad \frac{7}{20}\),
所以最終黃色模型整體的基尼係數:\(G_{yellow}=\frac{13}{20} G_{up} + \frac{7}{20} G_{down} \approx 0.23\)
對於紅色模型:
和上面同理計算出:\(G_{up}=0\),\(G_{down} \approx 0.494\);
\(G_{red} = \frac{2}{20} \times G_{up} + \frac{18}{20}\times G_{down} \approx 0.444\)
基尼係數是介於0~1
的數值,且越小表示效果越好,
因爲 \(G_{green}=0<G_{yellow}=0.23<G_{red}=0.444\)
所以 綠色模型 優於 黃色模型 優於 紅色模型。
3. 總結
通過比較不同模型的基尼係數的值,不僅可以一下看出分類模型的好壞,還可以根據數值的大小了解究竟好多少。
基尼係數也爲我們訓練分類模型時提供了一個優化的方向,
一方面,對於不同的分類模型,我們可以通過比較它們的基尼係數,確定哪種模型效果更好;
另一方面,對於同一個分類模型,我們可以通過觀察其中每個分類的基尼係數(比如上面的\(G_{up}\)和\(G_{down}\)),
從而確定那個分類的效果比較差,那就是重點優化的方向。