機器學習之ROC曲線理解

2021-09-19 14:39:02 字數 2715 閱讀 5979

曲線的座標分別為真正例率(tpr)和假正例率(fpr),定義如下:

真正例的個數是實際值為正例被**成為正例的值得個數,tpr是**結果中真正例占實際值中正例的比例;

反正例的個數是實際值為反例被**成為正例的值得個數,fpr是**結果中反正例占實際值中的反例的比例;

很多學習器是為測試樣本是產生乙個實值或概率**,然後將這個**值與乙個分類閾值進行比較,若大於閾值分為正類,否則為反類,因此分類過程可以看作選取乙個截斷點。(通常擷取點為0.5,大於0.5為正例,小於0.5為負例)

選擇不同的截斷點對結果的影響很大,截斷點的取值區間是【0,1】,如果截斷點靠近1,則被判斷為正例的數量會變少;如果截斷點靠近0,則被判斷為正例的數量會變多。x軸的取值範圍為【0,1】,x點代表fpr的概率;y軸的取值範圍為【0,1】,y點代表tpr的概率

不同任務中,可以選擇不同截斷點,若更注重」查準率」,應選擇排序中靠前位置進行截斷,反之若注重」查全率」,則選擇靠後位置截斷。因此排序本身質量的好壞,可以直接導致學習器不同泛化效能好壞,roc曲線則是從這個角度出發來研究學習器的工具。

下圖為roc曲線示意圖,因現實任務中通常利用有限個測試樣例來繪製roc圖,因此應為無法產生光滑曲線,如右圖所示。

再將分類閾值依次設為每個樣例的**值,即依次將每個例子劃分為正例

設前乙個座標為(x,y),若當前為真正例,對應標記點為(x,y+1/m),若當前為假正例,則標記點為(x+1/n,y),然後依次連線各點。

下面舉個繪圖例子: 有10個樣例子,5個正例子,5個反例子。有兩個學習器a,b,分別對10個例子進行**:

a:[反正正正反反正正反反]

b : [反正反反反正正正正反]

計算a學習的點:

初始點位(0,0)

條件將所有的例子劃分為正例

第乙個「反」**為正,即假正例,標記點(x+1/n,y)=>(1/5,0) => (0.2,0)

第二個"正「**為正,即真正例,標記點(x,y+1/m) =>(0.2,1/5) => (0.2,0.2)

第三個"正「**為正,即真正例,標記點(x,y+1/m) =>(0.2,1+1/5) => (0.2,0.4)

第四個"正「**為正,即真正例,標記點(x,y+1/m) =>(0.2,2+1/5) => (0.2,0.6)

第五個「反」**為正,即假正例,標記點(x+1/n,y)=>(1+1/5,0.6) => (0.4,0.6)

第六個「反」**為正,即假正例,標記點(x+1/n,y)=>(2+1/5,0。6) => (0.6,0.6)

第七個"正「**為正,即真正例,標記點(x,y+1/m) =>(0.6,3+1/5) => (0.6,0.8)

第八個"正「**為正,即真正例,標記點(x,y+1/m) =>(0.6,4+1/5) => (0.6,1)

第九個「反」**為正,即假正例,標記點(x+1/n,y)=>(3+1/5,1) => (0.8,1)

第十個「反」**為正,即假正例,標記點(x+1/n,y)=>(4+1/5,1) => (1,1)

計算b學習的點:

起始點為(0,0)

第乙個「反」**為正,即假正例,標記點(x+1/n,y)=>(1/5,0) => (0.2,0)

第二個"正「**為正,即真正例,標記點(x,y+1/m) =>(0.2,1/5) => (0.2,0.2)

第三個「反」**為正,即假正例,標記點(x+1/n,y)=>(1+1/5,0.2) => (0.4,0.2)

第四個「反」**為正,即假正例,標記點(x+1/n,y)=>(2+1/5,0.2) => (0.6,0.2)

第五個「反」**為正,即假正例,標記點(x+1/n,y)=>(3+1/5,0.2) => (0.8,0.2)

第六個"正「**為正,即真正例,標記點(x,y+1/m) =>(0.8,1+1/5) => (0.8,0.4)

第七個"正「**為正,即真正例,標記點(x,y+1/m) =>(0.8,2+1/5) => (0.8,0.6)

第八個"正「**為正,即真正例,標記點(x,y+1/m) =>(0.8,3+1/5) => (0.8,0.8)

第九個"正「**為正,即真正例,標記點(x,y+1/m) =>(0.8,4+1/5) => (0.8,1)

第十個「反」**為正,即假正例,標記點(x+1/n,y)=>(4+1/5,1) => (1,1)

a:y:[0,0,0.2,0.4,0.6,0.6,0.6,0.8,1,1,1]

x:[0,0.2,0.2,0.2,0.2,0.4,0.6,0.6,0.6,0.8,1]

b:y:[0,0,0.2,0.2,0.2,0.2,0.4,0.6,0.8,1,1]

x:[0,0.2,0.2,0.4,0.6,0.8,0.8,0.8,0.8,0.8,1]

繪製曲線結果如下:

x軸代表假正例率,y軸代表真正例率,從上圖可以看出a的y值上公升的比較快,排序高的值要多於b,所以a的學習機更優。

auc為roc曲線下的面積,當a和b有交叉時,就要考慮a與b的面積。

參考機器學習之roc曲線

二戰周志華《機器學習》-pr曲線和roc曲線

機器學習之ROC曲線

在機器學習中評價分類模型時經常會用到roc曲線。要學習roc曲線首先得知道什麼是tpr,什麼是fpr。tpr的英文全稱為 true positive rate fpr的英文全稱為 false positive rate 中文解釋為 tpr 真正例率 真實值是正例,且 為正例的比例 fpr 假正例率 ...

機器學習 PR曲線, ROC曲線

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

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

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