2023年华为杯数学建模竞赛题E论文和代码

出血性脑卒中临床智能诊疗建模

出血性脑卒中是一种常见但危险的脑血管疾病,其治疗和管理需要及时而准确的诊断以及有效的预测模型。本研究旨在通过分析入院患者的临床数据和影像学特征,建立数学模型,评估患者的血肿扩张风险、血肿周围水肿进展以及长期预后。

针对问题一,是关于血肿扩张的计算以及概率预测问题。第一个小问要求计算患者是否发生血肿扩张以及扩张时间。根据所给数据,首先计算出患者的发病时间,再在发病时间48小时后的时间里根据血肿体积的相对体积变化或者绝对体积变化,确定患者是否在发病48小时内发生了血肿扩张。用血肿扩张最后的影像时间减去发病时间得到血肿扩张的时间。第二个小问要求根据所给的数据预测所有的160名患者血肿扩张的概率。由于样本过于不平衡,我们首先对样本使用SMOTE进行过采样。我们使用了五个可用于本题的模型分别是XGBoost 、MLP 、LightGBM、SVC、LR, 使用了准确率、召回率、精确度、F1以及AUC指标对模型进行了评估,并绘制出了ROC曲线,结果显示XGBoost模型效果最好。最后我们使用XGBoost模型对全部血肿扩张概率进行了预测。

针对问题二,首先根据流水号将每位病人每次每次检查的水肿体积数据提取出,并且计算出对应的时间横轴,然后使用分段形式的多段式拟合方法来拟合,根据不同阶数和不同分段点数来拟合出较为合理的模型,然后得出残差。先用主成分分析方法对整理完的患者数据进行处理,然后再利用手肘法对其分析聚类个数,得到聚类个数之后使用K- Means算法将所有患者进行分类,得到不同的亚组,再整合完分类之后的病人数据与上小题得到的模型进行拟合预测,从而得到残差。将所有参与多次检查的病人水肿体积变化整理成一个矩阵,判断每位患者水肿体积情况是否恶化,再与每位患者接受的治疗方式进行灰色关联分析,得到治疗方式的对显著性顺序。对于第四小问,采用多元线性回归模型,完成基于治疗方法完成与否的分布统计的数据探索后,建立不同治疗方法对于患者血肿体积与水肿体积影响的关系模型,得出治疗方法中的脑室引流和降颅压治疗对平均血肿体积具有显著的正相关关系,而降颅压治疗对平均水肿体积也有显著的正相关关系的结论。

针对问题三,我们利用方差筛选法和互信息法结合、距离相关系数法和递归特征消除法结合,然后利用这两种方法对所有患者的个人史、疾病史、发病相关及影像结果进行特征筛选,然后将得到的主要特征分别带入随机森林算法、支持向量机算法、XGBoost 算法、LightGBM算法中,并且我们使用网格搜索以及随机搜索来对其进行超参数调优,结合交叉验证训练从而得到十六个不同的模型,再根据指标挑选出拟合度高的模型,然后通过集成学习投票的方式对mRS评分等级进行预测。为解决第三小问,将任务划分为三个子问题:个人史、疾病史和治疗方法对于预后的关联性分析、不同位置的血肿与水肿体积对于预后的关联性分析和信号强度特征与形状特征对于预后的关联性分析。针

对各子问题的变量特征,分别采用 Fisher 精确检验、Levene 检验、有序 Logistics 回归模型和单因素方差分析来探究患者的预后(90天mRS) 和个人史、疾病史、治疗方法及影像特征的关联关系。最后根据建立的模型得到了各变量间的关联关系,并参考相关临床诊疗方案和案例,对出血性脑卒中患者预后提出了有关疾病史重要性和影像特征价值等针对性建议。

本文的研究不仅可以为医疗决策提供新的见解,还可以为临床实践和未来的出血性脑卒中研究提供宝贵的数据和方法学范例。同时也让将有助于改善出血性脑卒中患者的治疗和管理方案,提高他们的康复前景和生活质量。

