1. 引言
1.1. 研究背景
慢性肾脏病(Chronic Kidney Disease, CKD) [1]的研究历程是一段不断进化和深化的历史。从早期对肾脏疾病的简单认识,到现在对CKD复杂病理生理机制的深入理解,研究者们已经取得了显著的进展。
在早期,CKD并没有被广泛认识,很多肾脏疾病被忽视或者误诊。随着时间的推移,医学界开始意识到肾脏疾病的重要性,并开始进行更多的研究。到了21世纪初,CKD的定义得到了重新界定,任何持续三个月以上的肾脏形态、功能、血液或尿液成分的改变都被归类为CKD [2]。这包括了即使肾功能正常,但肾脏有疤痕或只有一个肾脏的情况。随着研究的深入,CKD的流行病学特点逐渐被揭示。CKD与糖尿病、高血压、肥胖和动脉粥样硬化等疾病的关联性被越来越多的研究所证实。研究者开始探索CKD的病理生理机制[3]-[5],包括肾单位的丢失、肾单位肥大、肾小球滤过受损和肾脏纤维化等过程。在治疗方面,CKD的治疗策略不断发展,包括药物治疗、血液透析、腹膜透析和肾脏移植等。同时,针对CKD的早期干预和预防措施也越来越受到重视。近年来,CKD的遗传学研究取得了重大进展,例如APOL1基因与非裔美国人的肾脏疾病之间的关联。研究人员已经鉴定出多种尿液和血液生物标志物,用于CKD的早期诊断和预后评估。CKD已经成为一个全球性的公共卫生问题。全球疾病负担研究显示,CKD是全球死亡的第十二大原因。未来的CKD研究将继续探索新的治疗靶点、改善现有治疗方法、开发新的生物标志物,并进一步探索CKD的病理生理机制。随着CKD的全球负担日益加重,公共卫生策略的制定也成为研究的重要方向,包括提高公众意识、改善早期筛查和诊断、优化治疗方案等。
1.2. 国内外研究现状
近20年来,因果推断作为统计学、机器学习、人工智能等领域的一个重要研究方向,受到了国内外学者的广泛关注。学者们提出了多种新的因果推断算法和模型,如基于多阶段学习和双重鲁棒深度神经网络的因果推断方法。因果推断的方法论不断创新,包括工具变量法、倾向得分匹配、双重差分法等。这些方法在经济学、流行病学、社会科学等多个领域得到了广泛应用。因果推断与机器学习的结合越来越紧密,特别是在深度学习领域。学者们开始探索如何将因果推断应用于提升模型的可解释性、泛化能力和可信度。
2014年至2024年间,Judea Pearl教授等人提出的因果推断理论基础和基于约束的方法,以及Bernhard Schölkopf、Kun Zhang、Shohei Shimizu等学者提出的基于因果函数模型的方法[6],为因果推断领域的发展奠定了基础。因果推断的理论基础得到了进一步的完善和发展。近年来,研究者开始探索如何将因果推断的方法与机器学习算法相结合。例如,Athey和Imbens (2016)讨论了如何使用机器学习方法进行因果推断,并强调了在进行因果推断时考虑潜在混杂因素的重要性。Wager和Athey (2018)提出了一种结合随机森林和因果推断的方法,用于估计异质性处理效应。这种方法可以扩展到使用XGBoost,以提高估计的准确性和模型的解释性。Ho等人(2007)讨论了倾向评分匹配(PSM)在减少模型依赖性方面的作用,这可以与XGBoost结合使用,以提高处理效应估计的准确性。Peters等人(2017)探讨了因果发现方法,这些方法可以帮助识别变量之间的因果关系结构。将这些方法与XGBoost结合,可以提高因果推断的准确性。Tian和Pei (2018)提出了Causal Boosting算法,该算法在XGBoost的基础上引入了因果推断的框架,通过构建适应因果关系的树结构,实现对因果效应的直接估计。学者们在基于观察数据的因果推断领域取得了显著进展,包括因果关系方向推断、高维数据上的误发现率控制和不完全观察数据上的隐变量检测等问题。
因果推断领域的国际合作和学术交流日益频繁。例如,首届泛太平洋因果推断大会(Pacific Causal Inference Conference, PCIC)于2019年5月11日至12日在北京举办,由北京大学公共卫生学院生物统计系、北京大学北京国际数学研究中心等发起。自此之后每年举办一次泛太平洋因果推断大会等国际会议,最近一次在2024年7月5日至6日在中国上海举行。此会议聚集了来自不同国家的科研工作者,共同探讨因果科学的最新进展。PCIC 2024还与世界人工智能大会(WAIC)同期举办,共同推动因果推断和人工智能领域的学术研究和技术发展。因果推断成为学术研究的热点,许多学者加入了因果推断的研究,来自不同领域的年轻学者在这一领域活跃。因果推断的教育和普及工作也得到了加强,包括专著出版、学术会议和教育课程的开设。
因果推断的研究领域涉及多个学科,包括统计学、经济学、社会学、政治科学、教育学、流行病学、计算机科学、哲学等。在因果发现领域,提出了新的算法来从数据中提取因果关系,这些算法在推荐系统、特征分析等方面具有重要应用。综上所述,因果推断的研究方法在国内和国际上都取得了显著进展,不仅在理论和方法论上有所创新,而且在实际应用中也展现出广泛的适用性和有效性。随着技术的不断发展,因果推断将继续在多个领域发挥重要作用。
慢性肾脏病(Chronic Kidney Disease, CKD)是一个全球性的健康问题,其发病率和患病率在全球范围内呈上升趋势。全球CKD的中位患病率为9.5%,不同地区患病率差异显著,东欧和中欧患病率最高。162个国家提供慢性血液透析,130个国家提供慢性腹膜透析,116个国家提供肾脏移植。74%的国家能够为超过50%的肾衰竭患者提供肾脏替代治疗(KRT),但有19%的国家的儿童无法获得血液透析。53%的国家提供保守性肾脏管理(CKM)。全球肾脏专家的中位数为每百万人口11.8名,低收入与高收入国家之间存在高达80倍的差异。国际肾脏病学会(ISN)全球肾脏健康地图集(ISN-GKHA)的更新强调了提高肾脏护理的可获得性、质量和可负担性的紧迫性,尤其是在低收入国家。我国CKD患病率约为8.2%,相比10年前下降了约30%,表明我国CKD干预初见成效。我国约有8200万CKD成年患者。患者的知晓率较低,仅为10%。我国CKD患者的治疗率和控制率均不足50%,同时合并更高的高血压、脂代谢紊乱、高尿酸血症患病率。我国发布了《中国糖尿病合并慢性肾脏病临床管理共识》,建议所有2型糖尿病和病程≥5年的1型糖尿病患者,应至少每年评估1次尿白蛋白/肌酐比值(UACR)和估算肾小球滤过率(eGFR)。2023年,中国发布了《中国慢性肾脏病早期评价与管理指南》,为CKD早期评价与管理提供了规范的实践遵循。
CKD的全球负担依然沉重,不同地区之间存在显著差异。我国在CKD的防治方面取得了一定的进展,但仍需进一步提高公众对CKD的认识,加强早期筛查和干预,优化治疗方案。
2. 相关工作
潜在结果框架由Donald Rubin提出,所以也被称为Rubin Causal Model (简称RCM),研究“因”的改变能带来多少“果”的变化,即通过学习因果效应(causal effect)来确定某个具体的干预(Treatment)对应的结果(Outcome)的变化,估计不同干预下的潜在结果(包括反事实结果),以估计实际的干预效果。
因果效应评估(Causal Effect Estimatation)是研究“因”的改变能带来多少“果”的变化,即通过计算因果效应(causal effect)来确定某个具体的干预(Treatment)对应的结果(Outcome)的变化,估计不同干预下的潜在结果(包括反事实结果),以估计实际的干预效果。在了解因果效应计算之前,我们对因果推断的常见术语——个体、干预和潜在结果进行定义,见式(1)、(2)。
(1)
(2)
其中,i表示个体,
表示对个体施加的干预,
表示个体i上观察到的潜在结果。
因果效应的计算可以基于四种维度:总体(population)、实验组(treated group)、满足某条件(ubgroup),个体(individual levels),基于这四维度,因果效应指标定义如下。平均因果效应(Average Treatment Effect, ATE),它等于潜在结果差值的期望
条件平均因果效应(Conditional Average Treatment Effect, CATE),它等于潜在结果差值的条件期望
为筛选个体的特征值,也被称为协变量。CATE也称局部因果效应,关注在某个特征的人群。平均处理效应(Average Treatment effect on the Treated group, ATT),即实验组的因果效应,计算被干预人群的平均因果效应,它等于
。个体因果效应(Individual Treatment Effect, ITE),它等于
(个体可以理解为局部的极限)。
3. 数据处理
3.1. 数据归一化
本文选取的数据集来自kaggle网站[7]选取了1659名慢性肾炎患者,年龄区间为20岁到90岁的男性和女性。其中分为四个种族高加索人(0),非裔美国人(1),亚洲人(2)和其他(3)。
在机器学习中,数据预处理是确保模型训练有效性和性能的关键步骤之一。其中,归一化处理是一种常见且重要的技术,特别是当输入数据的特征具有不同的取值范围或量级差异时。这种差异可能会导致某些特征对模型的影响过大,而其他特征则可能被忽略或不充分地学习。
举例来说,假设一个数据集中包含两个特征:一个特征的取值范围在之间,而另一个特征的取值范围在之间。在没有归一化处理的情况下,后者的特征值范围远大于前者,这可能会使得模型过度依赖于具有更大数值范围的特征,而忽略了其他特征的贡献。因此,归一化处理的主要目的是通过缩放数据的值,使得所有特征都落在一个统一的数值区间内,通常是或者。这种处理有助于消除不同特征之间的量级差异,使得模型能够更平衡地对待各个特征,从而提高模型的训练效果和泛化能力。
归一化处理的方法有多种,其中最常见的包括最小–最大归一化和标准化。最小–最大归一化通过线性变换将特征缩放到一个固定的最小值和最大值之间,例如将特征缩放到区间内。而标准化则通过减去均值并除以标准差的方式,使得特征的均值为0,方差为1。这些方法选择取决于数据的分布和模型的要求。
总结而言,归一化处理在机器学习中扮演着至关重要的角色,它不仅能够改善模型训练的稳定性和收敛速度,还能有效地避免由于数据特征间量级差异导致的模型偏差问题。因此,在进行任何机器学习任务之前,正确地理解和应用归一化处理技术是非常必要的。解决类别不平衡的问题,其中一类的样本数量远远少于另一类。
对于个别缺失值的处理,本文采用了替换法,用平均数来填充缺失值。
3.2. 计算数据相关性
为数据集中类别数量少于5的分类变量创建条形图,以便于观察每个变量的分布情况。
图1由五个柱状图组成,分别是Gender (性别),Ethricity (种族),Socioeconomic Status (社会经济地位),Educational Level (教育水平),Smoking (吸烟)。总体来看,这些图表展示了不同人口统计特征的分布情况。每个图表都显示了不同特征在两个或多个类别中的人数分布,这有助于理解样本的构成和特征。
Figure 1. Distribution of different demographic characteristics
图1. 不同人口统计特征的分布情况
图2包含五个柱状图,每个图展示了与健康相关的家族病史或个人健康史的分布情况。分别为Family History of Kidney Disease (家族肾脏病史),Family History of Hypertension (家族高血压病史),Family History of Diabetes (家族糖尿病病史),Previous Kidney Injury (既往肾脏损伤),Urinary Tract Infections (尿路感染)。类别A表示有病史,类别B表示无病史。总体来看,这些图表显示了在所调查的群体中,有较高比例的人存在家族病史或既往健康问题,特别是在肾脏疾病和既往肾脏损伤方面,大约有90%左右的人存在问题。
Figure 2. Distribution of health-related family or personal health history
图2. 与健康相关的家族病史或个人健康史的分布情况
图3包含五个柱状图,每个图展示了不同类别的医疗状况或药物使用的分布情况。总体来看,这些图表显示了在所调查的群体中,有较高比例的人正在使用某些药物或有特定的医疗状况。特别是Antidiabetic Medications (抗糖尿病药物)和Edema (水肿)的患病率非常高,约为78%。这些数据可能用于评估特定药物的使用情况或某些健康问题的普遍性,对于公共卫生策略和医疗资源分配具有重要意义。
Figure 3. Distribution of different categories of medical conditions or drug use
图3. 不同类别的医疗状况或药物使用的分布情况
图4包含四个柱状图,每个图展示了不同环境或健康因素的分布情况。总体来看,这些图表显示了在所调查的群体中,有极高比例的人经历了不良的环境或健康因素,如约有人95.5%的患者有Heavy Metal Exposure (重金属暴露)的经历。这些数据可能用于评估环境因素对公共健康的影响,以及为公共卫生干预措施提供依据。
Figure 4. Distribution of different environmental or health factors
图4. 不同环境或健康因素的分布情况
4. 模型的建立与分析
4.1. XGBoost
XGBoost (Extreme Gradient Boosting) [8]是一个优化的分布式梯度增强库,它在梯度提升(Gradient Boosting)框架下实现机器学习算法。XGBoost提供并行树提升(也称为GBDT,GBM),可以快速准确地解决许多数据科学问题。它在相同的代码下可以在主要的分布式环境(如Hadoop、SGE、MPI)上运行,并且可以处理数十亿个样本之外的问题。XGBoost的核心是对梯度提升算法的改进,它在求解损失函数极值时使用了牛顿法,将损失函数泰勒展开到二阶,并在损失函数中加入了正则化项。训练时的目标函数由梯度提升算法损失和正则化项组成。XGBoost的正则化项定义了模型的复杂程度,包括了决策树叶子节点的权重向量的L2范数和叶子节点的数量。XGBoost的工程实现包括列块并行学习、缓存访问优化和“核外”块计算等,这些设计使得XGBoost在处理大规模数据时具有高效性。它还支持自定义优化目标和评估标准,增加了模型的灵活性。
XGBoost (Extreme Gradient Boosting)是一种高效的机器学习[9]算法,它实现了梯度提升框架下的优化版本。XGBoost在国内外的研究现状表明,它已经成为数据科学和机器学习领域的一个重要工具。在Kaggle等数据科学竞赛中,XGBoost被广泛使用,并且在工业界也有大规模的应用。
4.2. 倾向得分匹配
倾向得分匹配[10]-[13]模型是由Rosenbaum和Rubin在1983年提出的,首次运用在生物医药领域,后来被广泛运用在药物治疗、计量研究、政策实施评价等领域。倾向得分匹配模型主要用来解决非处理因素(干扰因素)的偏差。本文的目标是使用倾向得分匹配[14] [15] (propensity score matching)来估计影响慢性肾病的各种指标对肾病发生的因果影响。具体来说,通过图5步骤来完成这一目标:
Figure 5. Flowchart
图5. 流程图
4.3. XGBoost-CI模型的建立与算法
本文使用的是XGBoost模型和因果推断相结合的模型,简称XGBoost-CI (Extreme Gradient Boosting-Casual Inference)。核心在于使用倾向得分匹配来减少处理组和对照组之间的选择偏差,使得两组在匹配后在特征上更加相似,从而使得因果推断更加准确。然后,使用XGBoost模型在这个匹配后的数据集上进行训练和预测,以评估模型的性能。这种方法结合了因果推断的严谨性和XGBoost的强大预测能力。
为防止模型过拟合,采用Adam优化器“早停法”(Early Stopping)进行训练。早停法(Early Stopping)是一种在机器学习训练过程中用来防止过拟合的技术。这种方法特别适用于那些使用迭代算法进行优化的模型,比如梯度提升机(Gradient Boosting Machines)、神经网络等。早停法的基本思想是在训练过程中,我们同时监控一个或多个验证集(validation set)的性能。这些验证集不参与训练过程,用来评估模型在看不见的数据上的表现。如果在连续多个迭代(或称为epochs)中,模型在验证集上的性能没有显著提升,或者开始下降,那么我们就可以停止训练过程。这样做的目的是避免模型在训练集上过度拟合,即学习到训练数据中的噪声和细节,而忽略了数据的一般规律。
首先,数据加载和预处理:使用‘pandas’库读取CSV文件到‘DataFrame’,通过‘head()’方法查看前几行数据以了解数据集的基本情况。删除‘PatientID’和‘DoctorInCharge’这两列,因为它们对模型训练没有帮助,且可能包含敏感信息。再次使用‘head()’查看处理后的数据。使用‘skew()’方法检查数据的偏度,以判断数据是否需要进一步的清洗或转换。结果如表1所示:
Table 1. Factors and their degree of offset
表1. 因素及其偏移程度
影响因素 |
偏移程度 |
Age |
0.003152 |
Gender |
−0.061568 |
Ethnicity |
1.184191 |
Socioeconomic Status |
0.038585 |
Education Level |
−0.220439 |
BMI |
−0.041887 |
Smoking |
0.910715 |
Alcohol Consumption |
−0.010258 |
Physical Activity |
0.006964 |
Diet Quality |
0.023528 |
Sleep Quality |
0.052256 |
Family History Kidney Disease |
2.064379 |
Family History Hypertension |
0.866466 |
Family History Diabetes |
1.110886 |
Previous Acute Kidney Injury |
2.570968 |
Fatigue Levels |
−0.017468 |
Nausea Vomiting |
−0.043126 |
Muscle Cramps |
−0.028920 |
Quality Of Life Score |
0.050531 |
Heavy Metals Exposure |
4.450603 |
Occupational Exposure Chemicals |
2.613239 |
Water Quality |
1.524169 |
Medical Checkups Frequency |
−0.009291 |
Medication Adherence |
0.013389 |
Health Literacy |
−0.035045 |
Diagnosis |
−3.065038 |
如果data.skew()的结果接近于0,那么数据分布是对称的。结果大于0,那么数据分布是右偏斜(或正偏斜),意味着数据的尾部在右侧,右侧比左侧长。结果小于0,那么数据分布是左偏斜(或负偏斜),意味着数据的尾部在左侧,左侧比右侧长。
第二步是数据探索:导入‘matplotlib’和‘seaborn’库,用于数据可视化[16]。绘制相关性热图,展示特征之间的相关性。为了更加的了解所选数据,结果如图6所示:
Figure 6. Correlation matrix
图6. 相关性矩阵
第三步是数据划分和标准化:使用‘train_test_split’将数据集划分为训练集和测试集。使用‘Standard Scaler’对训练集和测试集进行标准化处理,以确保特征在同一尺度上。
第四步是逻辑回归模型训练:使用‘Logistic Regression’训练一个逻辑回归模型。计算测试集上的倾向得分(即预测为正类的概率)。
第五步是倾向性得分匹配:使用‘Nearest Neighbors’进行1:1倾向性得分匹配,以平衡处理组和控制组之间的特征分布。获取匹配的控制组和处理组的索引,并确保数量相同。创建匹配后的数据集。
第六步匹配数据的进一步处理:对匹配后的数据集进行再次划分。对匹配后的数据集进行标准化处理。
最后是XGBoost模型训练和评估:创建‘XGBClassifier’实例,并设置评估指标和早停参数。使用匹配前的全部训练数据拟合XGBoost模型。在测试集上进行预测。使用‘classification_report’打印分类报告,评估模型性能,如表2所示:
Table 2. Model performance evaluation records
表2. 模型性能评估记录
(a) |
validation_0-logloss |
0.25191 |
validation_0-logloss |
0.23815 |
validation_0-logloss |
0.22863 |
validation_0-logloss |
0.21585 |
validation_0-logloss |
0.20908 |
validation_0-logloss |
0.20519 |
validation_0-logloss |
0.20091 |
validation_0-logloss |
0.19843 |
validation_0-logloss |
0.19893 |
validation_0-logloss |
0.19645 |
validation_0-logloss |
0.19376 |
validation_0-logloss |
0.19116 |
(b) |
validation_0-logloss |
0.19265 |
validation_0-logloss |
0.18884 |
validation_0-logloss |
0.19025 |
validation_0-logloss |
0.19296 |
validation_0-logloss |
0.19230 |
validation_0-logloss |
0.19092 |
validation_0-logloss |
0.19076 |
validation_0-logloss |
0.19115 |
validation_0-logloss |
0.19282 |
validation_0-logloss |
0.19202 |
对数损失越低,表示模型的预测结果与实际标签的一致性越高,即模型的性能越好[17]。从表2数据可以看出,模型的对数损失在逐渐减小,这表明模型在训练过程中性能在逐步提升。
4.4. 结果分析
本文为了评估模型在验证集上的性能,包括损失值、准确率和分类报告(包括精确度、召回率和F1分数等指标)绘制了损失和准确率函数图像。
准确率(Accuracy)的定义,即预测正确的结果占总样本的百分比,具体为以下公式(3)所示:
(3)
精确率(Precision)是针对预测结果而言的,其含义是在被所有预测为正的样实际为正样本的概率,具体为以下公式(4)所示:
(4)
召回率(Recall)是针对原样本而言的,其含义是在实际为正的样本中被预测为正样本的概率,具体为以下公式(5)所示:
(5)
F1分数(F1-Score)。F1分数同时考虑精确率和召回率,让两者同时达到最高,取得平衡。F1分数表达式为公式(6):
(6)
本实验首先对XGBoost-CI模型进行了性能评估,结果如下表3所示:
Table 3. XGBoost-CI model evaluation
表3. XGBoost-CI模型评估
(a) |
Index |
precision |
recall |
F1-score |
support |
0 |
0.86 |
0.25 |
0.39 |
24 |
1 |
0.94 |
1.00 |
0.97 |
308 |
(b) |
accuracy |
* |
* |
0.94 |
332 |
Macroavg |
0.90 |
0.62 |
0.68 |
332 |
weightedavg |
0.94 |
0.94 |
0.93 |
332 |
注:*表示无值。
由表3可以得出整体准确度为0.94,其中宏平均精确度为0.90,宏平均召回率为0.62,宏平均F1分数为0.68。加权平均精确度为0.94,加权平均召回率为0.94,加权平均F1分数为0.93。模型对类别1的预测性能非常好,精确度和召回率都很高。另外,我们对XGBoost-CI进行了统计显著性t检验,得出P值为0.003。说明本文采用的模型通过了显著性检验,接受原假设。
接下来进行对比试验[18],选取三个模型为随机森林模型(Random Forest),Logistic Regression和LightGBM并对其进行性能评估,结果如表4和表5所示:
Table 4. The comparison of the performance of each model on the dataset
表4. 各模型在数据集上的性能比较
Model |
F1-score |
Accuary |
Macroavg |
weightedavg |
XGBoost-CI |
0.94 |
0.68 |
0.93 |
Random Forest |
0.93 |
0.52 |
0.90 |
Logistic Regression |
0.93 |
0.68 |
0.93 |
LightGBM |
0.92 |
0.51 |
0.89 |
Table 5. The comparison of recall rates of various models on the dataset
表5. 各模型在数据集上的召回率比较
Model |
recall |
XGBoost-CI |
0.62 |
Random Forest |
0.52 |
Logistic Regression |
0.61 |
Light GBM |
0.50 |
由上表可以看出,对各个模型的进行比较,可以看出本文选取的XGBoost-CI模型性能相比较其他模型性能准确度更好,性能表现更优秀。
5. 讨论
本文提出的XGBoost-CI模型将XGBoost与因果推断相结合应用到慢性肾脏病的研究当中,通过对不同患病人群在不同情况下进行比对分析,将本文模型和随机森林模型,Logistic Regression模型和LightGBM模型进行性能对比得出本文使用的XGBoost-CI模型性能在各方面表现较好,获得了较高的准确率。
但XGBoost-CI模型仍然存在一些不足之处,比如过拟合风险,在复杂任务或数据量较小的情况下,如果不合理设置正则化参数,可能存在过拟合风险。因此,在未来的工作中,将探索更高效的解决方案,减少模型的过拟合等问题。
基金项目
国家自然科学基金地区科学基金项目(No. 12162020),兰州交通大学校青年基金资助项目(No. 2020022)。
NOTES
*通讯作者。