社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

你还在为机器学习模型如何添加DCA而苦恼吗?快来看一下这篇教程吧~

挑圈联靠 • 1 年前 • 278 次点击  


DCA曲线绘制_基于机器学习模型


Hi,大家好,我是晨曦

今天这期推文的主题来源于群里小伙伴的提问,这个小伙伴向晨曦提出了一个问题

A同学晨曦,平时我们评价预测模型的时候遵循的就是区分度、校准度、临床决策曲线,那么我在网上很多教程上看到的DCA都是基于Logistic回归以及Cox回归,而且我在文章中也很少看到机器学习模型应用DCA的情况,那么究竟机器学习模型可否应用DCA来评价模型呢?

晨曦........

那么,本期推文将着重临床决策曲线DCA在机器学习模型中的应用为主题,来看一看临床决策曲线如何应用在机器学习模型中以及我们究竟应该如何调整我们的代码逻辑

那么,我们开始吧

引言

临床决策曲线DCA的相关概念以及应用场景在这里就不过多赘述了,如果对这方面知识还没有基本的了解,请各位小伙伴先阅读下面这篇推文,然后再阅读本期推文

解析临床决策曲线(DCA)

临床预测模型评价,不只有ROC,这个指标你遗漏了吗?

代码实战

那么,我们接下来就以集成学习算法中的随机森林作为演示,来带领大家通过随机森林构建模型,然后通过DCA来评价模型

#准备工作library(mlr3)#主体包library(mlr3viz)#执行可视化功能library(mlr3learners)#提供额外学习器library(mlr3verse)#扩展包library(mlr3tuning)library(data.table)library("magrittr")library(randomForest)#执行随机森林算法


    
library(varSelRF)#挑选变量library(reshape2)source("ML讲席营/dca.R")#执行DCA的脚本


相信听过晨曦讲席营的小伙伴已经了解了进行机器学习更加先进的体系——mlr3体系,那么本期推文晨曦将采用双轨制代码的形式,那么首先我们就来演示如何通过基础R包来完成机器学习算法并且进行DCA曲线的绘制

#准备输入数据breast_cancer_task "breast_cancer")df $data()#获取数据集


如果有的小伙伴不知道mlr3体系的话,那么就把上面的代码当成获取输入数据即可,我们的输入数据如下所示

#划分数据集(留出交叉验证)index 2,nrow(df),replace = TRUE,prob=c(0.7,0.3))#划分训练集和测试集traindata 1,]#获取训练集testdata 2,]#获取测试集


    
#运用训练集构建随机森林模型df_rf class ~ ., data=traindata,                        ntree=400,important=TRUE,proximity=TRUE)


其实前面的步骤基本上都是基本建模的流程,我们重点其实是需要知道,我们想要绘制DCA只需要两类数据,一个是结局的编码(这里我们需要我们的编码是二分类并且是0和1的形式),然后我们需要提供我们机器学习模型预测阳性结局的概率

#获取预测数据并整理数据outcome = ifelse(testdata$class == "benign",0,1)#重编码响应变量,我们一般习惯阳性结局为1,阴性结局为0prob "outcome" = outcome, "rf_prob" = as.data.frame(prob)$malignant)  head(prob)#      outcome   rf_prob#1       0       0.5150#2       0       0.0000#3       0       0.0400#4       0       0.0000#5       0       0.0000#6       1       0.9275


也就是说我们只要获得预测概率就可以绘制DCA,那么其实也就可以类比成ROC,我们可以做出以下总结:

1.绘制ROC:我们只需要两类数据——实际值 and 预测值

2.绘制DCA:我们只需要两类数据——实际值(重编码成0或者1的形式) and 预测概率(阳性结局)

#绘制DCAdcaoutput <- dca(data = prob, outcome = "outcome",                  predictors = c("rf_prob"),                 xstart = 0, xstop = 1, ymin = 0)


注意:这个自创函数并没有提供修改图例的参数,但是我们可以通过修改底层代码来修改图例的位置以及大小(在代码的最后几行)