关键词: XGBoost, 随机森林, 分段多项式拟合, 主成分分析, K- Means聚类, 灰色关联,多元线性回归,递归特征消除法,支持向量机,网格搜索,Fisher精确检验, Levene 检验, 单因素方差分析

一、问题重述

1.1 问题背景

脑卒中,又叫做脑中风,是一种常见的脑血管疾病,通常是因为脑部血液供应中断或者血管破裂造成的,我国是脑卒中高发国家之一。脑卒中中的出血性脑卒中占据了病例的10%-15%,其致死率和致残率非常高。出血性脑卒中通常是由脑动脉瘤破裂或脑动脉异常等因素引起,患者通常会有发病急、病情危重、免疫力特别低,以及肢体活动功能上的障碍等症状。不仅对患者的健康造成了巨大的威胁,而且对患者家庭的生活和经济造成了很大的负担。[1]

为了帮助医生更好的制定治疗方案,减轻患者的痛苦,提高患者的生活质量,精准预测出出血性脑卒中患者的病情发展至关重要。得益于医学影像技术和人工智能的快速发展,为实现预测出血性脑中卒病情预测提供了新的可能。[2]

本文的研究目的是基于提供的真实临床数据,探索出出血性脑中卒患者的血肿扩展风险,水肿发生和进展规律以及治疗干预水肿进展的关联因素,出血性脑卒中患者的预后预测以及关键因素。

本文将利用了一些人工智能的方法,对真实的临床数据进行了分析预测,旨在帮助医生更精确地评估出出血性脑卒中患者的风险以及预后,继而改善患者的治疗和康复。我们希望本文的工作能够为未来的临床决策提供重要的决策支持,并为出血性脑卒中的研究以及治疗方案提供有用的科学依据。

1.2 问题提出

问题一:血肿扩张风险建模

a) 根据所提供的相关数据,在前100例出血性脑卒中患者(sub001至sub100)中,判断是否发生了血肿扩张,定义标准为后续检查相对体积增加≥33%或绝对体积增加≥6mL,如果发生血肿扩张事件的话,记录下血肿扩张的时间。

b) 基于前100例患者的个人史、疾病史、发病治疗相关信息以及首次影像检查结果,构建模型以预测所有患者是否会发生血肿扩张事件。

问题二:血肿周围水肿发生及进展建模

a) 利用前100例患者的水肿体积和重复检查时间点数据,构建全体患者水肿体积随时间的进展曲线,最后需要计算前100例患者的真实值与拟合曲线之间的残差。

b) 探索不同患者群体(3-5个亚组)的水肿体积随时间的个体差异,构建每个亚组的水肿体积进展曲线,并计算前100例患者的真实值与各曲线之间的残差,同时提供亚组的标识。

c) 从所给定的数据中,分析不同治疗方法对水肿体积进展模式的影响。

d) 建模分析出分析血肿体积、水肿体积和治疗方法之间的关系。

问题三:出血性脑卒中患者预后预测及因素分析

a) 基于前100例患者的个人史、疾病史、发病相关信息以及首次影像结果,建立模型来预测所有患者的90天mRS评分。

b) 利用前100例患者的临床、治疗、首次影像以及随访影像结果,预测所有含有随访数据的患者(sub001至sub100,sub131至sub160)的90天mRS评分。

c) 分析出血性脑卒中患者的预后(90天mRS评分) 与个人史、疾病史、治疗方法和影像特征之间的关联,并提出一些临床决策的建议。

问题一:

问题一主要是根据已知的数据计算是否发生血肿扩展,再根据是否发生血肿扩展的计算结果以及相关影响因素建立数学模型预测数据表中的所有患者发生血肿扩张的概率。由题目可知,血肿扩张是根据血肿体积的变化量决定的。如果后续的血肿体积比首次检查的血肿体积相对体积不小于33%或者体积增加的量不小于6毫升,则认定为发生血肿扩张。血肿扩张判定公式如下:

