本发明属于大数据技术与机器学习领域,特别是一种基于子空间学习的医疗数据集特征降维方法。
背景技术:
特征降维(dimensionalityreduction)旨在将高维数据转化成低维数据。特征降维技术的出现是由于在实际应用场景产生的机器学习问题中,都会产生大量复杂的高维数据。大多数数据分析任务的运行时间至少随数据维度的增加呈线性增长,存储、分析高维数据需要消耗大量计算机存储资源,花费很多计算时间。并且很多数据挖掘和机器学习的任务,如分类、聚类和回归只在低维空间取得好效果,如果放置到高维空间会非常困难。所以如何对高维数据进行特征降维,并保持重要信息不丢失是个迫在眉睫的问题。
广义上,根据数据的标签信息是否给出,特征降维方法可以大致分为有监督、半监督和无监督三大类。子空间学习(subspacelearning)属于一种线性的特征降维方法,即认为数据的“内在维度”(intrinsicdimensionality)可以由特征向量的线性转换表示。此类典型的方法有主成分分析(principalcomponentanalysis,pca)、线性判别分析(lineardiscriminantanalysis,lda)和局部保持投影(localitypreservingprojection,lpp)等。
但是,现存的基于子空间学习的方法都存在一些弊端。如pca的目标是通过最大化数据的协方差矩阵来将原始高维数据线性表示为低维数据;lda则通常为迹比率的形式,它通过最大化类间散度矩阵同时最小化类内散度矩阵来求解特征向量的表示。pca和lda都是基于谱方法进行特征值分解,只从全局的角度考虑了判别信息,如pca的方差和lda的均值,忽略了由样本点的邻域提供的判别信息。在样本数量远小于特征维数时,lda方法可能出现奇异矩阵导致计算出的特征向量不准确。而lpp恰恰相反,它通过构造样本点的邻接图,然后计算权重,保持了节点邻域的线性结构,但却没有考虑全局判别信息的重要性,因此分类效果不佳。此外,现存的一些特征降维方法,如pca和lda都是无参数的特征降维方法,且都假设样本点的分布服从高斯分布,因而对离群值十分敏感。
目前,对高维数据进行特征降维的问题被建模为最优化问题,其求解方法往往涉及特征值分解,但是有文献指出,某些问题的最优解不能由特征值分解解出。交替方向乘子法(alternatingdirectionmethodofmultipliers,admm)适用于求解凸优化问题,且计算高效,收敛速度快,是当前领域研究的重点。
技术实现要素:
本发明的目的在于提供一种简单高效、收敛速度快以及分类准确率高的特征降维的方法。
实现本发明目的的技术解决方案为:基于子空间学习的医疗数据集特征降维方法,包括以下步骤:
步骤1、根据待分析的医疗数据集构建原始高维数据矩阵x和标签列;
步骤2、构造最优化目标函数,求解其拉格朗日函数,并初始化拉格朗日函数的参数和变量;
步骤3、根据原始高维数据矩阵和标签列,求取医疗数据集中样本的类间散度矩阵sb和类内散度矩阵sw,由此获得全局判别信息;
步骤4、根据原始高维数据矩阵和标签列,构建医疗数据集中样本的类间邻接图gb和类内邻接图gw,并分别求取相应的laplacian矩阵lb和lw,由此获得局部判别信息;
步骤5、结合上述求解的sb、sw、gw、gb对拉格朗日函数进行迭代,求取用于降维重构原始高维数据矩阵的转化矩阵q和p、误差矩阵e和拉格朗日乘子y,直到目标函数收敛或者达到设定的最大循环次数,最终获得的矩阵qtx即为降维后的数据矩阵;
步骤6、利用转化矩阵q训练分类器,之后根据分类器的auc值对矩阵qtx进行评价。
本发明与现有技术相比,其显著优点为:1)联合利用全局判别信息和局部判别信息进行降维,在样本特征维数远大于样本数时依然可以达到高的分类准确率;2)利用
下面结合附图对本发明作进一步详细描述。
附图说明
图1为本发明基于子空间学习的医疗数据集特征降维方法的流程图。
图2为本发明实施例中的收敛性分析曲线图。
图3为本发明实施例中的参数选择图。
具体实施方式
结合图1,本发明的基于子空间学习的医疗数据集特征降维方法,包括以下步骤:
步骤1、根据待分析的医疗数据集构建原始高维数据矩阵x和标签列;
步骤2、构造最优化目标函数,求解其拉格朗日函数,并初始化拉格朗日函数的参数和变量;
步骤3、根据原始高维数据矩阵和标签列,求取医疗数据集中样本的类间散度矩阵sb和类内散度矩阵sw,由此获得全局判别信息;
步骤4、根据原始高维数据矩阵和标签列,构建医疗数据集中样本的类间邻接图gb和类内邻接图gw,并分别求取相应的laplacian矩阵lb和lw,由此获得局部判别信息;
步骤5、结合上述求解的sb、sw、gw、gb对拉格朗日函数进行迭代,求取用于降维重构原始高维数据矩阵的转化矩阵q和p、误差矩阵e和拉格朗日乘子y,直到目标函数收敛或者达到设定的最大循环次数,最终获得的矩阵qtx即为降维后的数据矩阵;
步骤6、利用转化矩阵q训练分类器,之后根据分类器的auc值对矩阵qtx进行评价。
进一步地,步骤1中根据待分析的医疗数据集构建原始高维数据矩阵和标签列,具体为:
假设构建原始高维数据矩阵
进一步地,步骤1中构造最优化目标函数,求解其拉格朗日函数,并初始化拉格朗日函数的参数和变量,具体为:
一般地,线性特征降维被建模为以下最优化问题:对于原始高维数据集合
直观上来说,若不同类别的数据越分散,相同类别的数据越聚合,那么分类器就能更好的区分数据的类别。这种类间分散和类内聚合的程度分别由类间散度矩阵和类内散度矩阵来度量。本发明从全局判别信息和局部判别信息两方面入手,一方面最小化类内散度矩阵的迹最大化类间散度矩阵的迹,另一方面利用laplacian矩阵,保持转化后的低维数据的局部分布与原始高维数据的分布相一致。
步骤2-1、(1)针对全局判别信息,目标是最小化类内距离,同时最大化类间距离,构造最优化目标函数具体为:
(2)针对局部判别信息,目标是保持转化后的低维数据的局部流形结构与原始高维数据的一致,构造的原始目标函数为:
由yi=qtxi,将目标函数约简为:
综合上述(1)(2),并增加正则化项和限制条件,获得最优化目标函数为:
s.t.x=pqtx+e,ppt=i
式中,
步骤2-2、求取最优化目标函数的拉格朗日函数lρ(p,q,e,y)为:
式中,ρ为惩罚参数,且ρ>0,y为拉格朗日乘子;
步骤2-3、初始化拉格朗日函数的参数和变量:α=0.01,β=0.02,λ1=0.01,λ2∈{1,10-1,10-2,10-3,10-4,10-5},ρ=0.1,μ=0.1,ρmax=105;iter为迭代次数;q=0,e=0,y=0,p=pca(x),其中,pca(*)表示返回矩阵*的主分量系数,p=pca(x)用于初始化一个正交矩阵p。
进一步地,步骤3中根据原始高维数据矩阵和标签列,求取医疗数据集中样本的类间散度矩阵sb和类内散度矩阵sw,具体为:
求取sb和sw的公式分别为:
式中,
进一步地,步骤4中根据原始高维数据矩阵和标签列,求取样本的类间邻接图gb和类内邻接图gw相应的laplacian矩阵lb和lw,具体为:
求取lw和lb的公式分别为:
lw=dw-ww
lb=db-wb
式中,d为对角矩阵,其对角线元素是对w按行求和的结果,即dii=∑jwij,其中wij为邻接图权重矩阵的第i行第j列元素;ww和wb分别为类内邻接图的权重矩阵和类间邻接图的权重矩阵,分别为:
式中,knn(*)表示样本点“*”的k近邻集合,k为自定义的正整数;knn(*)又细分:knnw(*)为与样本点“*”标签相同的近邻集合,knnb(*)为与样本点“*”标签不同的近邻集合。
进一步地,步骤5中结合上述求解的sb、sw、gw、gb对拉格朗日函数进行迭代,求取用于降维重构原始高维数据矩阵的转化矩阵q和p、误差矩阵e和拉格朗日乘子y,直到目标函数收敛或者达到设定的最大循环次数,具体为:
为了求解拉格朗日函数,令r=x-pqtx-e为残差,然后凑完全平方,则拉格朗日函数lρ(p,q,e,y)的
式中,令
(1)迭代更新q的公式为:
令
q=(2(sw-αsb+βx(lw-lb)xt)+λ1u+ρxxt)-1(ρrtpx)
式中,u为对角矩阵,其第i个对角元素为:
式中,qi为矩阵q的第i行数据;
(2)迭代更新p的公式为:
令
求解rxtq的svd值为rxtq=usvt,则进一步获得更新p的公式为:
p=uvt
(3)迭代更新e的公式为:
令
e=shrink(e0,e)
式中,shrink表示收敛算子,具体为:
sign(e0)max(|e0|-e,0)
(4)迭代更新y和ρ的公式为:
y=y+ρ(x-pqtx-e)
ρ=min(ρmax,μρ)
式中,ρmax和μ是预先定义的常量。
进一步地,步骤6中利用转化矩阵q训练分类器,之后根据分类器的auc值对矩阵qtx进行评价,具体为:
矩阵qtx对应的医疗数据集中,正例的样本标签由+1表示,反例的样本标签由-1表示;
求取分类器的auc值:
式中,numpos和numneg分别为正、负样本的数量,i(ppos,pneg)为:
式中,ppos为分类器预测样本为正例的概率,pneg为分类器预测样本为反例的概率;
求取的auc值越高表示分类效果越好,即求取的转化矩阵q越好。
示例性优选地,步骤6中分类器具体采用knn分类器。
下面结合实施例对本发明作进一步详细的描述。
实施例
本发明基于子空间学习的医疗数据集特征降维方法,包括以下内容:
1、根据待分析的医疗数据集构建原始高维数据矩阵x和标签列。
本实施例中采用的数据集是arcene数据集,这个数据集来自人类的血清质谱。arcene数据集的样本大小为900,特征维度高达10000。该任务是一个二分类问题,旨在区分患有癌症的人(标签为+1)和正常人(标签为-1)。整个数据集由两个前列腺癌数据集和一个卵巢癌数据集合并而成,数据集来源于国家癌症研究所(nationalcancerinstitute,nci)和东弗吉尼亚医学院(easternvirginianmedicalschool,evms)。数据没有缺失值,且大约44%的样本是正例。数据集由三个部分组成:具有100个样本的训练数据集,100个样本的验证数据集,700个样本的测试数据集。预设将d设置为10。
2、构造最优化目标函数,构造拉格朗日函数,并初始化算法的变量和参数:
本实施例中采用的目标函数如下:
s.t.x=pqtx+e,ppt=i
上式的拉格朗日函数为:
式中,ρ(ρ>0)为惩罚参数,y为拉格朗日乘子。
待初始化的变量、参数的赋值如下表1所示:
表1变量和参数初始化
3、根据原始高维数据矩阵和标签列,计算类间散度矩阵sb和类内散度矩阵sw,获得全局判别信息:
计算公式分别为:
式中,
本实施例中求出的sb和sw分别为:
4、根据原始高维数据矩阵和标签列,构建医疗数据集中样本的类间邻接图gb和类内邻接图gw,并分别求取相应的laplacian矩阵lb和lw,获得局部判别信息。
本实施例中求出的lb和lw均为稀疏矩阵,分别为:
5、迭代计算转化矩阵q和p,误差矩阵e和拉格朗日乘子y,直到目标函数收敛或者达到最大循环次数:
(1)q由下式求出:
q=(2(sw-αsb+βx(lw-lb)xt)+λ1u+ρxxt)-1(ρrtpx)
本实施例中求得的q为:
(2)p由下式求出:
p=uvt
本实施例求出的p为:
(3)e由下式求出:
e=shrink(e0,e)本实施例中求出的e为:
(4)y由下式求出:
y=y+ρ(x-pqtx-e)本实施例中求出的y为:
6、利用转化矩阵q训练分类器,之后根据分类器的auc值对矩阵qtx进行评价。
收敛性分析:
本实施例获得的收敛性分析曲线图如图2所示,横坐标为迭代次数,本实施例的迭代次数参数设置为100,左纵坐标为分类准确率(用百分比的形式表示),右纵坐标为目标函数的值。由实施例的运行结果发现,模型在迭代不超过30次达到收敛。
参数选择:
本实施例有两个预设的参数λ1和λ2,这两个参数的设置关系到所建立的最优化模型的收敛性。下面给出参数选择的方法:
本实施例从候选集合{10-5,10-4,10-3,10-2,10-1,1,101,102,103,104,105}中选择不同的λ1和λ2的两两组合来训练模型,同时记录不同组合下的auc值,结果如图3所示。由实施例的运行结果发现,针对arcene数据集,当λ1和λ2分别取0.01和0.1时,模型的分类准确率最高。针对不同的数据集,最佳的λ1和λ2取值不完全相同,经实验发现,该参数的选取可以使用控制变量法,当固定其中一个参数的值,使得算法效果最佳的另一参数的取值区间也不难得出。
本发明实现了对医疗数据集的特征降维,通过计算全局判别信息和局部判别信息,根据本发明提出的最优化目标函数,递归求解转化矩阵以达到对原始高维数据的最优低维线性表示。实验证明,相比较于目前的医疗数据集的特征降维方法,本发明的方法不仅适用于一般规模下的特征降维问题,在数据的特征规模远大于样本规模时仍然具有较高的分类准确率。此外,本发明可以调整参数,使得训练出的模型适应某个具体任务,计算方法十分高效,且对于离群值不敏感。