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

2021-09-25 03:02:56 字數 4251 閱讀 3149

準確率,精確率,召回率,f1-score, auc, roc, p-r曲線

1.1 準確率(accuracy)

評價分類問題的效能指標一般是分類準確率,即對於給定的資料,分類正確的樣本數佔總樣本數的比例

注意:準確率這一指標在unbalanced資料集上的表現很差,因為如果我們的正負樣本數目差別很大,比如正樣本100個,負樣本9900個,那麼直接把所有的樣本都**為負, 準確率為99%,但是此分類模型實際效能是非常差的,因為它把所有正樣本都分錯了。

1.2 精確率(precision)

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

在混淆矩陣中表示如下:

精確率是指在**為正類的樣本中真正類所佔的比例,直觀上來解釋精確率就是說

我現在有了這麼的**為正的樣本,那麼這些樣本中有多少是真的為正呢?

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曲線中的四個點和一條線

經過以上分析,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)

對於二分類問題,我們有很多評價指標,因為只有正類和負類兩種,往往我們只關心正類的準確率和召回率。但是對於多分類問題,有些二分類的評價標準就不怎麼適用了。最近實習涉及到多分類,在模型評價指標選取費了不少時間,對於常用的多分類評價指標進行整理以便日後使用。一種方法是將多分類問題轉化為多個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.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)

參考文件:

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

1 二分類評價指標 準確率,精確率,召回率,f1 score,auc,roc,p r曲線 1.1 準確率 accuracy 評價分類問題的效能指標一般是分類準確率,即對於給定的資料,分類正確的樣本數佔總樣本數的比例。注意 準確率這一指標在unbalanced資料集上的表現很差,因為如果我們的正負樣本...

二分類問題評價指標

當乙個分類器建立後,要對其分類準確度進行評價。分類器的效能評價不僅能夠指導分類器的訓練過程,而且可以比較不同分類器的效能。本文主要介紹混淆矩陣和常用的幾個評價指標。對於乙個二分類問題,可以得到如下的混淆矩陣,行表示資料在模型上的 類別 predicted class predicted condit...

二分類 多分類

怎麼樣把兩類的分類的模型推廣到多類上?答 a.一對多法 one versus rest,簡稱ovr svms 訓練時依次把某個類別的樣本歸為一類,其他剩餘的樣本歸為另一類,這樣k個類別的樣本就構造出了k個svm。分類時將未知樣本分類為具有最大分類函式值的那類。b.一對一法 one versus on...