ixxmu / mp_duty

抓取网络文章到github issues保存
https://archives.duty-machine.now.sh/
127 stars 32 forks source link

如何作出类似Nature子刊中的决策树? 让你的技能+1! #2680

Closed ixxmu closed 2 years ago

ixxmu commented 2 years ago

https://mp.weixin.qq.com/s/QqXUBaSEU2W5D6WmsuGlng

ixxmu commented 2 years ago

如何作出类似Nature子刊中的决策树? 让你的技能+1! by R语言和统计



小编阅读到一篇发表在《Nature machine intelligence》的论文,名为“An interpretable mortality prediction model for COVID-19 patients” [1]


论文作者共分析了485例新冠病人的临床数据,包括基本信息,症状的严重程度,血液样本和实验室检查,如肝功能,肾功能,凝血功能,电解质与炎症因子。


根据受试者的预后(生存/死亡)建立了一个准确度达90%的single-tree XGBoost的预测模型,见下图: 


图片来源 [1]

决策树,因它的简洁易懂并且同时具备不错的预测准确性而深受研究者喜欢。


我们今天的任务就是作出类似上图的决策树。


马上进入操作部分


首先,安装所需R包{treeheatr},关于此R包的详细内容请查看参考文献 [2]: 


install.packages("treeheatr")
library(treeheatr)


下一步,使用到的数据是R自带的"iris",来查看一下数据: 


summary(iris)


在下面的作图中,Species将作为因变量,其他变量作为预测变量(predictors)。


制作决策树:


heat_tree(iris, target_lab = "Species")



一行代码搞定,很简单有没有

不过,要完全读懂上图则需要再加把劲

此图主要由上下两大部分组成:决策树与热图。

heat_tree()根据默认的参数筛选出两个最重要的变量(Petal.Width和Petal.Length)从而建立了这颗“树”。根据两个变量的数值大小进行Species的分类(classification)或诊断(diagnosis)。


首先看决策树部分的最上端,Petal.Length ≤ 1.9则分向左侧,诊断为“setosa”。其中,setosa下方的颜色为紫色,并且纯度很高(无参杂其它颜色),代表模型的准确度高。

决策树中Petal.Length > 1.9则分向右侧。看中间部分,Petal.Length(≤4.8 | > 4.8)两分支虽然都为versicolor,但右分支下方的颜色纯度不高,提示中间部分右分支(>4.8)的模型准确度相较于左侧低。

热图部分中的两行(Petal.Width与Petal.Length)是纳入“决策树”的两个变量。在每一行中,一个“竖着的长方形”即代表一个样本的数值,颜色越亮(或越黄)代表数值越大;反之,则越小。

还可以任意修改图片颜色,因为一共有三组,所以添加三种颜色: 


heat_tree(iris, target_lab = "Species",
          target_cols = c(
"red", "royalblue1", "palegreen3")) # 修改颜色




因为heat_tree()函数只筛选出最重要的两个,我们可以选择将四个变量全部在热图中展示: 


heat_tree(iris, target_lab = "Species", 
          show_all_feats =
TRUE)



也可以将各个分类组别之间的距离加宽一些: 


heat_tree(iris, target_lab = "Species", 
          panel_space =
0.03)   # 调整组别间的距离



如果有小伙伴只想要决策树,也可以去掉热图部分: 


heat_tree(iris, target_lab = "Species",
          show =
"tree-only"# 只显示决策树



好啦,今天的内容就到这里。


如果有帮助,记得分享给需要的人!


参考文献:

1. An interpretable mortality prediction model for COVID-19 patients, nature machine intelligence.
2. treeheatr: an R package for interpretable decision tree visualizations, Bioinformatics.

▌本文由R语言和统计首发,如需转载请联系我们
▌课程相关咨询可添加R师妹微信: kefu_rstats
▌编辑:June
▌邮箱:contact@rstats.cn
▌网站:www.rstats.cn
我们致力于让R语言和统计变得简单!