其中1代表患者发生了血肿扩张,反之,0代表患者没有发生血肿扩张。HM volume.48h 表示发病后48小时内的一次HM  volume值, HM volume,初始表示首次影像检查的HM  volume值。△HMvolume表示发病后48小时内的一次HM  volume值比首次影像检查的HM  volume值的增量。

针对第一个小问,首先需要进行数据表的数据合并,再根据题目所给的血肿扩展的定义计算判断患者是否发生了血肿扩张,由附件表格1中对应的时间计算确定当前的检查是在发病48小时内,最后输出是否发生了血肿扩张以及发生的时间。针对第二个小问。

针对第二个小问,需要根据3个表的相关数据建立一个预测模型,预测出所有患者发生血肿扩张的概率。首先需要进行数据清洗,处理好缺失值和异常值,对分类变量进行独热编码,对连续变量进行归一化处理。在处理好数据之后,我们发现样本非常不平衡,所以用SMOTE 进行过采样在进行模型的训练。预测模型非常多,选择LGBM、XGB、SVC、MLP和LR常见的预测模型进行实验对比,以准确率、召回率、精确度、F1分数、AUC 作为评价指标。选择表现最好的模型进行训练,最后预测出结果。

问题二:

针对第一小问,整合所有患者水肿体积与时间进展的散点图之后,发现数据较为复杂,采用分段多项式拟合的方法,对散点图进行拟合,并且调整不同的分段点数和多项式拟合阶数来测试不同的参数带来的拟合效果,然后挑选出最好的一个来进行预测,并计算出所需的残差值。

针对第二小问,使用主成分分析法来进一步处理数据之后,然后通过手肘法来确定聚类个数,知晓聚类个数之后,使用K- Means算法对所有患者进行聚类分析,然后分成不同的亚组,利用第一小问得到的模型来分别对每个亚组进行预测计算残差值。

针对第三小问,计算出当前检查出的水肿体积与前一次检查水肿体积的差异值,可以得到患者水肿体积变化的情况,然后根据患者水肿体积的变化情况来对其身体状况进行统计,然后根据结果与患者接受的治疗方法进行灰色关联分析得到最后的治疗方式的显著性作用排序。

针对第四小问,需要参照表1和表2的数据建立相关性分析模型,探究不同的治疗方法对于患者脑部血肿体积与水肿体积之间的关系。对此,可以在先对数据分布做出统计后,绘制出相应的图表,得到数据探索的初步方向。再结合多元线性回归模型,更严谨地得到治疗方法对于血肿体积和水肿体积的回归方程以及各治疗方法自变量的显著性结果。

问题三:

针对第一、二小问,可以看出这是一个高维的复杂分类预测问题,使用传统的机器学习算法需要我们进一步对数据优化,首先采用不同的特征筛选方法对数据集进行处理,然后将划分出的主要特征作为变量,采用经典的随机森林算法、支持向量机算法、XGBoost算法、LightGBM 算法来作为主要算法,然后使用随机搜索和网格搜索作为超参数调优的策略,最终训练出主要的几个模型,预测并对分类结果进行投票,从而得到最终的结果。

针对第三小问,需要划分为多个子问题,以便于高效准确地解决。对于各子问题,需要做大量的数据处理,包括变量的提取、二元数据类型的转换以及对血压、年龄等连续变量的分类。之后采用多种检验方法对特征不同的数据进行检验,包括对大量的分布统计数据进行单因素方差分析。最后根据90mRs的有序性建立有序 Logistics回归模型,分析出患者预后与个人史、疾病史、治疗方法和影像特征之间的相关性,参照相关临床的诊疗信息为今后医生在脑卒中临床决策提出针对性建议。

三、模型假设与符号说明

3.1  模型基本假设

(1) 提供的所有数据均为真实有效,符合实际情况。

(2) 所有患者的mRS评分等级只受到出血性脑卒中的影响。

(3) 默认除了提供的数据之外的因素不会影响患者病情。

(4) 在使用有序 Logistics回归模型中,预后是具有从低到高程度的有序性。

(5) 在使用梯度提升树模型(XGBoost和LightGBM)假设特征是独立同分布的,这是它们能够逐步构建树的基础。

