基于LightGBM的肺癌分类模型:从预测到个体化治疗

发布时间:2023年12月22日

一、引言

肺癌作为全球范围内主要死因之一,对人类健康产生了巨大威胁。准确的肺癌分类是制定有效治疗和预后评估的基础。传统的肺癌分类方法,如组织学类型和分期,虽然在临床实践中被广泛应用,但存在着诊断标准不一致、主观性强以及无法捕捉复杂的肿瘤异质性等问题。因此,开发基于机器学习的肺癌分类模型具有重要意义。

LightGBM是一种基于梯度提升决策树(Gradient Boosting Decision Tree)的机器学习算法,在肺癌分类任务中显示出了显著的优势。首先,LightGBM具有高效性能,能够处理大规模数据集和高维稀疏数据,加速了模型训练和预测过程。其次,LightGBM采用了基于直方图的决策树分割算法,能够处理非线性关系和特征交互,提高了模型的表达能力和准确性。

在肺癌分类模型的开发中,平衡准确性和可解释性是关键目标。准确性保证患者能够得到正确的分类和个性化治疗方案,提高生存率和生活质量。然而,仅追求准确性可能导致模型成为黑盒子,医生和患者难以理解和信任其结果。因此,我们需要在追求高准确性的同时,保持模型的可解释性,以便医生和患者能够理解模型的决策依据,并做出明智的决策。

二、lightGBM简介

2.1 lightGBM算法的基本原理和优势

梯度提升决策树(Gradient Boosting Decision Tree,简称GBDT)是一种集成学习算法,通过逐步迭代训练决策树模型,不断纠正前一轮迭代的错误。GBDT基于加法模型和梯度下降的思想,通过最小化损失函数的负梯度来训练模型。

「LightGBM算法在GBDT的基础上进行了改进和优化。其基本原理包括以下几个关键点:」

  • 直方图算法:LightGBM采用了基于直方图的决策树分割算法,将连续特征离散化为直方图的形式,有效地减少了数据排序的时间,提高了训练速度。
  • 多叶子结点分裂策略:传统的GBDT算法每次只选择一个最佳的叶子结点进行分裂,而LightGBM通过多叶子结点分裂策略,在每次分裂时计算每个叶子结点的增益,并选择增益最大的结点进行分裂。这样可以增加模型的表达能力,提高准确性。
  • 特征并行化和直方图压缩:LightGBM支持特征并行化处理,并采用特征向量的稀疏化存储和直方图压缩技术,大幅降低了内存消耗,使得算法在大规模数据集上能够高效运行。

「相比传统的GBDT算法,LightGBM具有以下优势:」

  • 更快的训练速度:采用了基于直方图的决策树分割算法,减少了数据排序的时间,同时支持并行化处理,大幅提高了训练速度。
  • 更低的内存消耗:通过特征向量的稀疏化存储和直方图压缩技术,降低了内存占用,使得算法能够处理大规模数据集。
  • 更好的准确率:采用多叶子结点分裂策略,能够处理非线性关系和特征交互,提高了模型的表达能力和准确性。

2.2 lightGBM和XGBoost的异同点

LightGBM和XGBoost都是基于GBDT算法的优化版本,它们在算法的结构和实现上存在一些异同点:

  • 数据划分方式:XGBoost采用的是贪心算法,基于精确的梯度值来进行划分,而LightGBM采用的是直方图算法,计算出每个特征的直方图后,根据直方图上的信息来选择最优的划分点。
  • 分裂结点方式:XGBoost采用的是近似算法,找到一个全局最优分裂点,而LightGBM采用的是局部最优法,也就是多叶子结点分裂策略,即对每个叶子结点计算增益并选择最优的叶子结点来分裂,从而提高了模型的表达能力。
  • 内存消耗和速度:LightGBM在处理大规模数据集时表现更出色,因为它采用了特征向量的稀疏化存储和直方图压缩技术。而XGBoost则适用于小型或中型数据集。

2.3 lightGBM算法的局限性

尽管LightGBM在许多方面具有优势,但也存在一些局限性:

  • 处理非平衡数据的能力有限:由于LightGBM采用基于直方图的算法,在处理非平衡数据时可能出现样本不均衡的问题,导致模型预测结果偏向于多数类。
  • 对噪声敏感:LightGBM对噪声和异常值比较敏感,容易受到噪声的干扰,可能导致模型的准确性下降。
  • 在小数据集上表现不如其他算法:由于LightGBM采用了多叶子结点分裂策略,相比传统的GBDT算法,对于小规模数据集容易发生过拟合现象,可能导致模型泛化能力不足。

三、实例展示

  • 「数据集准备」
library(survival)
head(lung)

结果展示:

