P R曲線深入理解

2021-10-12 03:00:10 字數 1512 閱讀 4812

p-r曲線就是精確率precision vs 召回率recall 曲線,以recall作為橫座標軸,precision作為縱座標軸。首先解釋一下精確率和召回率。不過在解釋精確率和召回率之前,先來看下混淆矩陣,

負    正負

tn fp 正fn

tp把正例正確分類為正例,表示為tp(true positive),把正例錯誤分類為負例,表示為fn(false negative),

把負例正確分類為負例,表示為tn(true negative), 把負例錯誤分類為正例,表示為fp(false positive)

精確率和召回率可以從混淆矩陣中計算而來,precision = tp/(tp + fp), recall = tp/(tp +fn)。那麼p-r曲線是怎麼來的呢?

演算法對樣本進行分類時,一般都會有置信度,即表示該樣本是正樣本的概率,比如99%的概率認為樣本a是正例,1%的概率認為樣本b是正例。通過選擇合適的閾值,比如50%,對樣本進行劃分,概率大於50%的就認為是正例,小於50%的就是負例。

通過置信度就可以對所有樣本進行排序,再逐個樣本的選擇閾值,在該樣本之前的都屬於正例,該樣本之後的都屬於負例。每乙個樣本作為劃分閾值時,都可以計算對應的precision和recall,那麼就可以以此繪製曲線。那很多書上、部落格上給出的p-r曲線,都長這樣

當然,這種曲線是有可能的。但是仔細琢磨就會發現一些規律和一些問題。

根據逐個樣本作為閾值劃分點的方法,可以推敲出,recall值是遞增的(但並非嚴格遞增),隨著劃分點左移,正例被判別為正例的越來越多,不會減少。而精確率precision並非遞減,而是有可能振盪的,雖然正例被判為正例的變多,但負例被判為正例的也變多了,因此precision會振盪,但整體趨勢是下降。

另外p-r曲線肯定會經過(0,0)點,比如講所有的樣本全部判為負例(或者是前面幾個樣本判決錯了,將負例判決為了正例),則tp=0,那麼p=r=0,因此會經過(0,0)點,但隨著閾值點左移,precision初始很接近1,recall很接近0,因此有可能從(0,0)上公升的線和座標重合,不易區分。

曲線最終不會到(1,0)點。很多p-r曲線的終點看著都是(1,0)點,這可能是因為負例遠遠多於正例。

最後乙個點表示所有的樣本都被判為正例,因此fn=0,所以recall = tp/(tp + fn) = 1, 而fp = 所有的負例樣本數,因此precision = tp/(tp+fp) = 正例的佔所有樣本的比例,故除非負例數很多,否則precision不會為0.

因此,較合理的p-r曲線應該是(曲線一開始被從(0,0)拉公升到(0,1),並且前面的都**對了,全是正例,因此precision一直是1,)

另外,如果有個劃分點可以把正負樣本完全區分開,那麼p-r曲線就是整個1*1的面積。

總之,p-r曲線應該是從(0,0)開始畫的一條曲線,切割1*1的正方形,得到一塊區域。

ROC曲線 PR曲線

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

深入理解C語言 深入理解指標

關於指標,其是c語言的重點,c語言學的好壞,其實就是指標學的好壞。其實指標並不複雜,學習指標,要正確的理解指標。指標也是一種變數,占有記憶體空間,用來儲存記憶體位址 指標就是告訴編譯器,開闢4個位元組的儲存空間 32位系統 無論是幾級指標都是一樣的 p操作記憶體 在指標宣告時,號表示所宣告的變數為指...

mysql 索引深入理解 深入理解MySql的索引

為什麼索引能提高查詢速度 先從 mysql的基本儲存結構說起 mysql的基本儲存結構是頁 記錄都存在頁裡邊 各個資料頁可以組成乙個雙向鍊錶每個資料頁中的記錄又可以組成乙個單向鍊錶 每個資料頁都會為儲存在它裡邊兒的記錄生成乙個頁目錄,在通過主鍵查詢某條記錄的時候可以在頁目錄中使用二分法快速定位到對應...