機器學習 PR曲線, ROC曲線

2022-07-16 08:33:07 字數 3236 閱讀 8912

在機器學習領域,如果把accuracy作為衡量模型效能好壞的唯一指標,可能會使我們對模型效能產生誤解,尤其是當我們模型輸出值是乙個概率值時,更不適宜只採取accuracy作為衡量模型性泛化能的指標.這篇博文會為大家介紹兩種比較二分決策模型效能的方法pr曲線, roc曲線

對於分類問題我們可以直接**輸入資料的類別,或者我們也可以為測試樣本產生乙個實值或概率**,並將這個**值與乙個分類閾值作比較,比如說預設閾值為0.5,那麼對於輸出概率在[0.0.49]的樣本會被**為負,對於輸出概率在 [0.5,1.0]之間的樣本會被**為正.同時我們可以通過更改閾值來調整模型在某個問題上的**效能.

對於二分類問題,主要有兩類錯誤

利用概率**結果並設定合適的閾值我們就可以在這兩種錯誤之間取得平衡.具體來說我們先根據這個實值或者是概率**結果對測試樣本進行排序,"最可能"是正例的排在最前邊或者說最左邊,"最不可能"是正例的排在最後邊或者說最右邊,通過調整閾值在這個排序陣列中的位置將樣本分為兩個部分,閾值左邊被**為正例,閾值右側被**為反例.如果我們希望提高模型的查準率/降低假正率,即提高**為正例的樣本裡實際結果也為正例的樣本的佔比,我們就可以把這個閾值向左移;如果我們希望提高模型的查全率/降低假反例,即提高實際為正例的樣本中**結果也為正例的樣本的佔比,那麼我們就可以把這個閾值向左移.

排序本身的好壞體現了綜合考慮學習器在一般情況下泛化效能的好壞.roc則是從這個角度出發來研究學習器泛化效能的有力工具.     --《機器學習》 周志華

接收器操做特徵曲線,也叫roc曲線,根據wikipedia的解釋:

在訊號檢測理論中,接收者操作特徵曲線receiver operating characteristic curve,或者叫roc曲線)是一種座標圖式的分析工具,用於 (1) 選擇最佳的訊號偵測模型、捨棄次佳的模型。 (2) 在同一模型中設定最佳閾值。

roc曲線首先是由二戰中的電子工程師和雷達工程師發明的,用來偵測戰場上的敵軍載具(飛機、船艦),也就是訊號檢測理論。之後很快就被引入了心理學來進行訊號的知覺檢測。數十年來,roc分析被用於醫學、無線電、生物學、犯罪心理學領域中,而且最近在機器學習(machine learning)和資料探勘(data mining)領域也得到了很好的發展。

在衡量學習器的泛化效能時,根據學習器的**結果對樣本排序,按此順序逐個把樣本作為正例進行輸出,每次計算測試樣本的真正率tpr,和假正率fpr並把這兩項作為roc的縱軸和橫軸.其中真正率衡量實際值為正例的樣本中被正確**為正例的樣本的比例,假正率表示實際值為負例的樣本中被錯誤的**為正例的樣本的比例

具體來說,假設有乙個邏輯回歸分類器,根據它的**結果對樣例排序,我們設初始閾值為最大, 此時所有樣本都被**為反例,沒有樣本被**為正例即tp = 0, fp = 0, tpr = 0, fpr = 0; 之後我們不斷調小閾值,在這個過程中被正確**為正例的樣本和被錯誤**為正例的樣本都在不斷增多 , 同時被正確**為反例的樣本和被錯誤**為反例的樣本不斷減小.因此tpr和fpr會不斷變大.當閾值為最小時,所有樣本被**為正,沒有樣本被**為負即fn =0, tn = 0, tpr = 1, fpr = 1; 根據這一系列閾值我們可以得到一系列一一對應的真正率和假正率.

當上圖中的roc曲線接近於(1,0)點,表明模型泛化效能越好,越接近對角線的時候,表明此時模型的**結果為隨機**結果.

在實際中roc曲線沒有這麼光滑,更多的會接近下圖的樣子,下圖中的橙色曲線上每乙個點對應於乙個閾值下的真正率和假正率(來自網路)

