模型的評估 效能量度

2021-10-04 02:38:34 字數 2923 閱讀 9955

對學習器的泛化能力的評估需要一套標準,也就是效能量度(performance measure)。使用不同的效能量度往往會導致不同的評判結果,所以模型的好壞是相對的。所以什麼樣的模型是好的不僅取決於演算法和資料,還取決於任務需求。不要以為的掉進更複雜更難的模型就一定更好的陷阱。

回到模型評估

回歸任務中,我們要**乙個連續的值,最常見的就是「均方誤差」(mse)

分類任務中,我們需要**的是離散值,主要用到的幾種資料:

true positives(tp):實際為正例且被分類器分為正例的個數

false positives(fp):實際為負例且被分類器分為正例的個數

false negatives(fn):實際為正例且被分類器分為負例的個數

true negatives(tn):實際為負例且被分類器分為負例的個數

tp + fn = p:實際的正例個數

fp + tn = n:實際的負例個數

正確率(accuracy):

錯誤率(error rate):

查準率/精度(precision):

查全率/召回率(recall):

一般情況下,在一定正確率前提下,要求分類器的召回率盡量高。

p-r曲線就是:查準率(precision)/ 查全率(recall)的曲線

根據模型的**結果(一般可能會是概率)進行排序,將最可能的正樣本排在前面,將最不可能的正樣本排在後面,按此順序逐個設定閾值,大於閾值的為正樣本,每次計算出當前的p值和r值,如圖 。

多個模型的p-r曲線的評估遵循:若b包裹住了c,則b優於c。若兩條線出現交叉,則根據平衡點(p=r)判斷,越高,效能越好。

p-r值有時會出現矛盾的情況,這樣就需要綜合考慮他們兩,最常見的就是f-score

也就是p-r的調和平均。

對於模型的評估一般都是設定乙個閾值,大於閾值的為正樣本,小於的為負樣本。通常在模型訓練出來的值若是按概率進行排序的話([0,1]之間),我們通常會選擇0.5作為最初的閾值,其他的與之進行比較。

分類過程就是在乙個排序中找到乙個「截斷點」(cut point)將樣本一分為二。

根據不同的任務我們會採取不同的策略。像是如果我們的任務更重視「查準率」,那麼我們的閾值(threshold)就需要選擇較為靠前的位置。若是乙個非常重視「查全率」的任務,像是對於傳染疾病的篩查,我們就需要將閾值放在比較靠後一點的位置上。

roc所以roc和p-r的原理之本是一樣的,只不過用來比較的值有所不同。roc用來比較的值是fpr,tpr。

然後我們就會得到乙個類似p-r的曲線。評估方式也和p-r曲線相同。

ps.當閾值(threshold)取值越多,roc曲線越平滑。

aucauc(area under curve)被定義為roc曲線下的面積,顯然這個面積的數值不會大於1。又由於roc曲線一般都處於y=x這條直線的上方,所以auc的取值範圍在0.5和1之間。使用auc值作為評價標準是因為很多時候roc曲線並不能清晰的說明哪個分類器的效果更好,而作為乙個數值,對應auc更大的分類器效果更好。

auc到底是什麼呢:首先auc值是乙個概率值,當你隨機挑選乙個正樣本以及乙個負樣本,當前的分類演算法根據計算得到的score值將這個正樣本排在負樣本前面的概率就是auc值。當然,auc值越大,當前的分類演算法越有可能將正樣本排在負樣本前面,即能夠更好的分類。

為什麼使用roc曲線

roc曲線有個很好的特性:當測試集中的正負樣本的分布變化的時候,roc曲線能夠保持不變。因為在實際應用中的資料集很多情況下都是不平衡的,正樣本會遠遠大於負樣本,疑惑反之。二p-r曲線在面對不平衡的的資料集時的表現就不啊太好。

在上圖中,(a)和( c)為roc曲線,(b)和(d)為precision-recall曲線。(a)和(b)展示的是分類其在原始測試集(正負樣本分佈平衡)的結果,( c)和(d)是將測試集中負樣本的數量增加到原來的10倍後,分類器的結果。可以明顯的看出,roc曲線基本保持原貌,而precision-recall曲線則變化較大。

不用擔心這些自己要怎麼算,怎麼找出最好的閾值。r/python中都有套件,可以幫我們計算不同閾值的得分,然後標出最高分的閾值的值。

引用連線:

(fawcett, 2006),fawcett, t. (2006). an introduction to roc analysis. pattern recognition letters, 27(8), 861-874.

周志華《機器學習》

如何評估機器學習模型的效能

機器學習的模型效能評估,主要是確定在trainingset中的誤差,更重要的是在測試集的誤差,對新模型的學習能力,也就是所謂的泛化能力。因此資料集的確定尤為重要,將樣本資料集分為trainingset 和 testingset,資料集的劃分要注意如下兩個方面 1 盡量保證trainingset 和 ...

模型的評估

錯誤率 如果在m個樣本中有a個樣本分類錯誤,那麼錯誤率 a m 精度 1 錯誤率 誤差 實際 輸出與樣本的真實輸出之間的差異 訓練誤差 經驗誤差 學習器在訓練集上的誤差,在很多情況下,我們都可以學得乙個經驗誤差很小,在訓練集上表現很好的學習器 泛化誤差 在新樣本上的誤差,我們希望得到的是乙個泛化誤差...

kmeans及模型評估指標 模型的評估指標

想必大家都知道,構建機器學習模型就是為了能夠更好的訓練我們的資料集,使得模型的準確率達到最大,那麼當我們構建好了我們的學習模型,可以通過哪些指標來評估我們模型的好壞呢?這就是我今天要給大家介紹的內容。一.精確率與召回率 1.混淆矩陣 在分類過程中,結果與正確標記之間存在四種不同的組合,構成了混淆矩陣...