首先需要明確,Kappa係數既可用於統計中的一致性檢驗,也可以用於機器學習中來衡量分類精度。它們的本質是一樣的,但是理解方式略有不同,本文將從機器學習的角度來闡述Kappa係數。
一、基本思想
一般來說,對於機器學習中的分類問題,最簡單粗暴的衡量指標就是準確率(accuracy),但是對於樣本標籤分佈極其不均衡的數據,準確率就會出現誤導了。
比如對於如下數據集,100個樣本中10個是貓,10個是狗,需要預測每個樣本是貓還是狗。當我們直接預測所有樣本都是狗時,我們的預測率就可以達到90%。
這個準確率會造成分類結果很好的誤導,那麼我們是否可以考慮構造一個新的指標,把這個90%的準確率作爲baseline(定義其爲0),而全部分類正確時定義爲1,得到如下圖中My_score的指標。
這個指標基本接近Kappa係數了,只是Kappa係數的baseline計算方式不同。
二、Kappa係數定義
1.一致性檢驗中對kappa係數的定義
這裏借鑑一下一致性檢驗中對kappa的定義來理解,假設下圖中的R1是預測的樣本分佈,R2是真實樣本分佈。OA是R1的預測準確率,AC是在現有的預測樣本數量分佈既定的情況下,隨機打亂計算得到的平均正確率baseline。
那麼Kappa係數就可以解釋爲預測準確率減去Baseline得到的額外正確率,除以1減去baseline得到的剩餘可提升正確率。
2.機器學習視角的公式
對於每個預測結果,計算Kappa係數的baseline都不一樣。如下公式所述。accuracy就是預測結果的準確率;
P_e是baseline,它的含義是如果隨機打亂提交的結果,那麼平均準確率會使多少?它可以通過下面的公式計算得到,其中k是第k個預測類別,n_k1和n_k2分別是真實值和預測值在第K個類別的個數。
如假設我們預測結果中有20個貓和80個狗,那麼可以計算得到Baseline是0.74,它意味着即使我在100個樣本中隨機指定20個爲貓,其餘的爲狗,平均準確率也可以達到0.74.
3.進一步調整公式
由於1-accuracy其實就等於錯誤率,所以可以將剛纔的公式改寫爲:
二、Weighted Kappa係數定義
1.Weighted Error
要理解加權的kappa係數,我們首先要理解加權誤差
假設我們有如下數據集,並且我們認爲在貓和狗之間分類錯是相對可以理解的,但是將老虎分類成貓/狗就很不好了。
爲了將這個想法數字化,我們可以構造一個加權的錯誤矩陣,貓狗之間分類錯誤的係數是1,老虎分類錯誤的係數是10。這樣對老虎分類錯誤會導致這個樣本的誤差乘以10.
2.Weighted error和Weighted Kappa
具體來說,我們怎麼計算加權誤差呢?
我們可以按照下圖中的方式計算
左邊的混淆矩陣是預測值和真實值的分佈,右邊的權重矩陣是每個分類結果的誤差權重係數,總加權誤差就等於每個格子的兩兩乘積之和。
從而我們就得到了加權Kappa係數的公式
3.Linear Weighted Kappa 和 Quadratic Weighted Kappa
在大多數情況下,我們會以一種比較簡單通用的方式定義誤差權重。
例如,對於有順序的多標籤分類問題(有順序是指標籤類別之間是有大小順序的,如預測用戶會點擊1次,2次,3次三個類別),我們通常會將標籤分類爲:1,2,3。這種情況下預測值與真實值間隔越遠其實是更嚴重的,所以這就是我們的誤差權重派上用場的地方了!
常見的權重主要有兩種形式:
- 線性權重:誤差係數等於兩個label之間差的絕對值,如將1預測爲3誤差權重爲2
- 二次權重:誤差係數等於兩個label之間差的平方,如將1預測爲3誤差權重爲4
很明顯,二次權重對判斷錯誤更大的項懲罰更重,一般也使用得更廣泛