大家好。新的机器学习方法层出不穷,那么,这些方法对于我们护理或医学研究领域有什么启发呢?对于这个问题,笔者翻阅了不少机器学习相关的SCI文献,总结了一点小心得:拥抱新技术,积极探索交叉领域,精准干预离不开精准且实用的预测模型。
一、CatBoost的亮点
无需参数调整即可实现卓越品质
分类功能支持
快速且可扩展的 GPU 版本
提高准确性,减少过拟合
快速预测
install.packages('remotes')
remotes::install_url('https://github.com/catboost/catboost/releases/download/v1.2.5/catboost-R-windows-x86_64-1.2.5.tgz',
INSTALL_opts = c("--no-multiarch", "--no-test-load"))
#### 导入R包和演示数据 ####
library(tidyverse)
library(catboost)
# 直接导入R文件,这是上面的泰坦尼克数据预处理后的文档
# 为了方便,我把它保存起来了,这里就直接读入,如果你没有
# 可以直接读入泰坦尼克数据
load('dataset/train.rdata')
load('dataset/test.rdata')
vars = newtrain[,-1]
y = as.numeric(newtrain$Survived) - 1 #标签需要是0或1
# 需要对数据进行特殊封装
preprocessdata = catboost.load_pool(vars,y)
#建模,内部有默认的随机种子0
cat_mod = catboost.train(preprocessdata,NULL,
param= list(loss_function = 'Logloss',
iterations = 100,
metric_period=10,
eval_metric='AUC'))
# 查看特征重要性排序
catboost.get_feature_importance(cat_mod)
# 交叉验证
cat_cv = catboost.cv(preprocessdata, fold_count = 10,param= list(loss_function = 'Logloss',
iterations = 100,
metric_period=10,
eval_metric='AUC'))
# 预测新数据,不需要封装标签进去
pooltest = catboost.load_pool(newtest[,-1])
# 预测,可以直接获取概率
pp = catboost.predict(cat_mod,pooltest,prediction_type = 'Probability')
# 再获取预测类别,方便做混淆矩阵
pclass = catboost.predict(cat_mod, pooltest, prediction_type = "Class")
# 混淆矩阵
caret::confusionMatrix(as.factor(pclass), newtest$Survived,positive ='1')
训练速度确实快,但也可能是数据量小,看不出来什么。上述代码还输出了特征重要性排序,大家可以用xgboost、随机森林等模型比较下。另外,与教程不同的是,笔者修改了评估指标为AUC,默认应该不是这个指标,有兴趣的话,大家可以看看文档。
10折交叉验证做起来就需要点时间了,大约1分钟,与电脑配置有关。结果显示,auc最高是约0.925,最低也有0.8,这个结果确实不错了,而且每折内部也有多轮次的评估,模型的稳定性还可以。
在新数据中预测一下,并输出一份混淆矩阵看看:
结果还可以。关于其他评价结果,以及一些可视化方法,比如ROC\PR\校准\DCA等,可以参考其他预测模型的代码,因为是很类似的(原理一模一样),基本是只需要改几个变量名就能搞定的事。如果您觉得实在搞不定或需要辅导,可以联系笔者(南归北游,微信号:hulitongjisuibi)或者我们团队的其他成员。
此外,机器学习多数是黑箱模型,无法直接用于临床,考虑采用shap等方法进行解释,或转换成列线图等可视化工具,下面就是一份shap解释热图:
图片来源:见参考文献
觉得您觉得此文有帮助的话,可以帮忙点个赞吗?谢谢
主要参考来源:
官网 https://catboost.ai/
官方教程 https://catboost.ai/en/docs/concepts/r-quickstart
相关R包(catboost)的帮助文档;
Valsaraj A, Kalmady SV, Sharma V, Frost M, Sun W, Sepehrvand N, Ong M, Equilbec C, Dyck JRB, Anderson T, Becher H, Weeks S, Tromp J, Hung CL, Ezekowitz JA, Kaul P. Development and validation of echocardiography-based machine-learning models to predict mortality. EBioMedicine. 2023 Apr;90:104479. doi: 10.1016/j.ebiom.2023.104479. Epub 2023 Feb 28. PMID: 36857967; PMCID: PMC10006431.
免责声明:仅供科研学习和分享,不做商业用途,如有侵权,请联系我们删除,谢谢。