3.2 符号说明

表1 符号说明

序号

符号

含义

1

NP

正常血压

2

NH

正常高压

3

H1

轻度高血压

4

H2

中度高血压

5

x

归一化矩阵

6

ACC

准确率

7

R

召回率

8

P

精确率

9

y_i(x)

多项式拟合第i段

10

RSS

最小化残差平方和

11

 Yr

降维数据点

12

DBI

簇间距离之比

13

CH

类内的紧密度

14

15

I(X;Y)

H(X|Y)

互信息

条件熵

四、数据预处理

4.1 数据清洗

数据采集之后,往往会出现各种问题,比如缺失值、异常值等。这时候就需要进行数据清洗,将不符合要求的数据剔除或者进行填充。具体来说,数据清洗包括以下几个方面:

在给定的数据集中,往往会出现很多数据上的问题,比如缺失值、异常值等。所有,我们首先需要做的就是数据清洗,将错误的数据去除或者就行填充。数据清洗包括如下两个方面:

(1) 处理缺失值

使用 python中的 pandas库对所有数据进行分析,并没有发现缺失值,因此不用处理缺失值。

(2) 处理异常值

附件1中患者 sub074的首次影像的流水号为20180719000630,但是在表2中的首次影像流水号则为 20180719000020, 而在表 2 中 sub074的随访1流水号才为20180719000630,所以最正确的做法是将件1中患者sub074的首次影像的流水号改正为20180719000020

4.2 数据转换

(1) 独热编码

独热编码,又被称为一位有效编码,是一种用来对一组N个状态进行编码的方法。它利用N位状态寄存器,每个状态都有自己独立的寄存器位,并且在任何给定时刻,只有一位是有效的,即只有一位的值为1,而其他位都为0。这种编码方法通常用于表示参数,使用0和1来表示不同的状态。在机器学习领域,也引入了" one- hot 向量"的概念,它是一个在任意维度的向量中,只有一个维度的值为1,而其他维度的值都为0。将分类数据转换成 one- hot向量的过程通常被称为 one- hot编码。在统计学中,虚拟变量也代表了类似的概念。

我们可以将性别这一指标进行独热编码。在机器学习中,特征之间的距离或相似度计算对于回归、分类、聚类等算法至关重要。通常,我们使用欧式空间的相似度计算或余弦相似性来衡量特征之间的相似程度。然而,对于离散特征,常规的计算方法存在一些限制,因为它们基于欧式空间的假设。为了解决这个问题,我们可以使用独热编码将离散特征的取值映射到欧式空间中的点。这种编码方式使得离散特征之间的距离计算更加合理,从而有助于更准确地进行分类和其他机器学习任务。160例患者男女比例饼图如下所示: 

然后我们使用手肘法进行聚类个数的确定,可以看出我们分成4类亚组或者5类亚组最为合适,这里我们取较小的4,更能代表分类的一个代表性,然后我们根据我们选取的4来使用K- Means算法对我们的数据进行分类。

表6.6 K- Means 聚类结果频数描述性统计 (2)

聚类类别

频数

百分比%

类别1

25

15.625

类别2

45

28.125

类别3

47

29.375

类别4

43

26.875

合计

160

100.0

聚类分析的结果显示,聚类结果共分为4类,类别1的频数为25,所占百分比为15.625%; 类别2的频数为45, 所占百分比为28.125%; 类别3的频数为47, 所占百分比为29.375%; 类别4的频数为43, 所占百分比为26.875%。

轮廓系数

DBI

CH

0.53

0.582

515.511

 

轮廓系数:对于一个样本集合,它的轮廓系数是所有样本轮廓系数的平均值。轮廓系数的取值范围是[-1,1],同类别样本距离越相近不同类别样本距离越远,分数越高,聚类效果越好。DBI( Davies- bouldin):该指标用来衡量任意两个簇的簇内距离之后与簇间距离之比。该指标越小表示聚类效果越好。CH( Calinski- Harbasz Score): 通过计算类内各点与类中心的距离平方和来度量类内的紧密度(分母),通过计算类间中心点与数据集中心点距离平方和来度量数据集的分离度(分子) ,CH指标由分离度与紧密度的比值得到,CH越大表示聚类效果越好。

