返回

拓端tecdat|R语言辅导ROC曲线评价分类器的好坏

发布时间:2022-11-17 05:55:16 443
# git# 数据

本文将使用一个小数据说明ROC曲线,其中n = 10个观测值,两个连续变量x_1和x_2,以及二元变量y∈{0,1}。

我们可以表示平面(x_1,x_2)中的点,并且对y∈{0,1}中的y 使用不同的颜色。

  1.   
  2.  
    df = data.frame(x1=x1,x2=x2,y=as.factor(y))
  3.  
    plot(x1,x2,col=c("red","blue")[1+y],pch=19,cex=1.5)

拓端tecdat|R语言辅导ROC曲线评价分类器的好坏_随机森林

然后,我们可以进行逻辑回归,P(Y = 1∣x1,x2)= 1 +eβ0+β1x1 +β2x2eβ0+β1x1 +β2x2 ,

  1.   
  2.  
    reg = glm(y~x1+x2,data=df,family=binomial(link = "logit"))

拓端tecdat|R语言辅导ROC曲线评价分类器的好坏_随机森林_02

然后我们可以将y_i表示为得分的函数,即P(Y = 1∣x1,i ,x2,i),

  1.   
  2.  
    S = predict(reg,type="response")
  3.  
    plot(S,y )

拓端tecdat|R语言辅导ROC曲线评价分类器的好坏_数据_03

然后,我们将设定一个阈值(例如50%):如果Y取值1的概率超过阈值,我们将预测为1(否则为0)。在上图中,我们有4个点:阈值左侧的那些点(预测为0),如果位于底部,则分类很好,而位于顶部的分类很差;在阈值的右边(并且预测为1),如果它们位于顶部,则可以很好地分类,而底部则不能很好地分类 

  1.   
  2.  
    plot(S,y,
  3.  
    col=c("red","blue")[1+(y==Yhat)])
  4.  
    abline(v=s,lty=2)

拓端tecdat|R语言辅导ROC曲线评价分类器的好坏_数据_04

颜色反映了分类的好坏:红点表示分类错误。我们可以在 下面的​​列联表​​(混淆矩阵)中找到所有这些内容 。

  1.   
  2.  
    Y Yhat 0 1
  3.  
    0 3 1
  4.  
    1 1 5

拓端tecdat|R语言辅导ROC曲线评价分类器的好坏_数据_05

在这里,我们感兴趣的是两个指标:假正例和真正例,

  1.  
    FP=sum((Ps==1)*(Y==0))/sum(Y==0)
  2.  
    TP=sum((Ps==1)*(Y==1))/sum(Y==1)

我们在给定的阈值(此处为50 %)处获得了该表。
这组结果给出了ROC曲线。

  1.   
  2.   
  3.  
    plot(t(V),type="s" )
  4.  
    segments(0,0,1,1,col="light blue")

拓端tecdat|R语言辅导ROC曲线评价分类器的好坏_随机森林_06

我们可以检查在曲线上阈值50%处的点

  1.   
  2.  
    Y Yhat 0 1
  3.  
    0 3 1
  4.  
    1 1 5
  5.  
    (FP = sum((Yhat)*(Y==0))/sum(Y==0))
  6.  
    [1] 0.25
  7.  
    (TP = sum((Yhat==1)*(Y==1))/sum(Y==1))
  8.  
    [1] 0.83

拓端tecdat|R语言辅导ROC曲线评价分类器的好坏_随机森林_07

 

  1.   
  2.  
    plot(performance(pred,"tpr","fpr"))

拓端tecdat|R语言辅导ROC曲线评价分类器的好坏_机器学习_08

一个有趣的量称为曲线下面积(或 ​​AUC​​),可在此处手动计算(我们有一个简单的阶梯函数)

  1.  
    p2[1]*p2[2]+(p1[1]-p2[1])*p1[2]+(1-p1[1])
  2.  
    [1] 0.875

拓端tecdat|R语言辅导ROC曲线评价分类器的好坏_随机森林_09

 

也可以用函数计算

  1.  
    auc.perf@y.values[[1]]
  2.  
    [1] 0.87

我们尝试另一个分类器:仍然是逻辑回归,但要考虑通过将第二个变量分割成两个而获得的因子1 [s,∞) x2)

abline(h=.525)

拓端tecdat|R语言辅导ROC曲线评价分类器的好坏_机器学习_10

水平线不再是红色和蓝色一样多的线,而是与变量x_2相交的线。在这里,我们仅预测两个值:底部出现蓝色的概率为40%,顶部为蓝色的概率为80%。如果我们将观测值yi表示为预测概率的函数,则可以得出

plot(S,y,ylab="y",xlim=0:1)

拓端tecdat|R语言辅导ROC曲线评价分类器的好坏_机器学习_11

50%的阈值,我们获得以下列联表

  1.   
  2.  
    Y Yhat 0 1
  3.  
    0 3 2
  4.  
    1 1 4

拓端tecdat|R语言辅导ROC曲线评价分类器的好坏_数据_12

如果绘制ROC曲线,我们得到

  1.   
  2.  
    plot(t(V),type="l"
  3.  
    segments(0,0,1,1,col="light blue")

拓端tecdat|R语言辅导ROC曲线评价分类器的好坏_随机森林_13

这次,曲线是线性的。上图中的蓝色对角线恰好是随机分类器,这是我们​​随机​​预测​​的结果​​

  1.  
    pred = prediction(S,Y)
  2.  
    plot(performance(pred,"tpr","fpr"))

拓端tecdat|R语言辅导ROC曲线评价分类器的好坏_机器学习_14

该点的阈值为50%。再次,我们可以计算曲线下的面积

  1.   
  2.  
    p2[1]*p2[2]/2+(1-p1[1])*p1[2]+(1-p1[1])*(1-p1[2])/2
  3.  
    [1] 0.708
  4.  
    auc.perf@y.values[[1]]
  5.  
    [1] 0.708

拓端tecdat|R语言辅导ROC曲线评价分类器的好坏_数据_15


拓端tecdat|R语言辅导ROC曲线评价分类器的好坏_机器学习_16

 

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
精选文章
thumb 中国研究员首次曝光美国国安局顶级后门—“方程式组织”
thumb 俄乌线上战争,网络攻击弥漫着数字硝烟
thumb 从网络安全角度了解俄罗斯入侵乌克兰的相关事件时间线
下一篇
Nacos 2022-11-17 05:22:16