分類回歸算法的評價指標(biāo)

引言

最近在做一些機(jī)器學(xué)習(xí)算法的工作,主要是應(yīng)用,基本的機(jī)器學(xué)習(xí)算法都既可以做分類,又可以回歸,然后對分類與回歸算法進(jìn)行評估的話有一些指標(biāo),本文主要是介紹這些一指標(biāo),以及計(jì)算方法,實(shí)現(xiàn)方法。

分類指標(biāo)

對于二分類、多分類算法而言,主要的評價指標(biāo)如下:

  1. Accuracy(準(zhǔn)確度)
    其是衡量分類結(jié)果最直接的評價指標(biāo),但是其對樣本中正負(fù)樣本的平衡性有要求,在比較平衡的樣本中有較好的效果,如果正負(fù)樣本差距較大則沒什么參考性。它的定義

預(yù)測正確的樣本的數(shù)量占總樣本數(shù)量的比例,例如有80個樣本,60個預(yù)測正確,則accuracy是0.75.在不平衡的樣本里面,正例遠(yuǎn)大于負(fù)例子,所以都預(yù)測成正例子,準(zhǔn)確率也很高,但是是沒有參考意義的。
其實(shí)現(xiàn)在sklearn的metrics中有

from sklearn.metrics import accuracy_score
 accuracy_score(y_true, y_pred)
  1. Precision(精確度)
    在介紹這個之前,先引入混肴矩陣的定義,混肴矩陣主要就是用來定義這些評價指標(biāo)的。混淆矩陣如下圖所示:


    混淆矩陣

    如上圖所示,precision的定義維

p=TP/(TP+FP), 即預(yù)測正確的正例占所有預(yù)測為正例的樣本的比例
sklearn中的函數(shù)為

from sklearn.metrics import precision_score
precision_score(y_true, y_pred, average='macro')#'macro'的方法是計(jì)算每個標(biāo)簽的指標(biāo),并找到它們的未加權(quán)平均值
  1. recall(召回率)
    召回率的定義如下所示

R=TP/(TP+FN), 即預(yù)測正確,占所有正例比例

其實(shí)現(xiàn)如下:

from sklearn.metrics import recall_score
recall_score(y_true, y_pred, average='micro')
  1. F1 score
    F1 score 可以被解釋為精度和召回率的加權(quán)平均值,其中F1得分在最佳值為1,最差值為0。精度和召回對F1得分的相對貢獻(xiàn)是相等的。其公式如下

F1 = 2 * (precision * recall) / (precision + recall), precision與recall的定義如上所示, F1 score是一個綜合的指標(biāo),可以用來評估模型的好壞
其在sklearn中的實(shí)現(xiàn)代碼如下

from sklearn.metrics import f1_score
f1_score(y_true, y_pred, average='micro')

回歸算法的評估標(biāo)準(zhǔn)

回歸算法預(yù)測主要是連續(xù)的值,故回歸算法的評估標(biāo)準(zhǔn)常用的有三種,但是基本都是差值分布的。

  1. 平均絕對誤差(MAE)


    MAE.png

其中y是真實(shí)的值,有y_hat是預(yù)測出來的值。sklearn中的實(shí)現(xiàn)如下:

from sklearn.metrics import mean_absolute_error
mean_absolute_error(y_true, y_pred)
  1. MSE (均方誤差)
    其跟MAE基本一致,不過其計(jì)算的時候,在算|y_i-y_hat|的時候,加一個平方,即可
    實(shí)現(xiàn)如下:
 from sklearn.metrics import mean_squared_error
 y_true = [3, -0.5, 2, 7]
 y_pred = [2.5, 0.0, 2, 8]
mean_squared_error(y_true, y_pred)
  1. R方
    R方主要是用來判斷模型的擬合優(yōu)度,越接近1,則說明效果越好,負(fù)值代表模型效果極差,無參考價值,主要的公式如下所示:
R方.png

其中y- 代表的是均值。
在sklearn中的實(shí)現(xiàn)為:

 from sklearn.metrics import r2_score
 y_true = [3, -0.5, 2, 7]
 y_pred = [2.5, 0.0, 2, 8]
 r2_score(y_true, y_pred)
  1. 相關(guān)系數(shù)r
    主要是用來判斷預(yù)測的樣本值得分布與真實(shí)得樣本值分布之間得相關(guān)性。公式如下所示
相關(guān)系數(shù)r得公式

帶*得y表示預(yù)測得y得均值
sklearn中得實(shí)現(xiàn)如下所示

from scipy.stats import pearsonr
pccs = pearsonr(y_true, y_pre)

這種方法在預(yù)測年齡等連續(xù)得變量,相關(guān)性比較有更好得可觀度

  1. KL散度
    該指標(biāo)主要是用來衡量預(yù)測得值與真實(shí)得值之間分布得相似性,其主要基于熵得原理。越小表示越相關(guān),主要公式如下:


    KL散度

    其主要在神經(jīng)網(wǎng)絡(luò)或者機(jī)器學(xué)習(xí)得算法中作為損失函數(shù),經(jīng)常與MAE配合使用。python中得實(shí)現(xiàn)如下:

import scipy.stats
KL = scipy.stats.entropy(x, y) 
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容