#当然我们也可以通过导入到ggplot2来进行DIYdcadf $net.benefit)# 宽数据转长数据temp "threshold",measure=c("rf_prob","all","none"))


    
ggplot(temp,aes(x=threshold,y=value,colour=variable))+geom_line()+  coord_cartesian(xlim=c(0,1), ylim=c(-0.05,0.5))+   scale_color_discrete(name="Model",labels=c("ranger","all","none"))+  labs(x="Threshold probability (%)")+labs(y="Net benefit")+  theme_bw()+  theme(panel.grid.major=element_blank(),        panel.grid.minor=element_blank(),        legend.title=element_blank())



好,那么到这里就演示完了基础R包如何完成机器学习模型的构建并进行DCA的绘制,那么我们接下来再快速来一遍mlr3体系

reast_cancer_task "breast_cancer")#获取数据breast_cancer_task$positive#查看阳性结局


    
train_set $nrow,0.8*breast_cancer_task$nrow)#划分训练集test_set $nrow),train_set)#划分测试集lrn "classif.ranger",predict_type = "prob")#选择随机森林学习器lrn$train(breast_cancer_task,row_ids = train_set)#拟合模型pred $predict(breast_cancer_task,row_ids = test_set)#预测outcome $truth == "malignant",1,0)prob "outcome" = outcome, "rf_prob" = pred$prob[,1])dcaoutput "outcome",                  predictors = c("rf_prob"),                 xstart = 0, xstop = 1, ymin = 0)



当然有了结果我们后期DIY也是可以按照前面的流程进行的

那么到这里本期推文到这里就结束了,这篇推文算的上是对前面推文的一个扩展,解决了我们针对机器学习模型绘制DCA的问题,还是那句话,我们只需要知道绘制可视化需要什么样的数据,那么我们只需要准备好相关的数据即可


还是那句比较重要的总结:

1.绘制ROC:我们只需要两类数据——实际值 and 预测值

2.绘制DCA:我们只需要两类数据——实际值(重编码成0或者1的形式) and 预测概率(阳性结局)


那么,本期推文到这里就结束啦~

我是晨曦,我们下期再见QAQ


Ps:回复“机器学习DCA”可以得到本期推文内的“dca.R"脚本


参考教程:
1.R语言超详细Logistic回归模型进行临床决策曲线绘制(DCA) - 简书 (jianshu.com)
2.https://mp.weixin.qq.com/s/jE6JajPsdcf_q0RgtVU03w
3.决策曲线(Decision Curve Analysis)的绘制(R语言) - 简书 (jianshu.com)
4.DCA source: R/dca.R (rdrr.io)





晨曦的文献复现系列传送门

1. 跟着Cell学单细胞!抄就对了!



晨曦的混合效应模型系列传送门

1. 你学习的线性回归真的能发science吗?大家都开始玩混合效应模型了

2. 真香预警!想发临床预测模型高分SCI?还得看这个方法!



晨曦的空间转录组笔记系列传送门

1. 拿去耍!!空间转录组实战来了!你在实验室的装逼利器!

2. 来领你的空间转录组救急包!你的装逼速成教程来了!

3. 新贵分析!单细胞联合空转分析,R语言手把手教学,你学废了吗?

4. 单细胞+代谢最新套路!高分文章的最爱,请低调使用!

5. 承包单细胞所有美图?这个R包就够了!



晨曦碎碎念系列传送门(未完待续...)
1. 想白嫖单细胞生信文章?这五大源头数据库,是你发文章的源泉!高频预警!你一定要收藏!
2. 盘活国自然的新思路!你研究的热点真的是热点吗?大数据帮你定位!
3. 好家伙!90%以上审稿人都会问到的问题,今天帮你解决!就是这么齐齐整整!
4. 没想到!生信分组还有这个大坑!你被坑过吗?!
5. 关于富集分析这件事,我有话想说。。。
6. 好御好高级!CNS级别美图是如何炼成的?看这篇就懂了!
7. 化繁为简!一文帮你彻底搞懂机器学习!想发高分文章,这篇是基础!
8. 你不知道的机器学习算法!关键时候能救命!
9. 致命!芯片&测序的联合到底能不能联合分析?审稿人最爱用这刁难你!
10. 躲不过的树!80%的生信SCI中都见过它!你真的搞懂了吗?
11. Python or R? 哪个更适用于生信发文章?深入浅出给你讲透!
12. 生信和抖音是一样的算法原理?不仅让你成瘾,也能发高分文章!
13. 跟3-5分SCI相比,CNS里的生信玩的可太花了!其实简单的离谱!
14. 揭秘!小鼠和人的免疫浸润分析有何区别?看这篇就够了!
15. 临床预测模型中的宠儿!最常见的机器学习 算法,没有之一!直接拿来用 !
16. 临床预测模型评价,不只有ROC,这个指标你遗漏了吗?
17. 肺肿瘤机器学习模板奉上!还不赶快产出2022年的你的第一篇SCI?!