>?head(lung)
??inst?time?status?age?sex?ph.ecog?ph.karno?pat.karno?meal.cal?wt.loss
1????3??306??????2??74???1???????1???????90???????100?????1175??????NA
2????3??455??????2??68???1???????0???????90????????90?????1225??????15
3????3?1010??????1??56???1???????0???????90????????90???????NA??????15
4????5??210??????2??57???1???????1???????90????????60?????1150??????11
5????1??883??????2??60???1???????0??????100????????90???????NA???????0
6???12?1022??????1??74???1???????1???????50????????80??????513???????0
  • 「示例数据集简介」
这个数据集名为?"lung",包含了228个肺癌患者的临床特征和生存数据。具体来说,它包含了以下10个变量:

inst:?患者所在医院的编号。
time:?患者确诊后生存时间(单位:天)。
status:?患者是否在观察期内死亡,如果是则为1,否则为2。
age:?患者的年龄。
sex:?患者的性别,1表示男性,2表示女性。
ph.ecog:?患者的肺癌ECOG(Eastern?Cooperative?Oncology?Group)表现评分,其中0表示正常活动,5表示完全失能。
ph.karno:?患者的Karnofsky评分,用于评估患者的一般状态和功能水平,最高得分为100,分数越低表示功能能力越差。
pat.karno:?患者入组时的Karnofsky评分。
meal.cal:?患者每日饮食摄入热量(单位:卡路里)。
wt.loss:?患者在过去6个月中的体重减轻量(单位:磅)。
这些变量可以用来预测患者的生存时间和生存率,以及探索与肺癌患者相关的临床特征。
  • 「数据预处理」
summary(lung)

结果展示:

??????inst????????????time????????????status???????????age???????
?Min.???:?1.00???Min.???:???5.0???Min.???:1.000???Min.???:39.00??
?1st?Qu.:?3.00???1st?Qu.:?166.8???1st?Qu.:1.000???1st?Qu.:56.00??
?Median?:11.00???Median?:?255.5???Median?:2.000???Median?:63.00??
?Mean???:11.09???Mean???:?305.2???Mean???:1.724???Mean???:62.45??
?3rd?Qu.:16.00???3rd?Qu.:?396.5???3rd?Qu.:2.000???3rd?Qu.:69.00??
?Max.???:33.00???Max.???:1022.0???Max.???:2.000???Max.???:82.00??
?NA's???:1???????????????????????????????????????????????????????
??????sex???????????ph.ecog??????????ph.karno????????pat.karno?????
?Min.???:1.000???Min.???:0.0000???Min.???:?50.00???Min.???:?30.00??
?1st?Qu.:1.000???1st?Qu.:0.0000???1st?Qu.:?75.00???1st?Qu.:?70.00??
?Median?:1.000???Median?:1.0000???Median?:?80.00???Median?:?80.00??
?Mean???:1.395???Mean???:0.9515???Mean???:?81.94???Mean???:?79.96??
?3rd?Qu.:2.000???3rd?Qu.:1.0000???3rd?Qu.:?90.00???3rd?Qu.:?90.00??
?Max.???:2.000???Max.???:3.0000???Max.???:100.00???Max.???:100.00??
?????????????????NA'
s???:1????????NA's???:1????????NA's???:3???????
????meal.cal?????????wt.loss???????
?Min.???:??96.0???Min.???:-24.000??
?1st?Qu.:?635.0???1st?Qu.:??0.000??
?Median?:?975.0???Median?:??7.000??
?Mean???:?928.8???Mean???:??9.832??
?3rd?Qu.:1150.0???3rd?Qu.:?15.750??
?Max.???:2600.0???Max.???:?68.000??
?NA's???:47???????NA's???:14??

从上面可以看出,该数据集中存在很多的缺失数据,在分析之前需要「插值处理」一下。

library(mice)
input.data?<-?mice(lung,seed=5)
data?<-?complete(input.data,3)
summary(data)

结果展示:

?????inst????????????time????????????status???????????age???????
?Min.???:?1.00???Min.???:???5.0???Min.???:1.000???Min.???:39.00??
?1st?Qu.:?3.00???1st?Qu.:?166.8???1st?Qu.:1.000???1st?Qu.:56.00??
?Median?:11.00???Median?:?255.5???Median?:2.000???Median?:63.00??
?Mean???:11.07???Mean???:?305.2???Mean???:1.724???Mean???:62.45??
?3rd?Qu.:16.00???3rd?Qu.:?396.5???3rd?Qu.:2.000???3rd?Qu.:69.00??
?Max.???:33.00???Max.???:1022.0???Max.???:2.000???Max.???:82.00??
??????sex???????????ph.ecog??????????ph.karno????????pat.karno?????
?Min.???:1.000???Min.???:0.0000???Min.???:?50.00???Min.???:?30.00??
?1st?Qu.:1.000???1st?Qu.:0.0000???1st?Qu.:?70.00???1st?Qu.:?70.00??
?Median?:1.000???Median?:1.0000???Median?:?80.00???Median?:?80.00??
?Mean???:1.395???Mean???:0.9561???Mean???:?81.89???Mean???:?79.91??
?3rd?Qu.:2.000???3rd?Qu.:1.0000???3rd?Qu.:?90.00???3rd?Qu.:?90.00??
?Max.???:2.000???Max.???:3.0000???Max.???:100.00???Max.???:100.00??
????meal.cal?????????wt.loss???????
?Min.???:??96.0???Min.???:-24.000??
?1st?Qu.:?712.2???1st?Qu.:??0.000??
?Median?:?975.0???Median?:??7.000??
?Mean???:?933.8???Mean???:??9.706??
?3rd?Qu.:1150.0???3rd?Qu.:?15.000??
?Max.???:2600.0???Max.???:?68.000??

