今天我们来谈一谈XGBoost+SHAP的原理、在SCI文章中的应用,以及如何不写代码实现XGBoost+SHAP的分析。
最近几年,机器学习在临床研究文章中出现的频率越来越高了,相比于传统的回归分析,机器学习能够处理的问题更复杂,能够探索各种可能存在的统计组合,然后给出一个最佳的变量组合。而在众多机器学习方法中,XGBoost 出现的频次最高。XGBoost 尤其适合解决临床研究中那些变量繁多、关系错综复杂的预测和分类难题。无论是构建疾病风险预测模型、识别潜在的治疗靶点,还是对患者进行精准分型,XGBoost都展现出强大的潜力。
XGBoost的原理比较复杂,我们用一个简单的案例向大家解释一下核心逻辑:
我们以学生考试为例,每个学生都类似于一个模型,考的分越高说明错误率低,模型的预测效果好。反之考分低,说明模型能力差。我们的目标是找到一个考分最高的模型。
传统的预测模型是基于学生一次考试的结果来判断好坏,大部分时候模型不可能拿到最高分。
而XGBoost则是让多个学生进行接力:
第一个学生(弱模型):他先考试,但成绩一般(预测不准)。他答错的题(预测误差),就是下一棒的重点。
第二个学生:他不直接做原题,专门研究第一个学生错在哪里(学习残差)。他目标是:如果第一个学生给某病人打了60分(低估风险),他就努力补上缺失的分数(比如+20分)。
第三个学生:他研究前两人加起来还错的地方,继续补漏(可能+5分)。
不断接力:加更多学生,每个都专注于修正前面所有人组合起来还存在的错误。
最终成绩:新病人的风险预测 = 第一个学生的打分 + 第二个学生的补分 + 第三个学生的补分 + ... 所有学生补分累加。
简单来说,XGBoost 就是让一堆简单模型接力学习,后一个专修前一个的错误,把所有修正加起来得到远超单个模型的精准预测。它特别擅长处理像临床数据这样复杂、有缺失的情况,预测患者的预后情况。
当然,XGBoost也有缺点:它无法像回归模型那样直接给出OR值或β系数,所以没办法直观解释某个X对Y的影响大小是多少,这就是我们通常说的“黑箱”。为了解决这个问题,统计学家和计算机专家引入了SHAP 的概念,量化了每个模型参数的贡献值。
SHAP值(Shapley Additive exPlanations)的定义: 基于博弈论的Shapley值,表示在特定预测中,某个特征相对于基线预测(所有特征取平均值的预测)的贡献值,这就相当于解决了黑箱子的问题。
比如在我们使用某些指标来预测人的生存年龄,SHAP值显示:
吸烟贡献 -3.5年
饮酒贡献 -2.8年
规律运动贡献 +4.5年
那么,我们就可以量化的知道每一个因素对于生存年龄的影响大小。
因此越来越多的文章,开始使用XGBoost+SHAP这个组合来开发临床预测模型。下面我们以一篇真实的SCI文章案例来说明这个问题。最后也会告诉大家如何使用统计工具零代码复现整套分析。
文章标题是:XGBoost Regression of the Most Significant Photoplethysmogram Features for Assessing Vascular Aging(IF 6.8),中文是:基于最显著光电容积脉搏波特征评估血管老化的XGBoost回归分析。文章在 752 名志愿者的 PPG(光电容积描记法) 波形里提取的 78 个特征的数据,通过XGBoost回归模型预测志愿者年龄,并计算了SHAP值去评估特征重要性。