八、模型评价与推广

8.1  模型的优点

针对问题一,问题一中我们通过几个模型的对比实验结果选择了使用XGBoost模型,它的准确率最高,表现最好。在血肿扩张概率预测中具有很高的应用价值。XGBoost 的性能也相当高,比传统的梯度提升树算法实现的更快。适用于本题大量不同类别数量的样本,它也可以自动确定最终重要的特征,并且减轻出现过拟合的问题。

针对问题二,第一、二问中,采用分段式多项式拟合可以适应复杂的数据模式,可以更好地捕捉数据集可以清晰地解释每个区间内数据的拟合效果和趋势,更精确地拟合数据。而在第三问中主成分分析可以将高维数据集转化为低维空间,从而减少特征的数量。这有助于简化数据集的复杂性。而K- means算法相对简单,易于理解和实现,计算效率高,通过最小化簇内点之间的平方距离来进行聚类,能够很好地将相似的数据点聚在一起。第四问根据统计得到的条形图进行数据探索,建立多元线性回归模型来探究多种治疗方法对于患者的脑内的血肿和水肿的影响。本题中对血肿的关系模型效果最好,有很好的的解释性。并且多元线性回归模型模型具有良好的可预测性和可视化效果。

针对问题三,第一、二问中,使用了两种方法来对患者的数据信息进行特征筛选,分别是方差筛选法和互信息法结合、距离相关系数法和递归特征消除法结合,方差筛选法简单易实施非常简单、并且计算速度较快,不需要复杂的模型或算法支持;而信息法考虑特征与目标变量之间的非线性关系,不仅仅局限于线性相关性; 距离相关系数法相对简单且考虑了特征与目标变量之间的相关性; 递归特征消除法它通过反复训练模型并剔除最不重要的特征来选择最佳特征子集,考虑特征之间的相互作用自动化特征选择。然后使用了随机森林算法、支持向量机算法、XGBoost算法、LightGBM算法来进行预测,它们都有高准确性、可处理高维度数据、对小样本数据有效、鲁棒性强、可以处理非线性问题的优点。同时使用随机搜索、网格搜索来进行超参数调优,它们的主要优点有:简单易实现、可以保证找到全局最优解(如果存在) 而不会陷入局部最优解、可解释性强。第三问中根据变量特征,分别采用不同的相关性分析模型与方法,包括 Fisher 精确检验、Levene检验、有序 Logistics回归模型和单因素方差分析。Fisher精确检验适用于如本题的小样本数据,不受正态分布和方差齐性的限制。Levene检验作为一种非参数方法,适用范围更广,可以降低对数据正态性的敏感度。有序 Logistics回归模型针对90mRs这种有序分类因变量,可以更有效的建模,能够捕捉自变量对不同分类的影响,也可以更好的解释每个自变量对因变量的影响。对于单因素方差分析而言,能够用于多组数据间均值的比较,减少了多重对比的问题,最重要的是可以方便地检验不同因素对因变量的影响。

8.2  模型的不足

针对问题一,在使用XGBoost模型时,需要调整很多超参数,必须进行仔细的调整。对于特别大规模的数据集来说,XGBoost模型的树结构需要消耗大量内存。

针对问题二,分段式多项式拟合可能会面临过拟合的风险,特别是当拟合函数的阶数很高时,容易出现在训练集上的拟合效果较好,但在未知数据上的预测效果较差的情况。降维过程中,PCA会舍弃一部分维度较小的特征,这可能会导致一定的信息损失。因此,在选择降维的维度时需要权衡维度的减少和信息的保持。使用多元线性回归模型时,若自变量之间出现高度相关性时会不稳定,并且对于异常值较为敏感。而且当引入过多的自变量时可能出现过拟合问题,导致性能下降。