roc在以下幾個方面會很有用

可以利用roc曲線對不同模型進行比較,如果乙個模型的roc曲線被另乙個模型的曲線完全包住,則可斷言後者的效能由於前者

roc曲線下方的面積(auc)可以用來作為評估模型模型效能的指標.如當兩個模型的roc曲線發生交叉,則很難說哪乙個模型更好,這時候可以用auc來作為乙個比較合理的判據

儘管roc用處很大但是如果我們的資料中類別分布非常不均衡的時候,roc就不再適用了.

下圖(a)代表roc曲線圖(b)代表pr曲線,圖中的曲線都來為同樣的模型在乙個非均衡測試集上的**結果.對於roc曲線來說越靠近左上方表明模型效能越好,圖(a)中的roc曲線表明模型效能非常好;對於pr曲線來說越靠近右上方說明模型效能越好,但是看圖(b)中的曲線,很顯然這兩個模型都還有很大的提公升空間.

同時從圖(a)中我們可以看出兩種演算法效能接近,都表現優異,但是圖(b)中algorithm2的效能表現要明顯優於algorithm1.

造成這種情況的原因是我們的測試資料集中的反例數目遠遠多於正例的數目,假設負樣本:正樣本=1000:10.在這種情況下,當閾值為最大時,真正率和假正率還是都為0,隨著我們不斷調小閾值真正率和假正率還是在不斷提高, 當閾值最小時真正率和假正率達到最大.因此roc曲線沒有很好地體現出樣本類別分布不平衡對模型產生的影響,甚至導致對模型效能有錯誤的解釋.這種情況下pr曲線可以給我們提供更精確的參考.

機器學習--如何理解accuracy, precision, recall, f1 score

與roc曲線類似,我們根據學習器的**結果對樣例排序,"最可能"是正例的排在最前邊或者說最左邊,"最不可能"是正例的排在最後邊或者說最右邊.按此順序逐個把樣本作為正例進行輸出,每次計算測試樣本的查準率和查全率並把這兩項作為pr曲線的縱軸和橫軸. 

**於周志華老師的《機器學習》一書.

當pr曲線越靠近右上方時,表明模型效能越好,與roc曲線類似,在對不同模型進行比較時,若乙個模型的pr曲線被另乙個模型的pr曲線完全包住則說明後者的效能優於前者.如上圖中橘色線代表的模型要優於藍色線代表的模型,若模型的pr曲線發生了交叉,則無法直接判斷哪個模型更好.在周志華老師的機器學習上中提到了可以用平衡點.它是查準率=查全率時的取值,如上圖黑色線代表的模型的平衡點要大於橘色線模型代表的平衡點,表明前者優於後者,除此之外更為常用的是f1 score,也就是查準率和查全率的加權平均,f1 = (2*查準率*查全率)/(查準率+查全率)

reference the relationship between precision-recall and roc curves

how to use roc curves and precision-recall curves for classification in python

<機器學習> 周志華

ROC曲線 PR曲線

在 的結果分析中,roc和pr曲線是經常用到的兩個有力的展示圖。1.roc曲線 roc曲線 receiver operating characteristic 是一種對於靈敏度進行描述的功能影象。roc曲線可以通過描述真陽性率 tpr 和假陽性率 fpr 來實現。由於是通過比較兩個操作特徵 tpr和...

瞎聊機器學習 PR曲線 ROC曲線 AUC

roc曲線經常作為評估二分類的重要指標,其起源於軍事領域,全稱叫做receiver operating characteristic curve。roc曲線是二維平面內的曲線,其橫座標為假陽性率 fpr 縱座標為真陽性率 tpr 他們的計算方法如下 上式中 舉個例子 假設有10個人疑似感冒了,其中有...

機器學習筆記 PR曲線和ROC曲線

對於二分類問題,根據分類結果能形成 混淆矩陣 p是查準率,r是查全率,定義如下 一般來說,查準率和查全率是一對矛盾的度量,書上給出的 p r圖 比較平滑,現實中區域性波動較大。roc全稱是 受試者工作特徵 曲線,縱軸是 真正例率 tpr,橫軸是 假正例率 fpr,兩者同樣基於混淆矩陣,定義如下 可以...