肾脏功能数据分析报告
肾脏功能数据分析报告
1. 实验背景与目标
1.1 实验背景
慢性肾脏病(Chronic Kidney Disease, CKD)是一种严重威胁人类健康的慢性疾病,其早期症状隐匿,一旦进展至晚期,治疗成本高昂且预后较差。肾小球滤过率(GFR)是评估肾功能的核心指标,而肌酐(Creatinine)、血尿素氮(BUN)等临床指标与肾脏功能密切相关。借助数据分析与机器学习技术,基于临床指标实现CKD的早期筛查和GFR值的精准预测,对提升肾脏疾病诊疗效率、降低疾病负担具有重要的临床意义。本实验基于包含5000例样本的肾脏疾病数据集,开展全面的数据分析与建模工作。
1.2 实验目标
本实验的核心目标分为两大方向:一是构建分类模型,基于临床指标精准预测患者的CKD患病状态(二分类任务);二是构建回归模型,基于相关临床特征预测患者的GFR值(连续值预测任务)。同时,通过探索性数据分析挖掘各临床指标与肾脏功能的内在关联,提炼影响CKD发病和GFR水平的关键因素,为临床诊疗提供数据支撑。具体目标包括:
- 完成数据集的探索性分析,明确数据分布特征、变量间相关性及分组差异;
- 构建逻辑回归和K近邻(KNN)分类模型,实现CKD状态的精准预测并对比模型性能;
- 构建线性回归和岭回归模型,实现GFR值的精准预测并评估模型效果;
- 分析模型特征重要性,提炼影响肾脏功能的关键临床指标;
- 验证特征工程的有效性,为临床指标的优化选择提供依据。
2. 数据集描述
2.1 数据来源
本实验使用的数据集为肾脏疾病相关临床数据集(kidney_dataset.csv),包含5000例患者的临床检测数据,数据涵盖了肾脏功能评估的核心指标及患者基础信息,可用于肾脏功能相关的数据分析与建模任务。2.2 数据规格
数据集规模为5000行×11列,其中每一行代表1例患者样本,每一列代表1个临床指标或目标变量。经缺失值检测,数据集中无缺失值,数据完整性良好,无需进行缺失值填充或样本删除处理。2.3 特征说明
数据集中的11个变量可分为数值型特征、类别型特征和目标变量三类,具体说明如下:
- 数值型特征(7个):Creatinine(肌酐)、BUN(血尿素氮)、GFR(肾小球滤过率)、Urine_Output(尿量)、Age(年龄)、Protein_in_Urine(尿蛋白)、Water_Intake(饮水量),均为连续型临床检测指标;
- 类别型特征(3个):Diabetes(糖尿病史,0=无,1=有)、Hypertension(高血压史,0=无,1=有)、Medication(用药情况,含ACE Inhibitor、ARB、Diuretic、None四类);
- 目标变量(1个):CKD_Status(CKD患病状态,0=正常,1=患病),用于分类任务;GFR同时作为回归任务的目标变量。
3. 数据预处理与标准化
3.1 分类变量数值编码
对于类别型特征,已完成数值编码或结构化处理:Diabetes和Hypertension为二元类别变量,直接采用0/1编码;Medication为多类别变量,以字符串形式存储,在后续分析中通过字符串匹配实现类别计数与分布统计。3.2 目标变量构造(分类/回归)
基于数据集中的现有变量,构造两类任务的目标变量:一是分类任务目标变量CKD_Status(直接使用数据集中的现有变量),用于判断患者是否患有CKD;二是回归任务目标变量GFR(直接使用数据集中的现有变量),用于评估患者的肾功能水平。3.3 数据清洗与无效样本过滤
经缺失值检测,数据集中总缺失值为0,不存在缺失数据问题。同时,对数值型特征的取值范围进行验证,未发现明显超出临床合理范围的异常值,因此无需进行无效样本过滤,直接使用原始数据进行后续分析。
3.4 特征标准化与量纲消除
为消除不同特征间的量纲差异对模型训练的影响,对分类任务和回归任务的特征数据进行标准化处理。标准化方法采用Z-score标准化,即对每个特征,计算其均值和标准差,然后通过公式(特征值-均值)/标准差将特征转换为均值为0、标准差为1的标准正态分布数据。例如,分类任务中使用的Creatinine、BUN等特征,回归任务中使用的Age、Urine_Output等特征均进行了标准化处理。
4. 数据探索性分析
4.1 目标变量分布特征
分类任务目标变量CKD_Status的分布情况为:正常样本(0)3685例,占比73.7%;患病样本(1)1315例,占比26.3%。数据存在一定的类别不平衡,但差距未过度悬殊,无需进行类别平衡处理。回归任务目标变量GFR的统计特征为:最小值5.0000 mL/min/1.73m²,最大值105.4514 mL/min/1.73m²,平均值73.2519 mL/min/1.73m²,中位数89.5559 mL/min/1.73m²,标准差31.9724 mL/min/1.73m²,整体呈现右偏分布,符合临床中大多数人群肾功能正常或轻度下降的实际情况。
4.2 特征间相关性分析
通过计算数值型特征间的相关系数矩阵,分析各特征的内在关联(具体相关性热图见输出文件夹)。核心相关性结论为:Creatinine与GFR呈显著负相关,BUN与Creatinine呈正相关,Urine_Output与GFR呈正相关等,这些相关性符合临床认知,例如肌酐升高通常伴随肾小球滤过率下降,反映肾功能受损。
4.3 关键特征分组差异分析(CKD vs 非CKD)
以CKD_Status为分组依据,对比分析关键数值型特征在正常组与患病组的分布差异(具体见CKD与非CKD组特征比较图)。核心差异为:患病组的Creatinine、BUN、Protein_in_Urine均值显著高于正常组,而GFR、Urine_Output均值显著低于正常组;Age在患病组的均值略高于正常组,符合肾脏功能随年龄增长自然衰退及老年人群CKD发病率更高的临床规律。
4.4 数据分布合理性验证
对各数值型特征的分布合理性进行验证:Creatinine的平均值1.9941,中位数1.0076,标准差2.0270,呈现右偏分布,符合临床中少数患者肌酐显著升高的情况;BUN的平均值30.7801,中位数15.8786,标准差31.1483,同样呈右偏分布;Age的平均值50.0487,中位数49.9428,标准差14.4920,呈现近似正态分布,样本年龄分布覆盖18-90岁,具有较好的代表性;Water_Intake的平均值2.5043,中位数2.5117,标准差0.8689,分布相对均匀,符合正常人群的饮水量范围。各特征的分布均符合临床实际情况,数据合理性良好。
5. 分类模型:逻辑回归
5.1 二分类任务定义
任务目标为基于临床特征预测患者的CKD患病状态,输入特征为Creatinine、BUN、GFR、Age、Protein_in_Urine、BCR(衍生特征),输出为二分类结果(0=正常,1=患病)。该任务旨在实现CKD的早期筛查,为临床诊疗提供辅助判断依据。
5.2 算法原理与实现逻辑
逻辑回归算法通过Sigmoid函数将线性回归的输出映射到[0,1]区间,实现二分类预测。核心原理为:首先构建特征的线性组合z=θ₀+θ₁x₁+θ₂x₂+…+θₙxₙ,然后通过Sigmoid函数h(z)=1/(1+e⁻ᵢ)将z转换为预测概率,概率大于等于0.5时预测为正类(CKD患病),否则为负类(正常)。损失函数采用交叉熵损失,通过梯度下降算法最小化损失函数,求解最优模型参数θ。
5.3 超参数设置(学习率/迭代次数/正则化)
模型超参数设置如下:学习率为0.01,迭代次数为1000次,未添加正则化项。学习率的选择综合考虑了收敛速度与稳定性,0.01的学习率可保证模型在1000次迭代内稳定收敛;通过迭代过程中的损失变化监测,确定1000次迭代可使损失函数趋于平稳,无需进一步增加迭代次数。
5.4 梯度下降优化实现
梯度下降优化的核心步骤为:①初始化模型参数θ为全零向量;②每次迭代计算线性组合z和Sigmoid输出h;③计算交叉熵损失并记录损失历史;④计算损失函数对各参数的梯度;⑤通过梯度下降公式θ=θ-学习率×梯度更新参数;⑥重复步骤②-⑤直至达到预设迭代次数。迭代过程中,损失函数逐步下降,具体损失变化为:迭代100次损失0.3439,迭代500次损失0.1184,迭代1000次损失0.0725,表明模型逐渐收敛至最优状态。
6. 分类模型:K近邻(KNN)
6.1 二分类任务适配
与逻辑回归任务一致,KNN模型的输入特征、输出目标均相同,即基于Creatinine、BUN等6个特征预测CKD_Status。KNN模型通过计算测试样本与训练样本的距离,选取距离最近的k个训练样本,采用多数投票机制确定测试样本的类别,无需模型训练过程,属于惰性学习算法。
6.2 算法原理与实现逻辑
核心原理为“近朱者赤,近墨者黑”,即认为相似的样本具有相同的类别标签。实现逻辑为:①计算测试样本与所有训练样本的欧氏距离;②对距离进行排序,选取距离最小的k个训练样本(近邻);③统计k个近邻的类别标签,将出现次数最多的类别作为测试样本的预测类别。欧氏距离的计算公式为d=√[(x₁-y₁)²+(x₂-y₂)²+…+(xₙ-yₙ)²],可有效衡量样本间的相似度。
6.3 超参数设置(K值选择)
KNN模型的核心超参数为近邻数k,本实验设置k=5。k值的选择综合考虑了模型偏差与方差的平衡:k值过小易受异常值影响,模型方差较大;k值过大易导致模型欠拟合,偏差较大。5作为经典的默认k值,可在大多数场景下实现较好的分类效果。
6.4 距离计算与投票机制实现
距离计算采用欧氏距离,针对标准化后的特征数据进行计算,避免量纲差异对距离结果的影响。投票机制实现逻辑为:①对每个测试样本,计算其与所有训练样本的欧氏距离;②对距离排序后,提取前5个近邻的类别标签;③统计5个标签中0和1的出现次数,次数多的类别即为预测类别;若出现次数相同,默认预测为0(正常)。
7. 回归模型:线性回归与岭回归
7.1 回归任务设置(GFR值预测)
任务目标为基于临床指标预测患者的GFR值,输入特征为Creatinine、BUN、Age、Protein_in_Urine、Urine_Output、Water_Intake,输出为连续型的GFR值。GFR是评估肾功能的核心指标,精准预测GFR值可辅助医生快速判断患者的肾功能水平,为治疗方案制定提供参考。
7.2 线性回归算法原理与梯度下降实现
线性回归算法通过构建特征与目标变量的线性关系模型y=θ₀+θ₁x₁+θ₂x₂+…+θₙxₙ,实现连续值预测。损失函数采用均方误差(MSE),即L=1/(2n)×Σ(yᵢ-ŷᵢ)²,其中ŷᵢ为预测值,yᵢ为真实值。模型训练采用梯度下降算法优化参数,核心步骤为:①初始化参数θ为全零向量;②计算预测值ŷ和均方误差损失;③计算损失函数对各参数的梯度;④通过梯度下降公式更新参数;⑤重复迭代直至损失收敛。
7.3 岭回归算法原理与正则化实现
岭回归是带L2正则化的线性回归,通过在损失函数中添加正则化项,缓解模型过拟合问题。其损失函数为L=1/(2n)×Σ(yᵢ-ŷᵢ)²+λ/(2)×Σθⱼ²,其中λ为正则化参数,用于控制正则化强度。实现逻辑为:采用正规方程求解最优参数,通过引入单位矩阵I(偏置项对应的对角元素设为0,不对偏置项正则化),计算参数θ=(XᵀX+λI)⁻¹Xᵀy。当XᵀX不可逆时,通过Cholesky分解或伪逆求解,保证参数的稳定性。
7.4 超参数选择(学习率/迭代次数/正则化参数λ)
线性回归超参数:学习率0.01,迭代次数2000次。通过损失监测,模型在1400次迭代后损失趋于平稳,2000次迭代可确保模型完全收敛。岭回归超参数:正则化参数λ=0.1,该参数通过经验选择,可有效平衡模型拟合效果与过拟合风险,避免模型对训练数据的过度依赖。
7.5 模型参数求解过程
线性回归参数求解:通过梯度下降迭代2000次,损失函数从初始值逐步下降至0.0084并稳定,最终得到各特征的系数的数值。岭回归参数求解:通过正规方程计算,引入λ=0.1的正则化项后,参数值相较于线性回归略有调整,但整体变化不大,表明原始数据不存在严重的过拟合问题。
8. 模型训练与评估
8.1 数据划分策略(训练/测试集)
采用随机划分策略将数据集分为训练集和测试集,划分比例为7:3。即分类任务中,训练集样本数为3500例(70%),测试集样本数为1500例(30%);回归任务中,训练集样本数为3500例,测试集样本数为1500例。通过设置随机种子(rng(42))保证数据划分结果的可重复性,避免因随机划分导致的模型性能波动。
8.2 分类模型训练与测试结果
两类分类模型的测试集性能指标如下:
逻辑回归:准确率0.9833,精确率0.9433,召回率1.0000,F1分数0.9708;
KNN(k=5):准确率0.9913,精确率0.9741,召回率0.9952,F1分数0.9845。
KNN模型的各项性能指标均优于逻辑回归,表明在当前数据集上,基于距离的KNN模型更适合CKD状态的预测任务。
8.3 回归模型训练与测试结果
两类回归模型的测试集性能指标对比如下:
| 评估指标 | 线性回归 | 岭回归 |
|---|---|---|
| 均方误差(MSE) | 19.0575 | 19.0991 |
| 均方根误差(RMSE) | 4.3655 | 4.3703 |
| 平均绝对误差(MAE) | 3.2713 | 3.2682 |
| 决定系数(R²) | 0.9814 | 0.9814 |
两类模型的性能几乎一致,R²均达到0.9814,表明模型对GFR值的预测精度极高。线性回归的MSE和RMSE略低于岭回归,因此线性回归为回归任务的最优模型。
8.4 混淆矩阵分析(分类任务)
逻辑回归模型的混淆矩阵如下:
| 预测患病 | 预测正常 | |
|---|---|---|
| 实际患病 | 416 | 0 |
| 实际正常 | 25 | 1059 |
分析可知:逻辑回归模型对患病样本的召回率为100%,可完全识别出所有CKD患者,无漏诊情况;但存在25例正常样本被误判为患病的情况(假阳性),精确率为94.33%。该结果符合临床筛查的需求,优先保证患病样本的识别率,可避免漏诊带来的风险。KNN模型的混淆矩阵未直接输出,但结合其更高的精确率和召回率可知,其假阳性和假阴性数量均少于逻辑回归,分类效果更优。
8.5 回归误差分析(残差/指标评估)
回归模型的误差分析基于残差和各项误差指标:线性回归的RMSE为4.3655,表明预测值与真实GFR值的平均偏差仅为4.37 mL/min/1.73m²,误差较小;MAE为3.2713,进一步验证了模型的预测精度。残差分析结果显示,残差均值接近0,标准差较小,且残差在预测值范围内均匀分布,无明显的系统性偏差,表明模型的线性假设合理,无遗漏的重要特征或异常值影响。
8.6 ROC曲线与AUC分析(分类任务)
基于逻辑回归模型的预测概率,绘制ROC曲线并计算AUC值(具体见输出文件夹)。ROC曲线以假阳性率(FPR)为横轴,真阳性率(TPR)为纵轴,AUC值为ROC曲线下的面积,用于综合评估模型的分类性能。逻辑回归模型的AUC值较高,表明模型具有良好的区分能力,可有效区分正常样本与CKD患病样本。
9. 特征重要性分析
9.1 分类模型特征权重分析
分类模型的特征重要性基于特征与目标变量的相关系数绝对值判断(具体见特征重要性图)。核心结论为:Creatinine(肌酐)和GFR(肾小球滤过率)与CKD_Status的相关性最强,是影响CKD诊断的最关键特征;其次是BUN(血尿素氮)和BCR(BUN/Creatinine比率),BCR作为衍生特征,其相关性表明其对CKD诊断具有一定的辅助价值;Age(年龄)和Protein_in_Urine(尿蛋白)的相关性相对较弱,但仍对分类结果有一定影响。
9.2 回归模型特征系数重要性
回归模型的特征重要性基于特征系数的绝对值大小判断,线性回归模型的各特征系数如下:
Creatinine:-0.6570(负相关,绝对值最大);
BUN:-0.2602(负相关);
Protein_in_Urine:-0.0882(负相关);
Age:-0.0801(负相关);
Urine_Output:0.0527(正相关);
Water_Intake:-0.0001(几乎无影响)。
结论:Creatinine是影响GFR预测的最关键特征,其系数为负,符合临床认知(肌酐升高,GFR下降);BUN次之,同样呈负相关;Water_Intake对GFR的影响极小,可忽略不计。
9.3 特征重要性一致性验证
对比分类模型与回归模型的特征重要性,发现存在明显的一致性:Creatinine和BUN在两类模型中均为重要特征,且均与肾脏功能指标(CKD_Status、GFR)呈负相关。这一一致性验证了特征重要性分析结果的可靠性,也符合临床理论中肌酐、血尿素氮是评估肾脏功能核心指标的认知。此外,GFR在分类模型中为重要特征,而在回归模型中为目标变量,进一步印证了其与CKD状态的紧密关联。
9.4 关键影响因素提炼(CKD与GFR相关)
综合两类模型的特征重要性分析,提炼出影响肾脏功能的关键因素:
核心因素:Creatinine(肌酐),是影响CKD诊断和GFR水平的最关键指标;
重要因素:BUN(血尿素氮)、GFR(肾小球滤过率),对CKD诊断和肾功能评估具有重要意义;
辅助因素:Age(年龄)、Protein_in_Urine(尿蛋白)、Urine_Output(尿量),对肾脏功能有一定影响,但作用相对较弱;
衍生有效因素:BCR(BUN/Creatinine比率),作为衍生特征,对CKD诊断具有辅助价值,可作为临床评估的补充指标。
10. 结果分析
10.1 模型性能综合对比
两类任务的最佳模型及核心性能指标如下:
分类任务(预测CKD状态):最佳模型为KNN(k=5),F1分数0.9845,准确率0.9913,各项指标均优于逻辑回归,具有极高的分类精度;
回归任务(预测GFR):最佳模型为线性回归,R²=0.9814,RMSE=4.3655,预测精度极高,与岭回归性能基本一致。
综合来看,所选模型均能很好地完成对应的任务,分类模型可实现CKD的精准筛查,回归模型可实现GFR的精准预测,为临床诊疗提供有效的数据支撑。
10.2 分类误差模式与原因分析
分类模型的误差主要表现为逻辑回归模型的假阳性误差(25例正常样本被误判为患病),KNN模型的误差则更小(具体误差数量未明确)。误差产生的可能原因:
①数据存在少量边界样本,其临床指标介于正常与患病之间,导致模型判断困难;
②类别不平衡(正常样本占比73.7%)可能对模型的决策边界产生轻微影响,使模型更倾向于预测为多数类,但逻辑回归的高召回率表明这种影响较小;
③特征维度有限,未包含部分可能影响CKD诊断的临床指标(如性别、饮食习惯等)。
10.3 回归误差模式与原因分析
回归模型的误差较小(RMSE≈4.37),误差模式主要表现为个别样本的预测值与真实值存在偏差。误差产生的可能原因:
①GFR的真实值受多种因素影响,模型仅考虑了6个特征,存在特征遗漏(如患者的基础疾病严重程度、治疗方案等);
②部分样本可能存在未被检测到的异常值,影响了模型的预测精度;
③线性模型的假设可能无法完全拟合特征与GFR之间的复杂非线性关系,但高R²值表明这种非线性关系较弱。