二分類和多分類問題的評價指標總結

1 二分類評價指標

準確率,精確率,召回率,F1-Score, AUC, ROC, P-R曲線

1.1 準確率(Accuracy)

評價分類問題的性能指標一般是分類準確率,即對於給定的數據,分類正確的樣本數佔總樣本數的比例
注意:準確率這一指標在Unbalanced數據集上的表現很差,因爲如果我們的正負樣本數目差別很大,比如正樣本100個,負樣本9900個,那麼直接把所有的樣本都預測爲負, 準確率爲99%,但是此分類模型實際性能是非常差的,因爲它把所有正樣本都分錯了。

1.2 精確率(Precision)

對於二分類問題常用的評價指標是精確率和召回率。通常以關注的類爲正類,其他類爲負類,分類器在數據集上的預測或者正確或者不正確,我們有4中情況:

  • TP:True Positive, 把正類預測爲正類;
  • FP:False Positive,把負類預測爲正類;
  • TN:True Negative, 把負類預測爲負類;
  • FN:False Negative,把正類預測爲負類

在混淆矩陣中表示如下:
在這裏插入圖片描述
精確率是指在預測爲正類的樣本中真正類所佔的比例,直觀上來解釋精確率就是說
我現在有了這麼的預測爲正的樣本,那麼這些樣本中有多少是真的爲正呢?

  P = TP/(TP+FP)

1.3 查全率(召回率 Recall)

召回率是指在所有的正類中被預測爲正類的比例,直觀上來說召回率表示我現在預測爲正的這些值中,佔了所有的爲正的樣本的多大比例呢?

R = TP/(TP+FN)

不同的分類問題,對精確率和召回率的要求也不同。
例如:假幣預測,就需要很高的精確率,我需要你給我的預測數據具有很高的準確性。
腫瘤預測就需要很高的召回率。“寧可錯殺三千,不可放過一個”。

1.4 F1-Score

F1-Score: 精確率和召回率的調和平均。 即:

2/F1 = 1/P + 1/R
F1=2P*R/(P+R)

因爲Precision和Recall是一對相互矛盾的量,當P高時,R往往相對較低,當R高時, P往往相對較低,所以爲了更好的評價分類器的性能,一般使用F1-Score作爲評價標準來衡量分類器的綜合性能。

1.5 ROC曲線和AUC

TPR:True Positive Rate,真正率, TPR代表能將正例分對的概率

TPR=TP/TP+FN

FPR: False Positive Rate, 假正率, FPR代表將負例錯分爲正例的概率

FPR=FP/FP+TN

使用FPR作爲橫座標,TPR作爲縱座標得到ROC曲線如下
在這裏插入圖片描述
ROC曲線中的四個點和一條線

  • (0,1): FN = 0, FP = 0, 表示所有樣本都正確分類,這是一個完美的分類器;

  • (1,0):TN = 0, TP = 0, 表示所有樣本都分類錯誤,這是一個最糟糕的分類器;

  • (0, 0): FP = 0, TP = 0, 表示所有樣本都分類爲負

  • (1,1): TN = 0, FN = 0, 表示左右樣本都分類爲正

經過以上分析,ROC曲線越靠近左上角,該分類器的性能越好。
上圖虛線與 y = x,該對角線實際上表示一個隨機猜測的分類器的結果。

ROC曲線畫法:在二分類問題中,我們最終得到的數據是對每一個樣本估計其爲正的概率值(Score),我們根據每個樣本爲正的概率大小從大到小排序,然後按照概率從高到低,一次將“Score”值作爲閾值threshold,當測試樣本的概率大於或等於這個threshold時,我們認爲它爲正樣本,否則爲負樣本。每次選取一個不同的threshold,就可以得到一組FPR和TPR,即ROC曲線上的一點。

AUC:(Area Under roc CurveROC)曲線下的面積,引入AUC的原因是量化評價指標。
AUC的面積越大,分類效果越好。AUC小於1,另一方面,正常的分類器你應該比隨機猜測效果要好吧?所以 0.5 <= AUC <= 1

AUC表徵了分類器把正樣本排在負樣本前邊的能力。這裏的意思其實是指數據按照其爲正的概率從大到小排序之後,正樣本排在負樣本前邊的能力。AUC越大,就有越多的正樣本排在負樣本前邊。極端來看,如果ROC的(0, 1)點,所有的正樣本都排在負樣本的前邊。

