拓端tecdat|R语言ROC曲线评价分类器的好坏
原文链接:http://tecdat.cn/?p=18944
原文出处:拓端数据部落公众号
本文将使用一个小数据说明ROC曲线,其中n = 10个观测值,两个连续变量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表示为得分的函数,即P(Y = 1∣x1,i ,x2,i),
S = predict(reg,type="response")
plot(S,y )
然后,我们将设定一个阈值(例如50%):如果Y取值1的概率超过阈值,我们将预测为1(否则为0)。在上图中,我们有4个点:阈值左侧的那些点(预测为0),如果位于底部,则分类很好,而位于顶部的分类很差;在阈值的右边(并且预测为1),如果它们位于顶部,则可以很好地分类,而底部则不能很好地分类
plot(S,y,
col=c("red","blue")[1+(y==Yhat)])
abline(v=s,lty=2)
颜色反映了分类的好坏:红点表示分类错误。我们可以在 下面的列联表(混淆矩阵)中找到所有这些内容 。
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 %)处获得了该表。
这组结果给出了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),可在此处手动计算(我们有一个简单的阶梯函数)
p2[1]*p2[2]+(p1[1]-p2[1])*p1[2]+(1-p1[1])
[1] 0.875
也可以用函数计算
auc.perf@y.values[[1]]
[1] 0.87
我们尝试另一个分类器:仍然是逻辑回归,但要考虑通过将第二个变量分割成两个而获得的因子1 [s,∞) x2)
abline(h=.525)
水平线不再是红色和蓝色一样多的线,而是与变量x_2相交的线。在这里,我们仅预测两个值:底部出现蓝色的概率为40%,顶部为蓝色的概率为80%。如果我们将观测值yi表示为预测概率的函数,则可以得出
plot(S,y,ylab="y",xlim=0:1)
50%的阈值,我们获得以下列联表
Y Yhat 0 1
0 3 2
1 1 4
如果绘制ROC曲线,我们得到
plot(t(V),type="l"
segments(0,0,1,1,col="light blue")
这次,曲线是线性的。上图中的蓝色对角线恰好是随机分类器,这是我们随机预测的结果
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.机器学习:在SAS中运行随机森林数据分析报告
5.R语言用随机森林和文本挖掘提高航空公司客户满意度
6.机器学习助推快时尚精准销售时间序列
7.用机器学习识别不断变化的股市状况——隐马尔可夫模型的应用
8.python机器学习:推荐系统实现(以矩阵分解来协同过滤)
9.python中用pytorch机器学习分类预测银行客户流失
拓端tecdat|R语言ROC曲线评价分类器的好坏相关推荐
- 拓端tecdat|R语言逻辑回归(Logistic回归)模型分类预测病人冠心病风险
最近我们被客户要求撰写关于冠心病风险的研究报告,包括一些图形和统计输出. 相关视频:R语言逻辑回归(Logistic回归)模型分类预测病人冠心病风险 逻辑回归Logistic模型原理和R语言分类预测冠 ...
- 拓端tecdat|R语言用LOESS(局部加权回归)季节趋势分解(STL)进行时间序列异常检测
最近我们被客户要求撰写关于LOESS(局部加权回归)的研究报告,包括一些图形和统计输出. 这篇文章描述了一种对涉及季节性和趋势成分的时间序列的中点进行建模的方法.我们将对一种叫做STL的算法进行研究, ...
- 拓端tecdat|R语言向量误差修正模型 (VECMs)分析长期利率和通胀率影响关系
最近我们被客户要求撰写关于向量误差修正模型的研究报告,包括一些图形和统计输出. 向量自回归模型估计的先决条件之一是被分析的时间序列是平稳的.但是,经济理论认为,经济变量之间在水平上存在着均衡关系,可以 ...
- 拓端tecdat|R语言线性回归和时间序列分析北京房价影响因素可视化案例
最近我们被客户要求撰写关于北京房价影响因素的研究报告,包括一些图形和统计输出. 目的 房价有关的数据可能反映了中国近年来的变化: 人们得到更多的资源(薪水),期望有更好的房子 人口众多 独生子女政策: ...
- R语言ROC曲线下的面积 - 评估逻辑回归中的歧视
我们围绕ROC曲线技术进行一些咨询,帮助客户解决独特的业务问题.在讨论ROC曲线之前,首先让我们在逻辑回归的背景下考虑校准和区分之间的区别. 相关视频:R语言逻辑回归(Logistic回归)模型分类预 ...
- 拓端tecdat荣获掘金社区入驻新人奖
2021年7月,由掘金发起了"入驻成长礼"颁奖活动.本次活动邀请到知名开发者.服务机构代表等业界人士. 据了解,掘金社区"新入驻创作者礼"主要对已经积累了一定历 ...
- 拓端tecdat荣获2022年度51CTO博主之星
相信技术,传递价值,这是51CTO每一个技术创作者的动力与信念,2022 年度,拓端tecdat 作为新锐的数据分析咨询公司,在51CTO平台上,不断的输出优质的技术文章,分享前沿创新技术,输出最佳生 ...
- 拓端tecdat|bilibili视频流量数据潜望镜
最近我们被客户要求撰写关于bilibili视频流量的研究报告,包括一些图形和统计输出. 最新研究表明,中国有超过7亿人在观看在线视频内容.Bilibili,被称为哔哩哔哩或简称为B站,是中国大陆第二个 ...
- R语言给曲线添加标注和点注
在R语言中,可以使用text(x,y,"标注名称")来给曲线加标注text,使用point(x,y,col,cex,pch)来给曲线加点注pch. 下面介绍,在抛物 ...
- R语言︱机器学习模型评价指标+(转)模型出错的四大原因及如何纠错
笔者寄语:机器学习中交叉验证的方式是主要的模型评价方法,交叉验证中用到了哪些指标呢? 交叉验证将数据分为训练数据集.测试数据集,然后通过训练数据集进行训练,通过测试数据集进行测试,验证集进行验证. 模 ...
最新文章
- 【Cmake】执行cmake命令时报错:No XSLT processor found
- Mac下Git安装及配置
- 线段树HDU1698(成段更新)
- 超值一篇分享,Docker:从入门到实战过程全记录
- 当前不会命中断点_原神:体验服新角色胡桃,0命就能起飞,难道是策划良心发现了?...
- Freezer - 备份云硬盘实现
- java string date_Java基础教程:Java之Object类,Objects类,Date类概念及使用!
- UML(Unified Modeling Language)统一建模语言--类图详解
- C++栈与队列基本操作
- Spring MVC 入门基础(一)
- QT表格QTableWidget在win10下纵横表头无分隔线的问题
- iMX8MM u-boot2021.04移植
- PHP发币,处理货币价值的PHP库
- jzxx1108【入门】字符图形7-星号菱形
- Mac快捷键【窗口最小化、切换窗口】
- 2021年茶艺师(中级)考试及茶艺师(中级)考试题
- Poisoning the Unlabeled Dataset of Semi-Supervised Learning毒害半监督学习的无标记数据集
- three.js中坐标系转换以及camera的position、lookAt与up属性理解
- 国际贸易术语解释通则(DES 目的港船上交货(……指定目的港))
- bp神经网络实现人脸识别,卷积神经网络手势识别