张明伟,张天逸,钟鸣,程云章
1.上海理工大学健康科学与工程学院,上海 200093;2.上海介入医疗器械工程技术研究中心,上海 200093;3.复旦大学附属中山医院,上海 200032
大量心血管疾病研究数据表明,高血压、高血糖等多种代谢异常是心血管疾病的危险因素[1-2]。它们通过破坏血管内皮细胞的结构和功能显著加速动脉硬化进程。高血糖可促进晚期糖基化终产物的产生,通过炎症因子破坏血管壁,引起大小动脉结构和功能的广泛病理改变,导致动脉僵硬度增加、顺应性降低、动脉弹性减弱。通过临床测量和数学模型计算发现,随着血管外周阻力、血管壁硬化程度等生理因素的变化,脉搏信号的特征会发生一系列有规律的变化。随着心脏的间歇性收缩和舒张,血压的波动、血流速度和血流,以及血管壁的变形和振动在血管系统中的传播波形,统称为脉搏信号[3]。脉搏信号的传播特征与心血管系统力学参数的变化密切相关。在外周阻力低、血管壁弹性较好的健康人群中,脉搏信号的升、降支较陡,形成高而尖的主波。由于反射波速度低,冲击主动脉瓣的血液回流波动强度大,重搏波的波峰和波谷明显。随着外周阻力增加,血管壁弹性变差,由于反射波速度逐渐增大,重搏波逐渐变得不明显,重搏波波谷继续上升。图1反映糖尿病患者与正常人脉搏信号波形的差异。
图1 正常人与糖尿病患者脉搏信号波形特征比较Figure 1 Comparison of waveform features of the pulse signals of normal control and diabetic patients
随着我国2 型糖尿病发病率逐年升高[4],预计其导致的血管并发症也将随之增多[5]。多项研究发现血糖调节障碍患者的脉搏波形会产生变化,且随着糖尿病病程的增加,脉搏波形特征的变化会更加明显[6-7]。多项研究表明脉搏波速度(Pulse Wave Velocity,PWV)对2 型糖尿病血管并发症具有较好的预测价值[8-10]。王维敏等[9]发现2 型糖尿病患者的踝臂脉搏波速度(BaPWV)与糖尿病病程呈正相关(P<0.05),发现病程超过10年的患者BaPWV 明显高于首发患者、病程<5年患者、5~10岁患者(P<0.05)。有研究表明2 型糖尿病患者的手臂和脚踝的PWV 明显高于正常人[10],2 型糖尿病患者BaPWV 与糖尿病微血管病变可用于评估糖尿病并发症的危险因素[11]。Yokoyama 等[12]发现早期糖尿病肾病患者手臂和脚踝脉搏波速度增加,提示动脉硬化的发病机制可能与糖尿病肾病有关。同时相关研究显示2 型糖尿病患者合并微量白蛋白尿者和大量白蛋白尿者BaPWV 显著升高(P<0.01),其中大量白蛋白尿者BaPWV又显著高于微量白蛋白尿者(P<0.01)[13]。有研究发现一些糖尿病肾病患者的蛋白尿正常,但肾小球滤过率下降[14],同时研究发现BaPWV 为肾小球滤过率值快速下降的独立危险因素;基线BaPWV 值越高,肾小球滤过率下降越快[15]。董晓云等[16]发现2型糖尿病患者组BaPWV 及趾肱指数(TBI)异常,说明患者存在不同程度的动脉弹性下降及末梢动脉血液循环障碍,因此动脉弹性检测可作为早期预测糖尿病血管并发症的方法,利于早期干预治疗。然而,单个脉搏信号特征有时不能有效反映受检者的生理状态,如脉搏信号分析中经常使用的K值。在一些研究中发现,不同的脉搏信号具有相同的K 值,而重搏波谷点和重搏波点等特征不同意味着受试者的生理状态是不一样的[17]。近年来,研究人员利用信号处理技术提取功率谱峰值[18]、脉搏波传导时间[19]、近似熵等作为脉搏信号的特征,进行了血管健康状态的识别,取得了良好的识别效果[20]。同时增加信号的特征信息,也会成倍增加分析的难度和复杂度,如主成分分析法利用降维思想将较多的评价指标转化为较少的综合指标,在解决许多实际问题中取得了较好的效果。传统的信号分析在提取特征的过程中过于主观,无法提取所有有效特征,而且这个过程不能体现智能医学检测的优势,自动化程度低。因此,本文对单周期脉搏波信号进行9层的小波分解,将小波分解后的cD8、cD7 和cD6 系数直接作为反映糖尿病患者动脉损伤的特征,将特征矩阵输入到10 折交叉验证的Stacking 集成学习模型中,从而实现对没有临床表现但有动脉损伤的早期糖尿病患者的检测。
本研究使用来自桂林市人民医院的PPG 信号数据集[21],PPG 信号是通过LED 光源和探测器测量人体血管和组织反射和吸收的衰减光,反映血管的搏动状态,最终得到脉搏信号。该PPG 信号数据库包括高血压、糖尿病、脑血管病患者,年龄21~86 岁,中位年龄58 岁,男性占48%。采集过程中使用型号为SEP9AF-2(韩国SMPLUS)的PPG 传感器,双LED[波长为660 nm(红光)和905 nm(红外光)],采样率为1 kHz,12位ADC,采集信号通过0.5~12 Hz带通滤波器。使用数据集中包含37名正常人和29名2型糖尿病患者的PPG 信号,每个人包含3段处于稳定状态下的2.1 s的PPG信号。
(1)确定PPG 段内所有的主波的有效波峰,采用双阈值法,高阈值为信号段中的最大值,低阈值为最大值*0.8。(2)检测信号段内所有的峰值点,形成集合S1。为了消除重搏波、潮波和运动噪声引起的峰值点,只提取集合S1中落在高低阈值区间内的点,形成集合S2。(3)因为2.1 s的PPG信号主波的正确峰值数最多为3 个,所有处理后的信号段最多只有3 个完整的PPG 信号周期。如果集合S2 中的点数超过3 个,则依次比较两个峰值之间的时间间隔,如果T<0.5 s(所有信号的心跳周期在0.6~1.0 s),则取较小的峰值。(4)选取PPG 信号的主波峰值点作为基点,利用滑动窗口分别向后采集150 个点、向前采集460 个点,取610 个点(约0.61 s)作为信号样本。该样本可以很好地描述主波、潮波和重搏波的特征。为增加样本数量,同时以主波峰值点左右两侧间隔5、10、15、20 ms 的点作为基点,然后以相同的窗口值收集信号样本。最后平均每个个体采集27 个样本,然后对信号进行z-score 归一化处理,处理后的信号均值为0,标准差为1,归一化公式如式(1)所示:
其中,是原始数据的平均值,σ是原始数据的标准差,提取的单周期有效信号如图2所示。
图2 提取的有效信号Figure 2 Extracted effective signals
小波变换是时间频率的局部变换,信号的多尺度细节分析可以通过缩放和平移实现[22-23]。任何函数都可以在任何尺度上分解为细节部分和近似部分,小波分解相当于信号通过双通道滤波器,滤波器分别具有高通和低通特性,滤波后的输出对应离散信号的低频和高频细节。对不同尺度进行双通道滤波,就可以实现原始离散信号的多分辨率分解。Daubechies 小波是常用的小波函数之一,db 后面的数字代表消失矩,一般来说消失矩数越大,小波越平滑,频域的定位能力越强,分频效果越好,但也会削弱时域的紧凑性,大大增加计算时间。使用具有仅支持正交性、双正交性和绝对规律性的db6小波对脉搏波信号进行9 层小波分解,得到cA9、cD9、cD8、cD7、cD6、cD5、cD4、cD3、cD2、cD1 共10个小波系数,分解过程如图3 所示,通过小波分解后的系数对脉搏波信号进行重构,发现cD5、cD4、cD3、cD2、cD1 代表脉搏波信号中的高频噪声,而cA9 和cD9 为低频信号,代表脉搏信号的一般特征,因此使用cD8、cD7、cD6 中高频信号系数作为反映糖尿病患者动脉损伤的特征。重建的信号如图4所示。
图3 9层小波的分解过程Figure 3 Process of 9-level wavelet decomposition
图4 不同小波系数重构信号Figure 4 Reconstructed signals with different wavelet coefficients
对于正负样本量的不平衡分布,采用SMOTETomek 过采样算法,利用K-最近邻算法原理。具体来说,对少数样本使用K-最近邻法(预先确定K 的值)寻找距离最近的K 个样本,其中距离定义为样本间N 维特征空间的欧氏距离。然后随机选择K 个最近邻中的一个,使用公式(2)生成一个新的样本:
Stacking 集成学习是一种基于统计学习理论的多模型集成机器学习算法。通常情况下,对于单一的预测模型,其预测精度呈边际效用递减趋势。Stacking 集成学习算法是一种模型集成技术,将来自多个预测模型的信息结合起来生成新模型。不同的机器学习算法以级联的方式组合,以获得比单一算法更好的性能。本研究使用4 种机器学习算法:Random Forest(RF)、XGBoost、SVM 和Extra Tree(ET)作为Stacking 集成学习的第一层基学习器。其中,SVM 在更高维空间中构造一组超平面,创建类与类之间数据点的最大距离,实现的边缘距离越大,泛化误差越低[24]。RF通过在训练时构建多个决策树并根据单个树的平均预测输出分类进行操作[25]。XGBoost是一种可扩展的端到端的树提升系统,是为了使用较少的资源解决现实较大规模的问题[26]。与RF 相比,ET 进一步增加了随机性,不仅特征是从特征子集中随机选择的,阈值也是随机选择的,这通常允许更大程度地减少模型的方差。RF和XGBoost分别使用Bagging 和Boosting 的集成学习方法,都具有出色的学习能力。同时,RF 具有可视化内部树结构的优势,使得机器学习在临床使用中具有可解释性机制。本研究中使用RF训练数据并获得了可视化的内部树结构,具体结构如图5所示。使用鲁棒性和泛化能力强的KNN 作为第二层元学习器,构建了一个使用Stacking 集成学习算法的糖尿病检测模型。Stacking 集成学习算法如图6 所示,在Stacking 集成学习算法下,整个模型的构建分为两个阶段:第一层基学习器的预测结果通过级联的方式传递到第一层元学习器中,再经过元学习器的训练,再次提高检测精度[27]。
图5 由本次训练数据集得到的RF的可视化内部树结构Figure 5 Visualized internal tree structure of the Random Forest obtained from this data training
图6 Stacking集成学习算法的具体架构Figure 6 Specific architecture of Stacking ensemble learning algorithm
使用的Stacking集成学习算法流程图如图7所示,具体步骤如下:(1)将原始数据集按一定比例划分为训练集和测试集。(2)将训练集分成M份,对每个基本学习器进行M折交叉验证,每次交叉验证时用M-1份作为模型的训练集,剩下的作为验证集。每次交叉验证完成后,使用训练好的基学习器模型对验证集和测试集进行预测。(3)单个基本学习器完成M 次交叉验证后,得到每个验证集的预测值,同时得到对测试集的M组预测值,然后将每个验证集的预测值整合为一个矩阵,记为A1,将测试集的M组预测值按行平均得到B1。(4)第一层基本学习器完成训练后,将得到训练集输出特征矩阵(A1,A2,…,An)作为第二层元学习器的训练集。(5)第二层元学习器训练完成后,将第一层得到的测试集输出特征矩阵(B1,B2,…,Bn)作为测试集,输出最终的预测结果。
图7 Stacking集成学习算法Figure 7 Stacking ensemble learning algorithm
通过有效信号提取算法,提取了3259个有效信号(定长脉搏信号段),其中正常脉搏信号1767个,糖尿病患者脉搏信号1492个。但是正负样本数量不平衡,使用SMOTE-Tomek过采样算法,使总样本数达到3 334个,其中正常脉搏信号样本数1667个,糖尿病患者脉搏信号样本数1667个,经过9级小波分解在脉搏信号中提取cD8、CD7、cD6系数(中高频成分,代表信号细节特征)作为反映动脉损伤程度的特征,系数数量总和为48个。因此,得到总信号特征矩阵为[3334,48],分为训练集特征矩阵[2660,48]和测试集特征矩阵[674,48]。将所有的特征矩阵输入到基于10折交叉验证模型的Stacking集成学习算法中。通过第一层4个基学习器(SVM、RF、XGBoost、ET)的并行训练,得到特征矩阵[2 660,4]作为第二层元学习器的训练集,特征矩阵[674,4]作为第二层元学习器的测试集。元学习器在测试集上的预测结果如表1和图8所示。这里使用的评价指标:准确率(Accuracy)、精确率(Precison)、召回率(Recall)、F1 分数(F1-Score)、ROC 曲线下面积(Area Under the Curve,AUC)。
图8 单一模型与集成模型的ROC对比Figure 8 Comparison of ROC between a single models and ensemble model
从表1 可以看出,单一的机器学习算法可以达到90%以上的检测准确率,因此可以证明9 级小波变换(中高频)得到的cD8、cD7、cD6 系数成分(代表信号细节的特征)可以有效反映糖尿病对动脉的损伤程度。在检测精度方面,Stacking 集成学习算法比单一机器学习算法提高4%~5%,AUC 提高1%~6%,证明通过集成多种算法优势,生成的新模型可以获得比单一模型更优越的性能。
表1 单一模型与集成模型对糖尿病诊断性能比较Table 1 Comparison of diagnostic performance of single models and ensemble model for diabetes
本研究中提出了一种检测糖尿病的新方法。脉搏波信号经9 级小波分解,小波分解后的系数cD8、cD7、cD6 作为反映糖尿病患者动脉损伤的特征。Stacking集成学习算法从大量数据集中学习2型糖尿病患者与正常人在动脉特征上的差异,从而实现对没有临床表现但动脉弹性异常的早期糖尿病患者的检测。本研究结果的高检测精度证明该方法用于糖尿病患者早期检测的可行性。希望脉搏信号特征能够成为临床早期发现糖尿病的便捷、无创的检查方法,从而给予患者早期干预。本次采用的Stacking 集成学习算法,有效结合不同学习器的学习能力,获得最佳检测效果。Stacking 集成学习算法可以提高建模的准确性,但由于集成模型具有集成多种算法进行建模的特点,整体建模效果会受到单个不良算法的影响,同时,如果第一层有多个相似的算法会导致过拟合。所以分别使用基于Bagging、Boosting 的RF和XGBoost 算法,使用鲁棒性和泛化能力强的KNN作为第二层元学习器,最终构建了级联多种机器学习算法的糖尿病检测模型。
这项研究有几个局限性。由于本工作是一项探索性研究,其结果还需要大量临床数据进一步证实。因此,在未来的研究中,需要增加受试者的数量,以获得更多的实验数据,并充分对脉搏信号进行更多的数据挖掘,提取出更能反映糖尿病患者动脉状态的脉搏波信号特征,进一步建立糖尿病患者动脉状态评价理论。