機(jī)器學(xué)習(xí)或者是日常生活中晌纫,遇見的往往是二分類問題比較多,二分類模型的模型評(píng)價(jià)準(zhǔn)則很多夯辖,Auc_score,F1_score蕴茴,accuracy等等都是比較常用的劝评。而針對(duì)多分類問題來說,有些二分類的評(píng)價(jià)準(zhǔn)則就相對(duì)而言不怎么適用了倦淀。雖然可以將多分類問題轉(zhuǎn)化為多個(gè)2vs2問題進(jìn)行討論蒋畜,步驟繁雜的同時(shí)效果也得不到保障。目前在進(jìn)行多模態(tài)的一個(gè)分類研究撞叽,在模型評(píng)價(jià)時(shí)也廢了不少腦筋姻成,所以在這里將看到的比較常用的多分類評(píng)價(jià)準(zhǔn)則進(jìn)行整理,便于日后學(xué)習(xí)能扒。
高偏差(high bias)與方差(high variance)
偏差,可以理解為樣本與模型預(yù)測(cè)結(jié)果的差距佣渴,可以使用平方差計(jì)算
-
方差是樣本y值與模型期望的差的平方和。
模型對(duì)實(shí)驗(yàn)數(shù)據(jù)欠擬合(underfitting) 是會(huì)出現(xiàn)搞偏差初斑,而過擬合(overfitting)會(huì)造成高方差
解決方法:直接的方法是將實(shí)驗(yàn)數(shù)據(jù)一分為二:訓(xùn)練集和測(cè)試集。模型在訓(xùn)練集和測(cè)試集上都達(dá)到高正確率才說明偏差和方差都可以接受膨处。
增加體征的數(shù)量可以降低偏差见秤;減少特征數(shù)量可以降低方差
二分類和回歸評(píng)估指標(biāo)
多分類指標(biāo):
評(píng)價(jià)準(zhǔn)則1:Kappa系數(shù)
Kappa系數(shù)是基于混淆矩陣的計(jì)算得到的模型評(píng)價(jià)參數(shù)。計(jì)算公式如下:
系數(shù)的值在-1到1之間真椿,系數(shù)小于0的話實(shí)際上就相當(dāng)于隨機(jī)了鹃答。
python實(shí)現(xiàn)為:
from sklearn.metrics import cohen_kappa_score
kappa = cohen_kappa_score(y_true,y_pred,label=None) #(label除非是你想計(jì)算其中的分類子集的kappa系數(shù)突硝,否則不需要設(shè)置)
2.海明距離
海明距離也適用于多分類的問題测摔,簡(jiǎn)單來說就是衡量預(yù)測(cè)標(biāo)簽與真實(shí)標(biāo)簽之間的距離,取值在0~1之間解恰。距離為0說明預(yù)測(cè)結(jié)果與真實(shí)結(jié)果完全相同锋八,距離為1就說明模型與我們想要的結(jié)果完全就是背道而馳。公式就不貼了(0*0 原諒我太懶)护盈,直接來python實(shí)例挟纱。
from sklearn.metrics import hamming_loss
ham_distance = hamming_loss(y_true,y_pred)
3.杰卡德相似系數(shù)
它與海明距離的不同之處在于分母。當(dāng)預(yù)測(cè)結(jié)果與實(shí)際情況完全相符時(shí)腐宋,系數(shù)為1紊服;當(dāng)預(yù)測(cè)結(jié)果與實(shí)際情況完全不符時(shí)檀轨,系數(shù)為0;當(dāng)預(yù)測(cè)結(jié)果是實(shí)際情況的真子集或真超集時(shí)欺嗤,距離介于0到1之間参萄。
我們可以通過對(duì)所有樣本的預(yù)測(cè)情況求平均得到算法在測(cè)試集上的總體表現(xiàn)情況。
from sklearn.metrics import jaccard_similarity_score
jaccrd_score = jaccrd_similarity_score(y_true,y_pred,normalize = default)
#normalize默認(rèn)為true煎饼,這是計(jì)算的是多個(gè)類別的相似系數(shù)的平均值讹挎,normalize = false時(shí)分別計(jì)算各個(gè)類別的相似系數(shù)
4.鉸鏈損失
鉸鏈損失(Hinge loss)一般用來使“邊緣最大化”(maximal margin)。損失取值在0~1之間腺占,當(dāng)取值為0淤袜,表示多分類模型分類完全準(zhǔn)確,取值為1表明完全不起作用衰伯。
from sklearn.metrics import hinge_loss
hinger = hinger_loss(y_true,y_pred)