18. 万字长文教你搞定机器学习!拿走不谢!

19. 揭秘!小鼠和人的免疫浸润分析有何区别?看这篇就够了!

20. 想做单细胞,样本不合格?这个方法帮你解决大难题!

21. 审稿人用的升级版免疫浸润分析,多一个X,CIBERSORT有啥差别?

22. 临床预测模型的天花板来了!看上去高大上,今天拆开揉碎手把手教你!

23. 单细胞差异分析不会做?这招极简教你搞定!

24. 平无奇小成本搞定单细胞测序?这个分析你一定要get!

25. 超酷炫!一文教你升级你的单细胞可视化!你心动了没?

26. 高分文章最爱的样本分型分析!强烈推荐!!!

27. 给你的R语言分析加个倍速键!炒鸡实用,强烈推荐!

28. 降维你还在用多种R包吗?快来试试这个宝藏R包吧!


晨曦单细胞文献阅读系列传送门

1. 非肿瘤单细胞分析模板已到位!眼馋单细胞的小伙伴快来看!手把手教你产出第一篇单细胞SCI!

2. 万字长文介绍单细胞高级分析!学会这个分析,搞定单细胞套路80%的难题!


3. 太顶了!学会这篇Nature分析,帮你搞定一篇高分SCI!



晨曦单细胞笔记系列传送门

1. 首次揭秘!不做实验也能发10+SCI,CNS级别空间转录组套路全解析(附超详细代码!)

2. 过关神助!99%审稿人必问,多数据集联合分析,你注意到这点了吗?

3. 太猛了!万字长文单细胞分析全流程讲解,看完就能发文章!建议收藏!(附代码)

4. 秀儿!10+生信分析最大的难点在这里!30多种方法怎么选?今天帮你解决!

5. 图好看易上手!没有比它更适合小白入手的单细胞分析了!老实讲,这操作很sao!

6. 毕业救星!这个R包在高分文章常见,实用!好学!

7. 我就不信了,生信分析你能绕开这个问题!今天一次性帮你解决!



晨曦从零开始学画图系列传送门
1. 看完这篇,彻底掌握生信画图精髓!超级实用,我不许你不知道!
2. 想让SCI看上去更高逼格?这些绘图技巧你一定要知道!
3. 3min掌握SCI配色神技,学会你就是组会汇报上最靓的仔!


晨曦单细胞数据库系列传送门

1. 宝儿,5min掌握一个单细胞数据库,今年国自然就靠它了!(附视频)

2. 审稿人返修让我补单细胞数据咋办?这个神器帮大忙了!

3. 想白嫖、想高大上、想有高大上的SCI?这个单细胞数据库,你肯定用得上!(配视频)

4. What? 扎克伯格投资了这个数据库?炒概念?跨界生信?

5. 不同物种也能合并做生信?给你支个妙招,让数据起死回生!

6. 零成本装逼指南!单细胞时代,教你用单细胞数据库巧筛基因,做科研!

7. 大佬研发的单细胞数据库有多强? 别眼馋 CNS美图了!零基础的小白也能10分钟学会!

8. 纯生信发14分NC的单细胞测序文章,这个北大的发文套路,你可以试下!实在不行,拿来挖挖数据也行!

9. 如何最短时间极简白嫖单细胞分析?不只是肿瘤方向!十分钟教你学会!

10. 生信数据挖掘新风口!这个单细胞免疫数据库帮你一网打尽了!SCI的发文源头!




END

撰文丨晨   曦
排版丨四金兄
主编丨小雪球



欢迎大家关注解螺旋生信频道-挑圈联靠公号~



Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/138353
 
278 次点击