1.6 ROC 與 P, R對比

**ROC曲線特性:當測試集中的正負樣本的分佈變化的時候,ROC曲線能夠保持不變。**在實際的數據集中經常會出現類不平衡(class imbalance)現象,即負樣本比正樣本多很多(或者相反),而且測試數據中的正負樣本的分佈也可能隨着時間變化。)
下圖是ROC曲線和Precision-Recall曲線的對比:
在這裏插入圖片描述
a,c爲ROC曲線,b,d爲P-R曲線;
a,b 爲在原始測試集(balanced)上的結果,c,d爲把原始數據集的負樣本增加10倍後的結果。很明顯,ROC曲線基本保持不變,P-R曲線變化較大。

爲什麼取AUC較好?因爲一個二分類問題,如果你取P或R的話,那麼你的評價結果和你閾值的選取關係很大,但是我這個一個分類器定了,我希望評價指標是和你取得閾值無關的,也就是需要做與閾值無關的處理。所以AUC較P-R好

from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score
acc = accuracy_score(y_true, y_pred)

2 多分類評價指標

對於二分類問題,我們有很多評價指標,因爲只有正類和負類兩種,往往我們只關心正類的準確率和召回率。但是對於多分類問題,有些二分類的評價標準就不怎麼適用了。最近實習涉及到多分類,在模型評價指標選取費了不少時間,對於常用的多分類評價指標進行整理以便日後使用。一種方法是將多分類問題轉化爲多個2vs2問題進行討論,步驟比較複雜。還有一種是直接定義的多分類指標。

2.1 多分類轉化爲2vs2問題來評價

準確率:與二分類相同,預測正確的樣本佔總樣本的比例。
精確率: ‘macro’, 對於每個標籤,分別計算Precision,然後取不加權平均
查全率: ‘macro’,對於每個標籤,分別計算Recall,然後取不加權平均
F1-Score‘macro’, 對於每個標籤,分別計算髮,然後取不加權平均
‘micro’, 將n個二分類評價的TP,FP,FN對應相加,計算P和R,然後求得F1
一般macro-f1和micro-f1都高的分類器性能好

2.2 直接定義的多分類指標

2.2.1Kappa係數

kappa係數是用在統計學中評估一致性的一種方法,取值範圍是[-1,1],實際應用中,一般是[0,1],與ROC曲線中一般不會出現下凸形曲線的原理類似。這個係數的值越高,則代表模型實現的分類準確度越高。
在這裏插入圖片描述

  • P0表示總體分類精度
  • Pe表示SUM(第i類真實樣本數*第i類預測出來的樣本數)/樣本總數平方
    在這裏插入圖片描述
from sklearn.metrics import cohen_kappa_score
kappa = cohen_kappa_score(y_true,y_pred,label=None) #(label除非是你想計算其中的分類子集的kappa係數,否則不需要設置)

2.2.2. 海明距離

海明距離也適用於多分類的問題,簡單來說就是衡量預測標籤與真實標籤之間的距離,取值在0~1之間。距離爲0說明預測結果與真實結果完全相同,距離爲1就說明模型與我們想要的結果完全就是背道而馳。

from sklearn.metrics import hamming_loss
ham_distance = hamming_loss(y_true,y_pred)
2.2.3.傑卡德相似係數

它與海明距離的不同之處在於分母。當預測結果與實際情況完全相符時,係數爲1;當預測結果與實際情況完全不符時,係數爲0;當預測結果是實際情況的真子集或真超集時,距離介於0到1之間。
我們可以通過對所有樣本的預測情況求平均得到算法在測試集上的總體表現情況。

from sklearn.metrics import jaccard_similarity_score
jaccrd_score = jaccrd_similarity_score(y_true,y_pred,normalize = default)

#normalize默認爲true,這是計算的是多個類別的相似係數的平均值,normalize = false時分別計算各個類別的相似係數
2.2.4.鉸鏈損失

鉸鏈損失(Hinge loss)一般用來使“邊緣最大化”(maximal margin)。損失取值在0~1之間,當取值爲0,表示多分類模型分類完全準確,取值爲1表明完全不起作用。

from sklearn.metrics import hinge_loss
hinger = hinger_loss(y_true,y_pred)

參考文檔:https://www.cnblogs.com/futurehau/p/6109772.html
https://www.jianshu.com/p/573ba75aec94

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章