针对问题三,传统机器学习算法计算复杂度高,训练时间较长,超参数调优中,往往资源消耗较大,由于搜索需要遍历参数空间中的所有可能组合或者没有相应的先验条件,当参数数量或参数取值范围较大时,搜索过程可能需要很长时间和大量计算资源,搜索效率低。Fisher精确检验的计算复杂度高,难以运用到大样本数据中。Levene 检验对于极端值很敏感,且不适用于顺序数据。有序 Logistics回归必须针对有序变量,当自变量较多时,由于本身多次回归的特点,模型复杂度会提升,更难解释结果。单因素方差分析对于非正态数据和数据的方差齐性要求较高,有时需要数据转换或使用非参数方法。

8.3  模型的推广

针对问题一,XGBoost模型是一个强大的机器学习模型,它可以使用分布式计算训练大规模数据集。为疾病预测提供更加准确的预测结果。

针对问题二,前两小问中,传统方法(如线性回归、逻辑回归) 通常采用单一的全局模型来对整个数据集进行建模和预测。这意味着传统方法无法很好地处理数据集中的非线性关系或复杂的模式。当数据集的关系不是简单的线性关系时,传统方法的预测性能可能不佳。相比之下,分段式多项式(如分段线性回归、分段多项式回归) 将数据集划分为多个子集,并在每个子集上建立一个局部模型。每个局部模型可以更好地适应数据集的特定区域,因此能够捕捉到非线性关系或复杂模式。分段式多项式的预测能力通常比传统方法更强,特别是在数据集存在非线性关系或复杂模式的情况下。第四小问中的多元线性回归模型,治疗方法之间可能存在相互作用,即它们的组合对体积的影响不同于单独使用时的效应。可以添加治疗方法之间的交互作用项,以更好地捕捉这种复杂性。

针对问题三,前两小问中,使用了集成学习的方法通过结合多个分类器的预测结果,能够减少模型的偏差和方差,从而提高预测性能。第三问中使用的有序 Logistics回归模型中,可以考虑血肿和水肿体积的线性和交互作用效应,将其作为自变量引入模型。并且如果血肿和水肿体积对90mRs的影响不是线性的,可以添加非线性项,例如多项式项或光滑曲线,以增强模型的性能。

代码 

 warnings. filterwarnings(" ignore")

# 读取数据

 dfl= pd. read _ excel(' data\\表 1-患者列表及临床信息. xlsx')

df2= pd. read _ excel(' data\\表2-患者影像信息血肿及水肿的体积及位置. xlsx')

df4= pd. read _ excel(' data\附表1-检索表格-流水号 vs时间. xlsx')

# 将附表的检查编号和检查时间转换成 DataFrame

ls1,ls2,ls3,ls4,ls5,ls6=[],[],[],[],[],[]

 for value in df4. values:

ID, freq= value[0], value[1]

 for fi n range( freq):

 lsl. append(ID)

ls2. append( freq)

1s3. append( value[f*2+2])

1s4. append( value[f*2+3])

ls5. append(f'第{f}次检查')

ls6. append( value[3])

df4= pd. DataFrame({'ID':ls1,' first _ code': 1s6,'重复次数': 1s2,' code': ls4,' time': ls3,'

检查次数:1s5})

df4[' code']=df4[' code']. astype('int64')

# 将附件1转换为易读的DataFrame

ls1,ls2,ls3=[],[],[]

 for value in df2. values:

ID, code = value[0], value[1]

 freq=df4[df4. first _ code == value[1]]['重复次数']. values[0]

 for f in range( min( freq,9)):

 lsl. append(ID)

ls2. append( code)

ls3. append(f'第{f}次检查')

 tem= pd. DataFrame({'ID': ls1,' first _ code': ls2,'检查次数': ls3})

 time _ code=[]

 for value in df2. values:

 freq=df4[df4. first _ code == value[1]]['重复次数']. values[0]

 for fi n range( min( freq, 9)):

 time _ code. append( value[23*f+1])

 tem[' code']= time _ code

 columns=df2. columns

 for delta in range(22):

 ls=[]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宁安我

谢谢鼓励,您为支持开源做出贡献

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值