范怡敏 齐 林 帖 云
(郑州大学信息工程学院 河南 郑州 450000)
目前,对生物医学和生物信息学数据的分析与分类越来越重要,如:疾病的诊断,癌症的分类[1],物种分类等。如今,在基因表达水平上的数据集常被用来鉴定和提取一些生物信息;生物医学通过基因分析来了解疾病发生与发展机制以及可能性等问题,从而进一步进行基因诊断、亚型分类等。然而,多数生物信息学数据的获取非常困难,通常只能得到小规模的样本数据集。基因表达数据集普遍存在样本个数少、维度高、噪声大等问题,复杂的分类处理模型很容易导致过拟合。当前常用于分类问题的典型机器学习算法包括:支持向量机(Support Vector Machine,SVM)[2]、随机森林(Random Forest,RF)[3]、深度森林[4](Deep Forest),以及一些集成方法分类模型,例如Adaboost[5]、XGBoost[4]等。文献[2]使用了SVM对基因表达数据进行分类。近年来深度神经网络(Deep Neural Network,DNN)、卷积神经网络(Convolutional Neural Network,CNN)[6]在很多应用领域中取得了较大的发展。然而,尽管深度学习网络模型为数据分析提供了有利的方法,但是由于神经网络算法自身的一些特点,在基因等小规模数据集中的应用受到了限制:一方面,深度神经网络模型比较复杂,通常需要大量的数据进行训练,而基因数据的样本量通常不足;另一方面,深度神经网络模型中参数过多,多数情况下模型的性能受参数影响较大[6]。因此其在小规模数据集的分类中通常难以获得预期的性能。为了改善深度神经网络的这些缺陷[6],2017年出现了深度森林、多粒度级联森林(multi-Grained Cascade Forest,gcForest)模型,这是基于深度模型提出的一种通过集成学习方法提高分类性能的结构,能有效解决小样本数据分类等问题。文献[6]的实验结果验证了该模型相比于深度神经网络模型,能够避免训练所需数据量大、模型复杂性高、超参数过多等问题,可以取得更好的分类效果。但原始模型依然有很多需要改进的地方,例如:对于小样本高维度数据集,模型易有过拟合现象;分类精度较低;模型对所集成的森林多样性衡量不足,未对每个分类单元的分类质量进行区分;模型的泛化能力和分类稳定性有待提升等。
现今集成学习被广泛应用,集成学习方法可以通过将多个学习模型组合,使组合后的模型具有更强的泛化能力[7]和更好的效果。综上所述,本文在原始深度森林模型的基础上提出一种改进模型TBDForest,主要对多粒度扫描部分作了特征均等性利用的优化以及级联森林部分两个方面的改进。在五组基因表达DNA微阵列小样本数据集上进行特征选择后进行分类验证实验。实验结果显示改进后模型处理小规模数据集时的分类性能相比于常用的支持向量机、随机森林、gcForest、XGBoost、Adaboost等方法有所提升,进一步实现分类模型在基因表达小样本数据中的应用。
基因表达数据通常有数千甚至上万个特征基因,有高维度的特点,然而在这些特征中只有小部分基因与癌症亚型分类、疾病判别等相关,其余大部分是冗余或噪声特征,因此本文先对基因表达数据使用特征选择方法进行数据降维处理。Least absolute shrinkage and selection operator(Lasso)算法,是一种基于惩罚方法对样本数据进行变量选择,通过将原本的系数压缩,把原本非常小的系数压缩至零,从而将这部分系数所对应的变量视为不显著的变量并直接舍弃[8]。这种方法能够在保持原始基因的分类准确性的同时选择出重要的基因,降低时空消耗,更易于测试分类器性能。本文中实验数据样本小维度高,先将原始数据通过Lasso算法进行特征选择降维处理,然后使用选出的重要基因特征进行分类。
Breiman等[3]提出了随机森林算法RF,其构建在单一决策树基础上,同时又将单一决策树方法进行延伸和改进,其基本思想是构造多棵决策树,组成一个森林,之后通过这些决策树共同决定输出的类别。整个RF算法中有两个随机性的过程:(1) 原始输入的数据随机从所有训练数据中有放回地选出一些建立一个决策树;(2) 建立每个决策树所用的特征是从整体的特征集随机性选取[9]的。这两方面的随机非常有利于RF模型避免过拟合。
RF是综合考虑多个决策树而形成的一种基于集成学习思想的机器学习方法。每个森林通过多棵决策树对样本进行训练,由每棵决策树给出分类值,然后按照少数服从多数的原则表决完成最终的分类,不仅被用于分类还可以解决回归问题。RF的投票决策过程如下:
(1)
式中:H(x)表示组合分类模型;hi表示单棵决策树;Y为输出变量;I(·)为指示性函数。算法根据最大投票判断得票数最多的一类作为最后的分类结果[8]。
随机森林算法实现比较容易,不用设置过多参数,且应用广泛。随机森林对数据随机选取和特征随机选取这些随机性的设置,使得随机森林有非常好的抗噪声性能,也不容易过拟合。RF能够处理高维度的数据,对不同数据集的适应能力强,既能处理离散型数据,也能处理连续型数据。RF的训练效率高,能获得各个变量的重要性排序,训练时可以检测到特征相互之间的影响,从而使用并行化方法。随机森林的生成步骤如下:
(1) 从原始训练集中随机、有放回地采样p个训练样本,进行p次采样后生成p个训练集。
(2) 用p个训练集分别训练p个决策树模型。
(3) 将产生的p个决策树建立为随机森林。
(4) 对于分类问题,测试的样本由p个决策树以投票表决方式产生最终的分类结果。
深度森林、多粒度级联森林是周志华教授提出的多个森林组成的深度树集成算法。该模型主要包括两个部分:多粒度扫描(Multi-Grained Scanning)部分和级联森林(Cascade Forest)部分[6]。模型主要有以下几个方面优势[10]:
(1) 模型级数自动调节,可扩展性强;
(2) 超参数少,且模型对其不敏感;
(3) 有很低的训练消耗,不仅可用在大规模数据集上,还能用在小样本数据集中;
(4) 可以进行并行处理。
1.3.1多粒度扫描模块
受神经网络影响,gcForest模型通过多粒度扫描流程处理数据特征关系,以增强级联森林部分的性能[6]。该模块使用不同尺寸的滑动窗口进行扫描,首先对原始的输入数据提取局部特征,产生一系列局部低维特征向量,然后经过森林的集合(随机森林和完全随机森林)训练出类向量[5]。例如,对于有c个类别的分类问题,一维特征向量长度为n,长度是m的窗口每次滑动一个单位长度,产生n-m+1个m维特征向量的数据子集,经过一个随机森林和一个完全随机森林后产生长度为2c(n-m+1)的类向量;对于一个n×n的图像数据,m×m大小的窗口一次滑一个单位尺寸,将产生(n-m+1)2个m×m的特征向量数据子集,经过一个随机森林和完全随机森林后将变成2c(n-m+1)2的类特征向量。将这些特征向量与初始样本特征组合起来,输入后面级联森林中[11]。深度森林模型的多粒度扫描模块如图1所示。
图1 深度森林模型的多粒度扫描模块
1.3.2级联森林模块
级联森林部分是一个通过加入新特征来对原始特征进行扩展的结构,由多个级联层组成,每个级联层包括两个随机森林和两个完全随机森林,如图2所示。原始特征经过每个级联层后的输出与原特征组合成扩展后的特征作为下一个级联层的输入[6]。该模型在一级结束后做一个分类性能的测试,然后继续生成下一级,当扩展一个新的级联层后,将整个模型的性能在验证集中进行测试,若没有显著的分类性能增益,训练过程终止[11],级联层数就确定了。级联结构增加了模型的深度而不引入额外的参数,通过评估每层的性能自适应地确定级联层的数量,因此超参数较少,而且超参数设定具有很好的鲁棒性。
图2 深度森林模型的级联模块
原始深度森林模型的多粒度扫描部分对原始输入特征进行变换以加强特征表达能力,通过滑动窗口来扫描初始输入特征。用窗口滑动提取的实体分别训练一个随机森林与一个完全随机树森林,然后将这两种森林输出的类特征向量组合为初始输入特征的转换特征向量。
多粒度扫描部分处理空间上相关联的特征(如图像匹配数据、语音识别数据等)时具有明显的效果,但在空间上无相关的特征数据(如疾病判别、文本分类等)的应用中就可能丢失一些重要信息[10]。原因是多粒度扫描处理空间无关联特征时在某种程度上降低了两端(第一个与滑动的最后一组)特征重要性。多粒度扫描时,首个特征和滑动窗口滑到的最后一组特征都只被扫描了一次,即:这些特征都仅被利用了一次,如果这些特征的重要性比较大,该模块则无法有效对这些重要特征进行利用。
针对这一特征利用不均等性的问题,本文做相应的改进:假设有一个400维的向量,利用大小为100的滑动窗口,滑动步长为1,则301次滑动后获得301个100维类向量,在此基础上加入一组100维的类向量,即有302组100维特征向量,其中第302组100维特征的前99个特征是第301组的后99个特征,最后一个特征为原始特征的第一个特征,这样第一个与最后一组的后99个特征就有与其他特征均等的利用机会,所有特征具有相同的重要度,因此不会丢失重要特征信息,从而可以将原始特征信息均等地传输到随机森林与完全随机森林部分。
深度森林原始模型的一些缺点可能会限制其在生物学基因数据集上的效果:集合中的每个森林对最终预测都有相同的贡献,在学习过程中未考虑拟合质量。在小规模数据中模型的最终预测可能受到低质量森林投票结果的影响。因此,基于这种新型的深度结构算法,本文使用改进的级联结构做逐层的表征学习,增强特征表达能力。
原始深度森林模型中级联部分包含的随机森林和完全随机森林都是决策树的集合,均是由随机选择一个特征在决策树的各节点来分割,树不断生长,每个决策树输出一个类向量,最后随机森林组合所有决策树的投票结果后取平均值,得到森林整体的分类结果。本文的级联网络中各层使用两个随机森林和两个完全随机森林,两种森林均由500个决策树以及完全随机决策树构成。每个决策树决策过程[12]如图3所示,假定有三个类,n个决策树,每个决策树将确定一个三维类向量,然后取n个三维类向量的平均值,最后得到最大值对应的类别作为决策树最终的分类结果。
图3 随机森林集成决策树生成类向量
随机森林中的子树是在整体特征中随机选取的部分特征,因此这些决策树彼此不同,并且各随机森林也有各自的多样性。那么,选取合适的判别特征来构建决策树的分裂点非常重要。然而在原始模型的级联层中,每个森林对最终预测结果的贡献是相同的,在学习过程中未考虑各自的拟合质量,忽略了一些重要特征,因此可能导致在小规模数据集中的模型整体性能对森林数量较为敏感。本文改进时考虑到随机森林在作特征选择时,能够隐含地提供分类过程中的特征相对重要性排序列表,从而新模型基于级联森林模块进行如下的改进:
(1) 选取各层中每个森林的前k个重要特征;
(2) 分别计算各森林这k个特征的标准差作为一个新特征;
(3) 将这些新特征与该层输出的类分布矢量以及原始特征结合起来;
(4) 将结合后的特征作为下一层的输入。
上述过程通过考虑模型中各森林对最终分类结果的不同影响,以新特征的形式加入到级联森林模块中,从而在层间传输高质量的判别特征,达到提升分类性能的目的。
对于深度神经网络模型,网络的层数往往比层中神经元的个数对整体结构影响更大,基于这种思想,本文采用级联层展开的结构,在标准深度森林模型的级联层中使用子层级联的方法,对级联森林各层进行分子层的改进。将每个级联层改为两个子层级联的形式,原来各层所包含的两个随机森林、两个完全随机森林平均地放在两子层中,即每个子层包含两种森林各一个,如图4所示。这种分层监督学习的方法能够获得更精确的分类特征向量,该结构能够进行并行化计算,增加模型训练机会,有明显的效率和性能优势。
图4 改进模型级联部分结构
综合以上三个方面,本文提出的TBDForest模型整体结构如图5所示。假设输入的原始数据是400维,在多粒度扫描模块中分别使用大小为100、200、300的滑块进行滑动,得到302、202、102个100维、200维、300维的数据特征。将这些特征输入到一个随机森林与一个完全随机森林的级联中。假设有两种类别,那么,每个100维的特征向量被变换为两维的类向量,也就得到一个604+604、404+404、204+204的概率分布,将这些概率向量组合起来就得到2 424维的数据特征向量。完成了多粒度扫描过程后将得到的2 424维数据输入改进的级联结构中。假设选取每个森林的前三个重要特征(k的值为3)来提取偏差特征。第一个子层中的每个森林输出各自的类分布以及标准偏差特征向量,然后与该子层的输入特征组合在一起,第一子层就输出2 426维特征向量,作为训练数据输入下一子层,第二个子层重复第一个子层的过程,最后输出两个子层的类分布和偏差特征作为级联部分第一层的输出。以后的各层依次重复上述过程,直到模型的性能验证结果表明可以终止级联层。
图5 TBDForest模型的整体结构
为检验TBDForest算法对于基因表达小样本数据集的适用性,本文结合5个数据集使用Python语言来实现特征选择与分类实验。实验使用十折交叉验证方法,模型训练前将数据随机划分成10份,每次取9份来用于分类模型的训练,留下1份数据用来检测模型性能,每次做十轮实验,十轮结果的平均值就是最终分类的结果[10]。本文对各数据集先特征选择,之后进行分类性能测试。
本实验下载了EBI、NCBI数据库中的五组高维基因表达DNA微阵列数据来验证改进模型的性能。这五种疾病数据的样本量均较小。数据的基本信息如表1所示,Gravier和West是乳腺癌数据、Pomeroy是中枢神经系统疾病数据、Alon是结肠癌数据、Gordon是肺癌数据,这些数据用于检测癌症亚型或患病与否的分类[13]。
表1 数据集的基本信息表
实验结果综合考虑准确率(Accuracy)、精确度(Precision)、召回率(Recall)、F-1 Score这四个分类方法中最常用的分类性能评价指标[14]。这些指标建立在混淆矩阵的基础上,如表2所示。
表2 混淆矩阵
准确率(Accuracy)[14]即分类准确的样本数量与样本总量的比值。定义如下:
(2)
精确度(Precision)即查准率;召回率(Recall)即查全率[14]。定义如下:
(3)
(4)
F-1 Score即一种综合考虑查准率和查全率的分类评价指标,其中查全率与查准率权重相同[15]。定义如下:
(5)
基因表达数据样本小,特征维度高,直接通过模型分类会导致效果不理想并且缺乏稳定性,如表3所示。表中五个数据集中gcForest和TBDForest模型分类准确率相对较好,但是整体分类准确率不高。因此对五个数据集分别采用Lasso算法进行特征选择,然后将选择后的特征数据使用SVM、RF、XGBoost、Adaboost、gcForest、TBDForest进行分类测试以及结果比较。数据经过Lasso算法挑选的重要特征数量基本信息如表4所示。
表3 特征选择前五个数据集在六种分类方法上的Accuracy对比值 %
表4 特征选择后的数据集的基本信息表
表5是五个数据集在几种分类方法上的Accuracy值,可以看出DBForest模型与传统方法SVM、RF、gcForest、XGBoost、Adboost相比具有更高的准确性。图6为六种算法在五个数据集上的Precision、Recall、F-1 Score指标,从图6(a)图能够直观地看出,在Gravier数据集上SVM、gcForest、TBDForest模型的三个指标相当,本文的模型略高,而RF与XGBoost、Adboost两种集成分类模型效果并不是很好。图6(b)Pomeroy数据集上的指标结果显示SVM与TBDForest几乎可以达到100%的分类性能。图6(c)West数据集中RF、gcForest则有比较高的指标值,改进的模型依然处于领先的效果。图6(d)的Alon数据集上TBDForest效果较为明显,优于其他几种方法。图6(e)中对于Gordon数据集,六种方法相差并不大,都能取得良好的分类结果。综上所述,通过Accuracy、Precision、Recall、F-1 Score指标对比,TBDForest模型在Accuracy、Precision、Recall、F-1 Score方面均优于其他五种方法,可见本文对模型的改进有效地增强分类性能,有良好的适用性。原因是一方面其充分考虑了特征重要性,另一方面子层增加了训练机会。
表5 特征选择后五个数据集在六种分类方法上的Accuracy对比值 %
(a) Gravier
(b) Pomeroy
(c) West
(d) Alon
(e) Gordon图6 六种分类模型的对比图
针对目前应用比较广泛的一些分类模型算法对基因表达小样本数据分类时的不足,本文进行分类模型的优化,提出基于深度森林的改进模型TBDForest,该模型从三个方面进行改进:(1) 采用特征均等性利用的多粒度扫描模块进行特征变换;(2) 考虑每个森林的拟合质量,通过加入标准差特征向量来改善类分布问题;(3) 在每个级联层采用子层结构,增加样本训练机会,进一步提升分类准确性。经过实验验证,改进的模型在基因表达数据小样本数据集上取得相对较高的Accuracy、Precision、Recall、F-1 Score值,对于小样本高维度数据有比较好的分类性能。未来将着重考虑将模型应用到各种类型的数据中;考虑所集成森林的多样性;对特征选择方法进行优化,减小模型算法的计算消耗,更好地避免“维度灾难”,提高稳定性。