从上面可以看出结果补充完整。

  • 「模型拟合」
library(lightgbm)
library(tidymodels)
library(bonsai)
set.seed(123)

data$status?<-?as.factor(data$status)
lgb?<-?boost_tree()?%>%?
??set_engine("lightgbm")?%>%
??set_mode("classification")?%>%?
??fit(status~.,data=data)
  • 「构建解释器」
library(DALEXtra)
lgb_exp?<-?explain_tidymodels(lgb,
??????????????????????????????data?=data[,-2],
??????????????????????????????y=data$status,
??????????????????????????????label?=?"LightGBM")
#?Breakdown图
lgb_bd?<-?predict_parts(lgb_exp,new_observation=data[1,-2])
plot(lgb_bd)
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/719ce2472f9b42d7b5eaa980447a4274.png#pic_center)

模型预测样本2 的值为0.971,红色或浅蓝色条形显示各变量的对预测的影响,正值表示增加患病的风险,负值减少患病的风险,预测值等于每个特征贡献的和。

#?SHAP值
lgb_shap?<-?predict_parts(lgb_exp,
??????????????????????????type?=?"shap",
??????????????????????????new_observation?=?data[2,])

plot(lgb_shap,show_boxplots=FALSE)

![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/04623dacd517441e94276d437d19a4d0.png#pic_center)

SHAP值也可以显示各变量对预测的贡献度,只不过与Breakdown的评估方法不同。红色条形对样本2 的贡献为负值,属于保护因素,浅蓝色条对预测的贡献为正值。

#?CP图
library(ingredients)
lgb_cp?<-?ceteris_paribus(lgb_exp,data[2,])
plot(lgb_cp,subtitle?=?"")

![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/04b53f5a104a45d6bf135ac309057a6b.png#pic_center)

CP图可以显示每个预测变量对模型预测影响的变化曲线,如果曲线变化陡峭,则表明该变量对预测的影响较大;如果曲线平缓或呈直线,则表明该变量对预测的影响较小。

#?部分依赖图(PDP)
lgb_pd?<-?partial_dependence(lgb_exp)
plot(lgb_pd)

![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/545f81afb81448048b03c5cf2c3d9bb5.png#pic_center)

部分依赖图也可以展示变量对预测的影响。

#?变量重要性
library(vivo)
lgb_profiles?<-?model_profile(lgb_exp)
lgb_vi?<-?global_variable_importance(lgb_profiles)
plot(lgb_vi)
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/c940039557344688b842692f39b4a3d4.png#pic_center)
#?绘制ROC曲线
library(auditor)
lgb_mp?<-?model_evaluation(lgb_exp)
#?绘制ROC曲线
plot(lgb_mp)+geom_line(color="red",lwd=1.5,lty=2)+geom_abline()
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/5f32ec83e4654842a71fb437636ac0c3.png#pic_center)

四、结论和展望

本研究表明,LightGBM算法在肺癌分类中具有广阔的应用前景和重要的贡献。其优势包括高效处理大规模数据、准确捕捉特征之间的非线性关系、以及提供较强的解释性,这些特点使得它成为肺癌研究中一个有力的工具。通过结合临床信息和基因表达数据,LightGBM能够帮助医生进行肺癌的早期检测、分类预测以及治疗响应预测,为临床决策提供重要支持。

尽管本研究取得了一些令人鼓舞的结果,但仍然存在一些局限性和挑战。当前研究的局限性包括数据集的多样性不足、特征选择和优化的待完善性,以及对模型解释性的进一步改进空间。未来可能的研究方向包括扩大数据集的规模和多样性、优化特征选择方法、改进模型的解释性,以及解决数据隐私和安全等挑战。

结合LightGBM算法的经验和成果,可以推动乳腺癌研究的深入发展。类似于肺癌研究,LightGBM算法可以应用于乳腺癌的早期检测、分类预测和治疗响应预测,为乳腺癌的诊断和治疗提供更精准、个性化的支持。未来的研究可以借鉴当前肺癌研究的经验,结合乳腺癌特有的临床和基因表达数据,利用LightGBM算法开展更加深入的研究,为乳腺癌患者的健康提供更好的服务和支持。

*「未经许可,不得以任何方式复制或抄袭本篇文章之部分或全部内容。版权所有,侵权必究。」

文章来源:https://blog.csdn.net/weixin_43935907/article/details/135161013
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。