该研究在构建XGBoost预测血管衰老的模型时,使用了贝叶斯优化的方法进行调参,找到了最优参数,用于预测模型的构建,最终得到的预测模型具有 8.1 年的平均绝对误差(MAE)和9.9年的均方根误差(RMSE),通过SHAP值进行的特征重要性分析表明,收缩压和舒张压峰值振幅、上升时间、偏度以及脉搏面积等特征在血管老化评估中起关键作用,比其他PPG特征在血管老化评估中更具重要性。
关键结果解读:
XGBoost模型的性能指标
MAE (Mean absolute error) =8.1,表明预测年龄与实际年龄平均相差8.1年。Root mean squared error (Mean absolute error) =9.9,表明预测年龄平均偏离真实值约 9.9年。
多个性能评价指标综合表明,XGBoost回归模型的表现与现有基于光电容积脉搏波(PPG)的血管老化评估模型相当。
贝叶斯优化得到的最佳参数组合
这篇文章在执行贝叶斯优化时用了10折交叉验证,所以得到Mean ± SD (range)。一般研究会选择交叉验证得到的参数分布的均值或者中位数,来构建XGBoost模型。
SHAP值——特征重要性
特征重要性条形图:展示各特征对模型预测的平均绝对影响力(mean(|SHAP value|))。结果分析:
舒张期波幅(Amp_dia),重搏波面积(Area_rppG)和收缩期上升时间 (RT_sys )是最强预测因子(SHAP>1.0)。前9个关键特征贡献度 ≈ 7.86,69个次要特征总和达11.44。(次要特征总和 > 关键特征,可以优化冗余特征)。
特征重要性条形图
SHAP蜂群图:展示各特征值对预测的方向性影响(SHAP value impact),其中每一个点代表一个样本的某个特征值对模型预测的贡献,横坐标表示SHAP范围,纵坐标表示特征重要性排序,点颜色表示特征值高低(默认红=高值,蓝=低值)。结果分析:
Area_rppG(重搏波面积):高值(红点) 主要分布在SHAP<0区域,表明特征值越大,血管年龄越小,对健康有促进作用。提示重搏波面积越大,预测血管年龄更年轻。
RT_sys(收缩期上升时间):低值(蓝点) 集中在SHAP<0区域,表明特征值越小,血管年龄越小,对健康有促进作用。提示上升时间缩短,预测血管年龄更年轻。
SHAP蜂群图
在这篇SCI中,XGBoost+SHAP强强联合,探讨了XGBoost作为血管衰老评估模型的潜力,并通过SHAP值分析,研究探讨了关键PPG特征。
那么,这么好用的机器学习方法,该如何分析呢?
机器学习的代码比传统回归分析要复杂很多,还涉及到模型超参数的贝叶斯优化,为了解决这些问题,EasyR统计软件开发一套0代码复现XGBoost的工具,大家动动鼠标就可以完成复杂的XGBoost+SHAP的分析结果。下面我们看看实战教程:
1.登录EasyR网站,上传自己的数据。
这个软件是在线工具,无需下载、无需安装,打开网页就可以试用(网址是https://www.easyrdata.com),第一次使用需要注册,注册非常简单。进入网站之后,大家可以用系统自带的demo数据进行测试,也可以上传自己的数据。
2.分析数据查看
在【首页】和【变量清单】可以查看数据的基本情况。
3.选择“高级建模与预测-XGBoost”模块
在【高级建模与预测】里,找到【XGBoost】,选择【因变量Y】和自变量【X】,设置【训练集比例】,然后一键分析。
4.结果输出。
我们的结果展示了贝叶斯优化的全局最优参数组合,XGBoost预测模型的性能指标,SHAP值,以及SHAP值条图和蜂群图,后期我们会上线AI解读功能,帮助大家快速解读模型结果。
好了,以上就是EasyR里XGBoost的操作教程了,大家可以跟着教程一步一步操作。非常建议大家收藏分享,等到需要用的时候可以快速拿来参考。
3.如何在文章中引用EasyR,引用后是否有奖励?
英文期刊引用模板1:The statistical analysis was conducted using R version 4.3.1 (https://www.R-project.org) and EasyR (https:// www.easyrdata.com Solutions, Inc., Shanghai). Statistical significance was determined by P values < 0.05 in all analyses.
英文期刊引用模板2:Statistical analysis was performed with R version 4.3.1 (https://www.R-project.org) and EasyR (https://www.easyr. cc Solutions, Inc., Shanghai).
中文期刊引用:统计分析采用R软件4.3.1版本(https://www.R-project.org )以及EasyR(https://www.easyrdata.com ,上海,斯录欣)完成。所有分析中,统计学显著性水平设定为P<0.05。
文章见刊后,可以联系我们的客服,领取软件的免费延长激活码。

