慢性肾病预测的多目标特征选择
2022-03-21陈陆爽
陈陆爽,周 晖
(南通大学 信息科学技术学院,江苏 南通 226019)
0 引 言
慢性肾病每年造成数百万人死亡,而且其患病率和致死率还在不断增加[1]。早发现早治疗是控制CKD和降低死亡率的有效方法[2],但该疾病隐蔽性强,发病早期不易察觉,导致患者错过最佳治疗时机[3]。对CKD早期预测的研究,引起国内外学者越来越多的关注。文献[4]分析现有模型后,提出一种使用感知器将逻辑回归和随机森林相结合的CKD预测集成模型,并分析K近邻插补对集成模型准确率的影响;文献[5]研究支持向量机和人工神经网络在CKD预测方面的应用,并确定两种技术的优化参数。群智能[6]由于其全局搜索优势已被应用于CKD预测。文献[7]提出基于NN-CS的模型来检测早期CKD,CS算法选择最佳NN的输入权重向量以正确训练数据。文献[8]将基于密度和蚁群优化的特征选择算法D-ACO用于CKD分类。但是,目前对CKD的研究是将最大化CKD的预测准确率看作单目标特征选择问题,而忽略了无关和冗余特征的影响,造成模型复杂度增加,精度和泛化能力下降;另外,现有方法无法筛选出影响CKD的高危因素。
针对上述问题,提出基于互信息和皮尔逊相关系数的多目标CKD预测模型,并针对该模型提出多目标CKD特征选择算法MCFS,能够筛选出信息量最大的特征。MCFS采用精英反向学习、非线性控制参数和联想记忆3个改进算子,使其在CKD预测方面的性能更好。
1 多目标慢性肾病特征选择模型
仅考虑特征数和分类准确率两个评估标准,容易忽略特征间的冗余度和特征与类别之间的相关性等信息,不同目标函数的选取也会对CKD预测效果造成不同程度影响[9]。考虑最大化特征数与类别之间的相关性以及最小化特征之间的依赖性。在特征选择领域,相关性或相互依赖性通常由互信息(MI)和皮尔逊相关系数(PCC)度量。然而,MI容易忽略线性相关性,而PCC对非线性相关性敏感,选择其中任意一种度量相关性,都会造成结果的不可靠。针对以上问题,将MI和PCC分别用于计算线性和非线性相关性,构造两个目标函数。
对于第一个目标,需要找出与类别相关性较高的特征子集,可表示为
(1)
式中: |M| 为特征数,I(xi,l) 表示特征与类别之间的互信息,ρ(xi,l) 表示特征与类别之间的皮尔逊相关系数。
当两个特征高度相关,删除一个特征不会显著影响其它特征的预测能力,第二个目标可描述如下
(2)
式中:I(xi,xj) 表示特征之间的互信息,ρ(xi,xj) 表示特征之间的皮尔逊相关系数。
为了将MI和PCC的值放置在相同的范围内,两个目标函数都考虑了PCC的绝对值,MI和PCC计算如下
(3)
(4)
式中:X和Y是两个离散变量,p(x,y) 是X和Y的联合概率密度函数,p(x) 和p(y) 分别是x和y的边缘密度函数,cov表示协方差,σ表示标准差。
构建多目标慢性肾病特征选择模型
(5)
2 多目标慢性肾病特征选择算法MCFS
由于现阶段针对CKD预测的研究无法在保持分类准确率较高的同时筛选出与CKD紧密相关的特征,提出多目标慢性肾病特征选择算法MCFS,其生成的非支配解能够在选择较少特征的情况下保持较高的预测精度,从而找到CKD的高风险因素。
2.1 GWO算法[10]
GWO算法的位置更新方程如下
X(t+1)=(X1(t)+X2(t)+X3(t))/3
(6)
X1(t)=Xα(t)-A1·Dα
(7)
X2(t)=Xβ(t)-A2·Dβ
(8)
X3(t)=Xδ(t)-A3·Dδ
(9)
Dα=|C1·Xα(t)-X(t)|
(10)
Dβ=|C2·Xβ(t)-X(t)|
(11)
Dδ=|C3·Xδ(t)-X(t)|
(12)
A=2a·r1-a
(13)
(14)
C=2·r2
(15)
其中,X(t) 是第t次迭代时wolf的位置,α,β和δ是适应度值排名前三的个体,r1,r2是[0,1]之间的随机向量,Maxiter是最大迭代次数。
2.2 MCFS算法描述
MCFS将CKD数据集特征的选取视作一组二进制解,通过改进的GWO算法对随机生成的初始解进行优化,优化目标即式(5),采用MOPSO的多目标框架生成一组非支配解。
(1)基于EOBL(精英反向学习)的种群初始化
EOBL通过增加种群多样性改善算法的全局搜索,假设x是 [a,b] 范围内的实数。x的相反点xop为
xop=a+b-x
(16)
同样地,该定义也可以扩展至D维(D≥2)假设x=(x1,x2,…,xD),xi∈[ai,bi],x的相反点xop=(x1op,x2op,…,xDop)
xiop=ai+bi-xi
(17)
初始化阶段产生一个原始种群P1, 包含个体xi,i=1,2,…,n。 基于精英反向学习产生的种群为P2。 初始种群和精英反向学习种群合并为一个种群 {P1∪P2}, 从中选取n个最优个体组成新的初始化种群。精英反向个体x′i=(x′i,1,x′i,2,…,x′i,D)
x′i,j=r×(daj+dbj)-xi,j
(18)
式中:i=1,2,…,n,j=1,2,…,D,r=rand(0,1),daj,dbj是动态边界,daj=min(xi,j),dbj=max(xi,j), 若x′i,j超出动态边界,则x′i,j=rand(daj,dbj)。
(2)非线性控制参数
GWO算法中收敛因子a从2线性减小到0,不能准确反映和适应复杂的非线性搜索过程,运用一种基于余弦函数的非线性控制参数
(19)
式中:Maxiter是最大迭代次数,t是当前迭代次数。
(3)联想记忆策略
运用联想记忆策略增强wolf的团体协作和信息交换能力,在整个搜索过程中记录每只wolf的历史最佳并集成到算法的搜索机制中,由领导者和个体最优共同探索解空间。
GWO算法中位置更新修改为
Dα=|C1·Xα(t)-Xi pbest(t)|
(20)
Dβ=|C2·Xβ(t)-Xi pbest(t)|
(21)
Dδ=|C3·Xδ(t)-Xi pbest(t)|
(22)
Y1(t)=Xα(t)-A1×Dα
(23)
Y2(t)=Xβ(t)-A2×Dβ
(24)
Y3(t)=Xδ(t)-A3×Dδ
(25)
Yi(t+1)=(Y1(t)+Y2(t)+Y3(t))/3
(26)
其中,Xi pbest(t) 是第i只wolf直至迭代次数为t时的历史最优位置,其余变量和GWO定义一样。
除了leader wolf,其余wolf的历史最优个体也能为算法提供一定的指导意义。为了增加算法的随机性,添加随机个体信息,通过下式在个体历史最优位置周围进一步搜索
Zi(t+1)=Xi pbest(t)+η×(Xr3(t)-Xr4(t))
(27)
(28)
其中,Xr3(t) 和Xr4(t) 是随机wolf的位置,η为邻域搜索因子。
通过下式的交叉算子合并领导者和个体的指导信息,从而协调种群交流和个体记忆在算法搜索能力上的影响
(29)
式中:r5是[0,1]内均匀分布的随机数,CR是交叉概率,设置为0.4。
为了加快收敛速度,待位置更新后,贪婪选择被用于在两次相邻迭代之间保留最佳个体
Xi(t+1)=Xi(t),ifF(Xi(t+1))>F(Xi(t))
(30)
(4)存档和领导者选择机制
多目标[11]根据存档机制来存储整个优化过程中最好的非支配解,并通过以下规则,实现档案的存储和更新。
在迭代过程中,若一个解支配档案中的任意解,则将其存档,删除被支配解;若被档案中一个或多个解支配则不存档;若一个解与档案中的解相比是非支配的而且档案拥有足够空间,则将解添加到档案中;若超过存档数量上限,则用网格机制删减非支配解密度较大段中的个体以容纳新解。自适应网格将目标空间划分为多段,每个部分的拥挤程度取决于其拥有的非支配解的数量。拥挤程度越高,从中随机删除解的可能性越大,因此选择第段删除解的概率可表示为
(31)
式中:ni指的是第i段中非支配解的数量,c是常数,通常设为1。
多目标搜索空间中解的优劣是通过支配概念比较的,领导者选择机制可以帮助MOGWO找到α,β和δ。 与存档溢出时解的删除操作相反,MOGWO运用轮盘赌选择一个段,其中每个段的选择概率与该段中非支配解的数量成反比
(32)
式中:ni指的是第i段中非支配解的数量,c是大于1的常数。
(5)转移函数
MCFS生成的个体位置是连续值,它与特征选择的二元性质相矛盾,将连续搜索空间转换为二进制版本的最有效方法之一是利用转移函数(transfer function,TF)[12],某个特征的选择与否用1和0来表示。根据以下公式将连续搜索空间转换为二进制搜索空间
(33)
(34)
(35)
其中,xi是搜索个体的连续值位置,TFS是S形转移函数,TFV是V形转移函数。
整个算法流程如图1所示。
图1 算法流程
3 仿真研究
仿真研究分4个部分:①对比两种转移函数(S型和V型)和4个常见分类器SVM(支持向量机)、KNN(K近邻)、NB(朴素贝叶斯)、DT(决策树)生成的平均Pareto Front,验证使MCFS性能最佳的分类器和TF,同时将MCFS与未经改进的算法MCFS-NI对比,验证3个改进算子的有效性;②对比多目标特征选择算法和现有的一些已用于CKD预测的单目标特征选择算法的优劣;③对比不同多目标进化算法在CKD预测方面的效果;④统计CKD数据集中特征被选的频率,总结与CKD紧密相关的特征。
3.1 数据集
使用UCI数据库中的CKD数据集。该数据集包含400个样本和24个特征,其中有250个样本被标记为阳性,其余150个样本被标记为阴性。表1给出了数据集中所有特征信息。
3.2 数据预处理
(1)缺失值填充
利用KNN插补(k=9)选择具有最短欧氏距离的k个完整样本,对CKD数据集的缺失值进行填充。对于数字变量,缺失值使用k个完整样本相应变量的中位数填充;对于类别变量,缺失值使用k个完整样本相应变量中频率最高的类别填充。
表1 CKD数据集
(2)数据分割
采用十折交叉验证将CKD数据集随机分割成10组,每组轮流做一次测试集,9次训练集。取10次平均值作为模型性能的评估。
(3)数据缩放
由于CKD数据集中存在的所有特征量纲不一致,采用标准化缩放方法使特征落入统一区间。
3.3 参数设置
种群数量和档案大小均为30,最大迭代次数为100。所有算法进行20次独立运行。实验平台是Intel Corei7 2.60 GHz CPU,8GRAM,windows10操作系统,开发环境为Matlab2018b,算法参数见表2。
表2 参数设置
3.4 评价指标
(1)Accuracy
(36)
式中:TP、TN、FP、FN分别表示真正率、真负率、假正率、假负率。
(2)Pareto最优解个数(NPS)
(3)平均理想距离(MID)
该准则用于度量Pareto最优解和理想点之间的接近度,MID值越低,解的质量越高
(37)
(4)Spacing
Spacing表示连续解之间的相对距离。具有较小间距的非支配解意味着Pareto Front分布更加均匀
(38)
(39)
(40)
(5)多样性度量(DM)
DM值越大,Pareto Front的多样性越高
(41)
(6)CPU时间
算法执行所需时间越少,效率越高。
3.5 仿真分析
合并20次运行产生的非支配解,将同一特征数所匹配的错误率取平均值,获得平均Pareto Front,以特征数作为横坐标,错误率作为纵坐标(表中最优结果均被加粗,FN指所选特征数)。4个部分实验介绍如下:
(1)仿真研究一
本节验证了MCFS这3个改进算子的有效性以及使分类性能达到最佳的TF和分类器。首先以DT作为分类器,将MCFS与MCFS-NI(未加入3个改进算子的版本)以及两种不同类型TF(S型,V型)对比,结果如图2所示。
图2 基于不同TF的平均Pareto Front
由图2可知,无论基于S型还是V型TF,MCFS的平均Pareto Front总是优于MCFS-NI,可见3个改进算子确实提高了CKD预测性能。对于MCFS和MCFS-NI来说,基于S型TF的预测效果总是比基于V型TF的好,能够在获得较高准确率的同时选出较少的特征,所以S型TF最适合将MCFS离散化。4种算法均在特征数为8时得到了最低分类错误率。MCFS-S比MCFS-V的最高预测准确率98.11%提升了1.19%;MCFS-NI_S比MCFS-NI_V的最高预测准确率95.75%提升了1.31%。总体来说,MCFS-NI所能达到的最高预测准确率比MCFS低2.24%。因此,S型TF对MCFS的探索和开发进程有着更大程度的改善,而且3个改进算子对于MCFS性能的提高是有效的。之后MCFS默认使用S型TF。
由于不同分类器对不同多目标问题适应度不同,采用4种常用分类器(SVM、KNN、NB、DT)比较其在多目标慢性肾病特征选择模型中分类能力的差异,结果如图3所示。
图3 基于不同分类器的平均Pareto Front
图3显示,基于DT的MCFS获得了最佳平均Pareto Front,在不同特征数下,错误率始终能够保持最低,其余3种分类器的分类效果从高到低依次是SVM、KNN、NB。特征数为8时,基于DT和基于NB的MCFS均达到最高预测准确率,分别为99.3%和94.75%,在原始CKD数据集的基础上,特征数削减了66.67%;特征数为6时,基于SVM的MCFS可达到96.25%的最高准确率;特征数为7时,基于KNN的MCFS可达到96.25%的最高准确率。与其它分类器相比,基于DT的模型预测准确率有了2.3%~4.55%的提升。因此,DT对CKD的预测效果最好,之后的仿真研究默认以DT作为分类器。
(2)仿真研究二
本节比较了多目标特征选择(MOFS)算法与单目标特征选择(SOFS)算法在CKD预测方面的优劣。考虑了8种算法,包括MOFS算法MCFS和MCFS-w(所提算法的多目标加权形式,两个目标的加权系数分别为α和1-α,α取0.99,0.9,0.8,0.7,0.6,0.5)以及以最大化分类准确率为目标的SOFS算法SCFS(所提算法的单目标形式),DFS-ITLBO(基于密度的特征选择和改进教学优化算法),CFS-SMO(基于相关性的特征选择和序列最小优化算法),GA-FS(遗传特征选择算法),FOA-FS(果蝇优化特征选择算法),PSO-FS(粒子群优化特征选择算法),ACO-FS(蚁群优化特征选择算法),结果如图4所示。
图4 MOFS算法和SOFS算法的平均Pareto Front
首先将MCFS与MCFS-w对比,可以看出,与加权形式的MOFS算法相比,MCFS得到的是Pareto Front,提供了选择灵活性,而且任意特征数所对应的分类错误率均低于所有加权值下的MCFS-w。可见,基于后验的MCFS比基于先验的MCFS-w在CKD预测方面效果更好。其次,对比MCFS与SOFS算法后发现,在最好的情况下,SCFS和PSO-FS通过10个特征分别得到98.11%和95.81%的预测准确率,DFS-ITLBO通过8个特征得到97.69%的预测准确率,CFS-SMO通过17个特征得到98.43%的预测准确率,GA-FS通过9个特征得到98.02%的预测准确率,FOA-FS通过14个特征得到96.54%的预测准确率,ACO-FS通过16个特征得到99.2%的预测准确率。
不难看出,相比其它7种SOFS算法和一个基于先验的MOFS算法,MCFS在选择更少特征的同时能够获得较高的CKD预测准确率。所以,采用MCFS可以更为有效地探索搜索空间,综合考量多种子集评价方式,能够选出质量更高的特征子集并得到更好的CKD预测效果。
(3)仿真研究三
迄今为止出现了许多行之有效的多目标优化算法,首先选取5种经典的多目标进化算法(MOEA)NSGAII、MOEA/D、PESA2、NSGAIII、SPEA2与MCFS进行对比,结果如图5所示。
图5 MCFS与经典MOEA的平均Pareto Front
比较图中6个平均Pareto Front,可以观察到,在CKD预测方面,MCFS的平均Pareto Front最优。NSGAII的最高预测准确率96.17%在特征数为6时获得,MOEA/D的最高预测准确率92%在特征数为10时获得,PESA2和NSGAIII均在特征数为6时获得最高预测准确率,分别为95.75%和94%,SPEA2和MCFS的最高预测准确率分别为95.87%和99.3%,均在特征数为8时获得。总体上看,MCFS的预测准确率比其它几个经典MOEA提升了3.13%~7.3%,在CKD预测性能方面效果显著。
表3展现了MCFS与不同经典MOEA生成的平均Pareto Front在多个指标上的评估结果。MCFS虽然在CPU运行时间上略逊于NSGAII,但是其收敛性最好,获得的平均Pareto Front最为均匀,非支配解多样性最高。
表3 经典MOEA指标评估
其次,由于群智能算法在解决各种多目标方面显示出极大优势,为了确定最适合预测CKD的群智能MOEA,将MCFS与现今较为流行的群智能MOEA进行对比,结果如图6所示。
图6 MCFS与群智能MOEA的平均Pareto Front
由图6可知,MCFS生成的平均Pareto Front最优,MODE、MOABC、MOWOA、MODA生成的平均Pareto Front类似,MOPSO生成的Pareto Front最不占优势。特征数为1时,MCFS比其它群智能MOEA提高了11.04%~20.39%;特征数为2时,MCFS比其它算法提高了7.37%~17.12%;特征数为3时,MCFS比其它MOEA提高了4.25%~9.2%;特征数为4时,比其它MOEA提高了3.75%~7.11%;特征数为5时,比其它MOEA提高了3.37%~6.22%;特征数为6时,比其它MOEA提高了2.93%~5.62%;特征数为7时,比其它MOEA提高了3.52%~5.08%;特征数为8时,比其它MOEA提高了3.43%~5.05%。由此可见,在CKD预测方面,MCFS选择任意特征子集时都比其它群智能MOEA有较大程度提升。
表4对群智能MOEA生成的平均Pareto Front进行了多个指标的评估。由表4可知,MCFS在所有指标上均达到了最优,得到的非支配解质量相对较高,可以在减少特征数和分类错误率的同时,受益于较低的时间成本。
表4 群智能MOEA指标评估
(4)仿真研究四
多目标慢性肾病特征选择算法MCFS权衡了特征数和分类准确率两个指标,删除大量不必要特征的同时保留了与CKD识别最有价值的信息,既极大程度上简化了数据,又能够保证较高的预测准确率。为了得到影响CKD的高危因素,计算每次运行中特征被选中的次数,取20次平均值,从大到小排序,得到前8个被选频率最高的特征。影响CKD的主要特征信息见表5。
表5 CKD数据集被选频率最高的8个特征
综上可见,MCFS的S型二进制变体对算法性能提升度最高,DT是评估所提多目标模型的最佳分类器,在与其它多种单目标和多目标算法的对比中发现,MCFS无论在特征子集的数量还是预测效果方面均领先于现有算法,并能够找到与CKD紧密相关的特征子集以做进一步研究,足以验证其在CKD预测方面的潜力。
4 结束语
由于现阶段尚未出现可以逆转CKD的医疗手段,早发现早治疗是有效控制CKD亟待解决的问题。所提多目标慢性肾病特征选择模型综合考虑线性和非线性因素,将现有的CKD预测模型从单目标扩展为多目标,在预测准确率方面具有较大优势。所提多目标慢性肾病特征选择算法MCFS消除了冗余或不相关的特征,保留了影响CKD的关键特征,早期患者可以针对这些方面进行医疗监测,阻止病情恶化,正常人可以尽量将这些指标控制在正常范围内以预防CKD。
下一步将研究所提方法在其它医学临床数据中的适用度,提高模型的利用率。