拓端tecdat|R語言ROC曲線評價分類器的好壞
原文鏈接:http://tecdat.cn/?p=18944
原文出處:拓端數(shù)據(jù)部落公眾號
本文將使用一個小數(shù)據(jù)說明ROC曲線,其中n = 10個觀測值,兩個連續(xù)變量x_1和x_2,以及二元變量y∈{0,1}。
我們可以表示平面(x_1,x_2)中的點,并且對y∈{0,1}中的y 使用不同的顏色。
df = data.frame(x1=x1,x2=x2,y=as.factor(y))
plot(x1,x2,col=c("red","blue")[1+y],pch=19,cex=1.5)

然后,我們可以進行邏輯回歸,P(Y = 1∣x1,x2)= 1 +eβ0+β1x1 +β2x2eβ0+β1x1 +β2x2 ,
reg = glm(y~x1+x2,data=df,family=binomial(link = "logit"))

然后我們可以將y_i表示為得分的函數(shù),即P(Y = 1∣x1,i ,x2,i),
S = predict(reg,type="response")
plot(S,y )

然后,我們將設(shè)定一個閾值(例如50%):如果Y取值1的概率超過閾值,我們將預(yù)測為1(否則為0)。在上圖中,我們有4個點:閾值左側(cè)的那些點(預(yù)測為0),如果位于底部,則分類很好,而位于頂部的分類很差;在閾值的右邊(并且預(yù)測為1),如果它們位于頂部,則可以很好地分類,而底部則不能很好地分類?
plot(S,y,
col=c("red","blue")[1+(y==Yhat)])
abline(v=s,lty=2)

顏色反映了分類的好壞:紅點表示分類錯誤。我們可以在?下面的列聯(lián)表(混淆矩陣)中找到所有這些內(nèi)容?。
Y Yhat 0 1
0 3 1
1 1 5

在這里,我們感興趣的是兩個指標:假正例和真正例,
FP=sum((Ps==1)*(Y==0))/sum(Y==0)
TP=sum((Ps==1)*(Y==1))/sum(Y==1)
我們在給定的閾值(此處為50 %)處獲得了該表。
這組結(jié)果給出了ROC曲線。
plot(t(V),type="s" )
segments(0,0,1,1,col="light blue")

我們可以檢查在曲線上閾值50%處的點
Y Yhat 0 1
0 3 1
1 1 5
(FP = sum((Yhat)*(Y==0))/sum(Y==0))
[1] 0.25
(TP = sum((Yhat==1)*(Y==1))/sum(Y==1))
[1] 0.83

?
plot(performance(pred,"tpr","fpr"))

一個有趣的量稱為曲線下面積(或?AUC),可在此處手動計算(我們有一個簡單的階梯函數(shù))
p2[1]*p2[2]+(p1[1]-p2[1])*p1[2]+(1-p1[1])
[1] 0.875

也可以用函數(shù)計算
auc.perf@y.values[[1]]
[1] 0.87
我們嘗試另一個分類器:仍然是邏輯回歸,但要考慮通過將第二個變量分割成兩個而獲得的因子1 [s,∞) x2)
abline(h=.525)

水平線不再是紅色和藍色一樣多的線,而是與變量x_2相交的線。在這里,我們僅預(yù)測兩個值:底部出現(xiàn)藍色的概率為40%,頂部為藍色的概率為80%。如果我們將觀測值yi表示為預(yù)測概率的函數(shù),則可以得出
plot(S,y,ylab="y",xlim=0:1)

50%的閾值,我們獲得以下列聯(lián)表
Y Yhat 0 1
0 3 2
1 1 4

如果繪制ROC曲線,我們得到
plot(t(V),type="l"
segments(0,0,1,1,col="light blue")

這次,曲線是線性的。上圖中的藍色對角線恰好是隨機分類器,這是我們隨機預(yù)測的結(jié)果
pred = prediction(S,Y)
plot(performance(pred,"tpr","fpr"))

該點的閾值為50%。再次,我們可以計算曲線下的面積
p2[1]*p2[2]/2+(1-p1[1])*p1[2]+(1-p1[1])*(1-p1[2])/2
[1] 0.708
auc.perf@y.values[[1]]
[1] 0.708


最受歡迎的見解
1.從決策樹模型看員工為什么離職
2.R語言基于樹的方法:決策樹,隨機森林
3.python中使用scikit-learn和pandas決策樹
4.機器學(xué)習(xí):在SAS中運行隨機森林數(shù)據(jù)分析報告
5.R語言用隨機森林和文本挖掘提高航空公司客戶滿意度
6.機器學(xué)習(xí)助推快時尚精準銷售時間序列
7.用機器學(xué)習(xí)識別不斷變化的股市狀況——隱馬爾可夫模型的應(yīng)用
8.python機器學(xué)習(xí):推薦系統(tǒng)實現(xiàn)(以矩陣分解來協(xié)同過濾)
9.python中用pytorch機器學(xué)習(xí)分類預(yù)測銀行客戶流失