林伟铭 林俊强
1(厦门理工学院光电与通信工程学院 福建 厦门 361024) 2(福建省通信网络与信息处理重点实验室 福建 厦门 361024) 3(福州大学物理与信息工程学院 福建 福州 350116)
阿尔茨海默病(Alzheimer’s Disease,AD)是一种退行性的痴呆疾病,患者通常会随着病情恶化逐渐出现失忆、认知力降低、语言障碍和方向混乱等症状,最后死亡[1]。痴呆疾病易发病于老年人群,据统计65岁以上人群患有痴呆的比例为9%,而85岁以上人群患病比例更是达到了34%[2]。随着人口的老龄化,将有越来越多的人患上阿尔茨海默病。该病目前没有有效的治疗方法或药物,只有尽早发现该病,医生才能及时制定护理方案,延缓疾病的恶化。因此设计高精度的阿尔茨海默病计算机辅助诊断方法是近几年的一个研究热点[3-5]。
目前常用于阿尔茨海默病辅助诊断的医学数据主要有结构性磁共振成像(structural Magnetic Resonance Imaging,sMRI)、氟代脱氧葡萄糖正电子发射计算机断层显像(FDG-PET)、脊髓液(Cerebrospinal Fluid,CSF)中的T-tau、P-tau和Aβ42三种蛋白质含量,以及apolipoproteinE4基因片段信息。阿尔茨海默病通常伴随着脑神经的萎缩和脑室扩大,通过脑部sMRI图像可以检测出这些萎缩模式,从而诊断阿尔茨海默病[6]。患者通常也会出现脑部葡萄糖代谢异常的情况,如果通过FDG-PET图像检测并量化脑部组织的代谢,可以从这些异常代谢模式中发现阿尔茨海默病[7]。阿尔茨海默病的发病还伴随着T-tau、P-tau和Aβ42蛋白质的沉淀,患者的脊髓液中这三种蛋白质的含量要比正常人高出许多,因此这三种蛋白质含量也被当成阿尔茨海默病的生物标记物来使用[8]。除此之外,研究发现在基因序列中存在apolipoproteinE4基因片段的人群,其阿尔茨海默病的发病率要远高于没有此基因片段的人群,因此该基因片段也被认为是阿尔茨海默病患病风险的标志之一[9]。
上述多种模态数据反映了阿尔茨海默病的不同生物特征,单纯使用某一种模态数据进行计算机辅助诊断的准确率通常不高,而如果利用不同模态数据之间的互补信息,将多个模态数据融合起来进行疾病的诊断,可以大幅提高诊断的准确率[5]。最简单的融合方法就是将多个模态的特征直接拼接在一起进行诊断,然而该方法显然不是最有效的融合方式。深度神经网络[10-11]和非线性图融合[5]等方式被用于多模态数据融合,诊断准确率都超过直接拼接的方法,但是依然没有超过92%[5,10]。有效融合多模态数据从而提高诊断准确率依然是有待研究的问题,因此本文基于sMRI、FDG-PET、CSF和基因片段四种模态的数据,提出一种主成分分析(Principal Component Analysis,PCA)结合极限学习机(Extreme Learning Machine,ELM)分类器的多模态数据融合诊断方法,该方法在ADNI(Alzheimer’s Disease Neuroimaging Initiative)数据库的数据集上进行十折交叉验证。其准确率大幅超过基于单一模态数据的诊断方式,与其他文献方法比较也取得了更好的诊断性能。
本文提出的多模态医学数据融合诊断方法思路如图1所示,该方法采用了四种模态数据作为输入,其中sMRI的数据包含了全脑的解剖特征数据,脑部萎缩不仅与疾病有关,也与年龄有关。所以首先对sMRI的特征进行年龄校正。由于并非所有脑部解剖学特征都与阿尔茨海默病有关,无关特征会对诊断精度产生影响。所以sMRI特征数据还使用Lasso(least absolute shrinkage and selection operator)算法进行特征选择,剔除无关的特征。随后四种数据合并在一起进行主成分分析,保留前面能量较大的主成分作为融合结果和新的特征数据。随后将新的特征数据输入极限学习机进行分类诊断。接下来将对该方法使用的主要算法进行介绍。
图1 本文方法的研究思路
虽然sMRI图像中的解剖学特征包含了脑萎缩信息,可用于阿尔茨海默病诊断。但正常人随着年龄的增加也会出现脑萎缩,这种正常老龄化的脑萎缩会对阿尔茨海默病的诊断造成干扰。为了抵消正常萎缩的影响,需要估计正常萎缩与年龄之间的关系,然后根据年龄将这部分萎缩情况去除[12]。本文采用所有正常人的特征,将特征的数值与其对应的年龄进行最小二乘线性拟合,从而估计该特征在正常人群中随年龄增加出现的线性变化。其原理为:假设待处理的特征为第m个特征,来自N位正常人的该特征向量为ym=[y1m,y2m,…,ynm,…,yNm]T,对应的年龄向量为x=[x1,x2,…,xn,…,xN]T,使用最小二乘线性拟合到直线ym=amx+bm,其中am和bm分别为拟合直线的斜率与截距,因此斜率系数am就是估计得到的第m个特征随年龄变换的趋势。
具体的实现过程为:首先设置年龄矩阵X、特征矩阵Y和系数矩阵β:
(1)
(2)
(3)
式中:N和M分别为正常人个数和特征个数。随后拟合线性回归模型Y=Xβ+ε。其中ε是拟合误差,拟合的目标为∑ε2最小,根据最小二乘线性拟合的原理,系数矩阵β的解为:
β=(XTX)-1XTY
(4)
从矩阵β中就可以得知所有特征与年龄之间的正常变化关系。最后将测试对象的所有特征中的年龄因素去除,计算新的特征数值:
(5)
并不是所有的sMRI解剖学特征都与阿尔茨海默病有关。将这些无关的特征用于诊断阿尔茨海默病会降低准确率。因此,本文采用Lasso算法用于特征选择。Lasso算法也称为最小绝对收缩选择算子,它是一种稀疏回归模型[13],可以同时进行正则化的回归分析和特征选择。其原理可以解释为:假设有N个样本,这些样本的标签组成的N×1标签向量使用L表示。每个样本有M个特征,所有样本组成的N×M特征矩阵使用X表示。现在有M个系数组成的M×1向量α,使得每个样本的特征与α的相乘之和可以估计样本标签,即可以表示为:
Xα=L+ε
(6)
式中:ε表示估计误差。寻找最优的系数向量α使得估计误差∑ε2最小,可以用式(7)的优化目标模型表示:
(7)
当该模型找到最优解时,α里的系数代表了M个特征对估计标签的贡献,系数越大表示对应的特征对于估计标签有更大的作用。Lasso算法在此优化目标模型的基础上,对α增加L1范数的惩罚项,如下:
(8)
式中:λ是惩罚系数,该惩罚项是为了使α里的非零值尽量少,从而令α最优解的内部只有稀疏的值不为零。这些不为零系数对应的特征对样本标签的估计有不可替代的作用,保留这些特征,剔除其他无用特征,可以达到特征选择的目的。
主成分分析算法是一种无监督学习的特征降维方法,该算法使用正交变换将原始样本特征转移到新的坐标空间中,并且使得新的坐标空间中,特征数据的每个维度都是不相关的,最后保留差异性最大的几个主要维度成分。该算法如图2所示,为了方便在平面图中显示,假设每个样本的特征数量只有2个,即在特征空间有2个特征维度x1和x2,图2中的每个圆点表示1个样本。可以发现x1值较大的样本,其x2值也会较大,说明这2个特征存在相关性。将该坐标空间正交变换到新的坐标φ1和φ2,在新特征空间中的2个特征φ1和φ2几乎是不相关的。如果将差异度较大的φ1特征作为主成分保留,差异度小的φ2作为噪声抛弃,此时原来需要2个特征x1和x2表示的样本,就可以只使用1个特征φ1近似地表示。该方法有效地利用特征间的相关性进行特征的融合,还能降低无用成分的干扰,将其应用于多模态的数据融合上,能够提高阿尔茨海默病的诊断性能。
图2 主成分分析算法示意图
主成分分析算法的计算过程可以描述为:假设有N个样本,每个样本有M个特征,对样本数据进行均值去除后,样本矩阵可以表示为:
(9)
该矩阵的每行表示一个样本。对该矩阵进行奇异值分解(Singular Value Decomposition,SVD),可以得到:
X=WΣVT
(10)
式中:N×N矩阵W是协方差矩阵XXT的特征向量矩阵;Σ是N×M的非负矩形对角矩阵;V是XTX的特征向量矩阵,大小为M×M。新的样本数据可以通过式(11)进行正交变换到新的坐标空间得到。
Y=WX
(11)
式中:Y的第一列是第一主成分,第二列是第二主成分,依此类推。因此可以根据需求保留前面几列的主要成分作为数据降维和特征融合的结果。
极限学习机是一种一步到位的机器学习算法,其训练速度和分类精确度都要好于支持向量机(SVM)[14]。极限学习机有两种版本,第一种是只有一个隐藏层的神经网络,该网络的输入系数随机生成,随后通过优化算法直接计算输出系数的值,因此不需要迭代训练,速度较快。但是随机生成输入系数的方法使其性能并非最佳。第二种是引入了核函数,利用核函数来代替输入系数和输出系数的计算,避免了随机生成系数的过程,在分类上具有更好的性能。本文采用高斯核的极限学习机作为分类诊断器,其原理可描述为:假设有N个训练样本[x1,x2,…,xN],xn表示第n个训练样本的特征向量,而x表示待测样本的特征向量。Y是训练样本的N×2标签矩阵,该矩阵有两列代表两类标签。每行代表每个样本的标签,并且只有样本标签对应位置的元素置1,其余元素置-1。极限学习机的输出可以表示为:
(12)
式中:I是N×N的单位矩阵,C是归一化系数,通常被置为1。K(x,xn)是高斯核函数。高斯核函数可以表示为:
(13)
式中:γ是高斯核函数的参数,其取值与样本特征数量有关。
Ω是N×N的高斯核矩阵,矩阵中的每个元素都是训练样本的之间的高斯核计算结果,可以表示为:
(14)
式(12)的计算结果是包含两个元素的向量[s0,s1],其中s0和s1之中最大值的下标即待测样本x的分类标签。
本文在Windows 10系统中的Python环境下进行算法验证。计算机平台为:CPU为Intel I7 8700k,内存为16 GB。Python的版本是3.6.4,本文使用的Lasso和主成分分析算法采用Scikit-learn包库里的Lasso和PCA模块函数,Scikit-learn版本为0.21.2。其他算法使用numpy包提供的矩阵计算工具进行设计。
本文实验数据来自ADNI数据库,该数据库招募了超过1 500位志愿者作为测试对象。然而并不是所有测试对象都进行了四种医学数据的采集,因此排除数据缺失的对象,本文的测试对象包括了200位正常人和102位患者,测试对象的统计信息如表1所示。
表1 测试对象统计信息
采集了这302位测试对象的四种医学数据。其中sMRI图像通过开源软件FreeSurfer进行颅骨剥离、配准和区域分割等处理后,计算得到313个脑部解剖学特征,例如海马体(或其他组织)的体积、面积和厚度。PET图像则提取了五个脑组织(左、右脑角回,左、右颞下回和双侧后扣带回)代谢率的平均值、最大值、最小值和标准差共20个特征。再加上CSF中的3种蛋白质含量以及1个基于序列是否存在的信息,每位测试对象有337个特征。这些特征数据可以在ADNI网站下载获取。
实验过程中首先对sMRI特征进行了年龄矫正和特征选择的预处理。使用200位正常人的数据对313个sMRI特征分别进行正常老龄化引起的变化因素估计,图3演示了正常人随年龄增加海马体的体积和厚度的线性拟合模型结果(黑色直线)。可以发现,正常人随着年龄的增加,海马体体积和厚度都会跟着变小。如果没有将这部分因素去除,则年龄大的正常人也会有较大概率被误诊为患者。
(a) (b)图3 估计年龄变化对特征的影响
随后对313个sMRI特征使用Lasso算法进行特征选择。在本文实验中,式(8)里的惩罚系数设置为0.02。在进行该模型训练中使用的sMRI数据不是来自302位测试对象,而是来自缺乏其他模态数据而被排除在外的样本,因此不存在对实验所用302位对象数据的二次挖掘情况。通过Lasso算法求得稀疏向量α后,通过其中的非零值来选择有效特征。最后有41个特征被保留作为后续诊断阿尔茨海默病的sMRI数据。
实验采用的四种模态数据都是与阿尔茨海默病相关的特征数据,因此必然在特征之间存在着一定的相关性。同时这些数据中也会存在一些与阿尔茨海默病不相关的无用信息。为了更好地融合不同模态的特征,将四种模态数据特征合并后使用主成分分析法进行正交变换,在新的特征空间中保留前10个主要成分,其余成分作为影响诊断的噪声被抛弃。
实验对本文方法在阿尔茨海默病计算机辅助诊断上的性能进行验证。性能指标使用准确率(诊断结果与实际一致的数量/所有样本数量)、敏感度(真实阳性对象中被诊断成阳性的数量/真实阳性对象数量)、特异度(真实阴性对象中被诊断为阴性的数量/真实阴性对象数量)和接收者操作特征曲线下面积(Area Under receiver operating characteristic Curve,AUC)进行评估。为了测试方法的鲁棒性,验证过程采用十折交叉验证。将样本集分割成10份,9份用于训练分类器,剩余1份用于测试验证。反复进行10次直到所有的样本都作为测试样本测试一遍。为了得到可靠的实验结果,所有实验都进行了100次的随机排序十折交叉验证。
实验还对本文方法和直接使用原始多模态数据方法的性能进行了比较。此外本文还测试了单独模态下的诊断性能以及某种算法缺失下的诊断性能,测试结果如表2所示。
表2 阿尔茨海默病诊断实验结果(%)
可以看出在单模态数据中,sMRI数据对阿尔茨海默病的诊断具有最高的准确率。由于基因数据不能直接用于诊断所以将其与CSF数据合并进行诊断,然而诊断性能最差。而PET数据具有与sMRI数据接近的诊断性能。将这四种数据直接拼凑在一起后进行诊断的准确率约为91.6%,而使用本文方法进行多模态数据融合后诊断的准确率提升到了95.1%左右,有3.5百分点的提升。从上述实验结果还可以看出本文方法的AUC相比单模态数据诊断的方法和四种模态数据直接拼合的方法,均有所提高。本文方法的诊断敏感度对比使用单模态数据方法有很大提升,例如比sMRI单模态数据方法的敏感度提高了13.2百分点,而诊断敏感度的提高说明了本文方法具有更低的漏诊率。
当把年龄校正、特征选择和主成分分析算法从本文方法中分别去除后,可以发现诊断性能均有所下降,说明了这三种数据处理方法都对本文的诊断性能提升具有较大贡献。由于sMRI数据在四种模态数据中具有最重要的作用,因此对其进行了年龄校正和特征选择后,对算法的整体性能提升有明显的作用。其中特征选择算法排除了大量不相关的sMRI特征,使得在进行主成分分析的过程中可以更为准确地提取有效主成分。因此当不使用特征选择时,这些不相关特征使得主成分的计算出现较大的偏差,导致诊断性能有较大幅度的下降。
本文还将该方法的诊断性能与文献[3-6,10]进行比较,比较结果如表3所示。
表3 本文算法性能与其他先进算法比较(%)
表3所列出的各种方法中,文献[3]将3D卷积神经网络应用于sMRI数据诊断,受限于单模态数据信息的限制和训练样本数量,其准确率只有约84%。同样文献[6]也使用了卷积神经网络进行sMRI单模态图像的分析以及诊断,通过数据增广的方式将准确率提高到了88%左右。文献[10]采用sMRI和PET模态数据并使用深度神经网络进行特征学习与诊断,其准确率达到91.4%左右。文献[4]利用多模态数据的相关特征表达进行诊断,准确率达到了92%左右。文献[5]采用非线性图融合的方式合并sMRI、PET、CSF和基因数据四种模态数据,其准确率达到了91.8%。而本文方法同样采用四种模态数据,在阿尔茨海默病的诊断上取得95.1%左右的准确率,比上述几种方法具有更好的诊断性能。此外,表3还比较了使用支持向量机作为分类器的性能,可以发现,使用极限学习机作为分类器,其诊断准确率要高于线性支持向量机(SVMlinear)和高斯径向基核函数支持向量机(SVMrbf)。
本文提出一种基于主成分分析与极限学习机的阿尔茨海默病的高精度辅助诊断方法,通过主成分分析算法对多模态数据进行有效融合,并使用极限学习机的分类诊断,本文方法在阿尔茨海默病的诊断准确率、敏感度、特异度和AUC等性能指标上大幅超过使用单一模态数据或原始多模态数据直接拼接方法的诊断性能,说明本文方法对阿尔茨海默病的高精度辅助诊断具有重要的贡献,其结果可以为医生的临床诊断提供可靠的参考。此外本文还与其他文献的算法进行比较,结果表明本文方法相较于其他算法也有一定的性能优势。