高慧云,陸慧娟,嚴 珂,葉敏超
(中國計量大學信息工程學院,杭州310018)
E-mail:hjlu@cjlu.edu.cn
癌癥是世界上迅速發展的疾病之一,每年有將近一千四百萬人被診斷出患有癌癥[1].對癌癥可靠和準確的診斷是成功治愈癌癥的關鍵,從基因層面對癌癥的診斷能及早發現患者的病情.目前,將機器學習方法應用于癌癥的預測是生物信息學的一個重要研究領域[2],許多機器學習的方法如K近鄰(K-nearest neighbors,KNN)[3]、支持向量機(Support vector machine,SVM)[4]、隨機森林(Random Forest,RF) 等已成功應用于基因表達數據的分析.但微陣列基因表達數據集通常存在高維、小樣本、高噪聲并且類別不平衡等問題[5],這些問題使得對癌癥基因數據的分析變得困難.集成學習是機器學習的一個重要研究方向,目前已廣泛應用于各個研究領域[6].Stacking集成是1992年 Wolpert提出的一種新的集成學習算法[7].相對于 Bagging、Adaboost等其他常見的集成算法,Stacking能夠更靈活地將提供類別輸出的學習器相結合.但Stacking在存在兩個重要的缺陷,即選擇怎樣形式的初級學習器的輸出類型作為次級學習器的輸入,以及如何選擇最佳的次級學習器.對此Ting[8]等人建議使用基學習器的輸出概率作為次級學習器的輸入,并且建議采用多項應回歸模型(Multi-response Linear Regression,MLR)作為該模型的次級學習器.而 ES Lee[9]等人分析了邏輯回歸(Logistic Regression,LR)、決策樹(Decision Tree,DT)、貝葉斯網絡(Naive Bayes Network,NBN)、SVM、神經網絡(Neural Network,NN)等五種分類器作為Stacking的初級學習者和次級學習器時的性能變化,并發現如果以如LR、DT這些較為簡單的學習器作為初級學習器,并且將NN、SVM、NBN等較為復雜的學習器作為次級學習器,Stacking在精度和AUC方面的表現將更加穩健.同時,Stacking集成也成功應用于多個領域,如Ekbal[10]提出了結合特征選擇與Stacking集成的生物醫學實體抽取,使用基于遺傳算法(GA)的特征選擇技術來確定支持向量機(SVM)和條件隨機場(CRF)分類器的最相關的特征集.Ail[11]將Stacking集成用于氨基酸序列對人類乳腺癌的預測,采用NB、KNN、SVM和RF作為初級分類器,然后采用遺傳編程(GP)來開發一個次級學習器.
本文將采用Stacking集成學習對癌癥基因表達數據進行分類研究.其中K近鄰(K-nearest-neighbor,KNN),樸素貝葉斯(nave Bayes,NB)和隨機森林(Random Forest,RF)將作為Stacking集成的初級學習器.KNN是一種簡單有效的機器學習算法[12],其核心思想是任何一個樣本的類通常與其K個最接近樣本的多數類一致.因此,KNN基于最近K個樣本的類標簽來確定類標簽.NB是一種基本的監督學習方法[13].NB是由經典數學理論繼承而來的,具有堅實的數學基礎和穩定的性能.假設變量服從一定的概率分布,根據這些概率分布和觀測數據進行最優決策.這里,由于決策樹泛化性能較差,因此我們采用RF[14]代替決策樹作為Stacking的初級學習器之一.RF是以決策時為基學習器的結合Bagging[15]和隨機子空間[16]集成算法,它的主要思想是訓練一系列決策樹,通過booststrap選擇部分數據集訓練一顆樹,并且樹的每個節點屬性從隨機屬性集合中選擇.
本文提出一種基于差分進化的代價敏感Stacking(DECStacking)集成的基因表達數據分類,采用RF、KNN、NB作為Stacking集成的初級學習器,為防止初級學習器同時將某樣本分錯導致次級學習器繼續分錯,將原始數據集和初級學習器的輸出類概率同時作為次級學習器的輸入.針對癌癥基因表達數據類別不平衡的問題,采用代價敏感的SVM作為次級學習器.并采用差分進化對這些學習器的參數進行優化,以解決Stacking的異質學習器較多,參數難以手動調節的問題.實驗證明,相對于傳統的 Stacking、RF、Adaboost、GBDT 等集成算法,DE-CStacking算法為癌癥基因表達數據提供了一種更有效的分類方法.
Stacking,是 Stacked Generalization的簡稱.Stacking集成的主要思想是采用多個初級學習器對數據集進行訓練,再利用一個次級學習器,也稱為元學習器,對初級學習器的輸出進行學習.Stacking集成的詳細步驟如圖1所示,以5折交叉驗證為例,將數據集分為訓練集和測試集,一個初級學習器的5次訓練集的預測結果在最終將作為次級學習器的訓練集,并且將5次訓練集訓練出來的模型對測試集進行測試,得到的結果將作為次級學習器的測試集.

圖1 Stacking集成的5折交叉驗證的詳細步驟Fig.1 Detailed steps for 5-fold cross-validation of stacking ensemble
現實生活中很多數據都是不平衡的,癌癥基因表達數據也是一種不平衡數據,這種不平衡將導致分類性能較差[17].代價敏感(Cost-Sensitive)技術在訓練過程中加入誤分類代價,假設標簽y={0,1},總樣本數為m+n個,其中標簽為1的樣本有m個,標簽為0的樣本有n個,那么類別為1和類別為0的懲罰項C可分別表示為:

這樣如果某一類樣本越多,那么這一類的懲罰項就越小.
SVM是一種泛化能力較強的監督學習模型[18].將代價敏感帶入SVM,對不同的類分配不同的懲罰系數,少數類被分配到的代價將比多數類要高.因此SVM總的誤分類代價可以被分成兩個表達式,則代價敏感的SVM(Cost-Sensitive SVM,CS-SVM)可表示為:

在該方法中,對SVM軟間隔目標函數進行修正,以分配兩個誤分類代價,C1和C0分別是正、負類實例的懲罰項.w和b分別為最優超平面的參數.
差分進化(Differential evolution,DE)是由 Storn和Price[19]提出的一種簡單有效的進化算法.DE是一種基于群體的隨機搜索方法,用于連續搜索領域的全局優化問題.幾年來,DE在機器學習領域得到了廣泛應用.與遺傳算法不同的是,DE采用差分策略來實現個體之間的變異.具體而言,DE通過在種群中隨機選擇的兩個向量縮放后與加上待變異個體向量Xi產生突變向量Vi:

隨機數 r1,r2,r3∈{1,2,3,...p},縮放因子!>0.
交叉操作是DE中的另一個重要步驟,子代通過向量載體vi和上一代種群向量離散重組獲得:

迭代的最后一步是通過選擇算子選擇下一代中比較好的一個:

通過從種群中隨機選擇兩個個體計算其之間的差異,DE實際上是估計該區域間的梯度(而不是某個點).變異算子可以自適應調整步長和方向,選擇算子的局部指標也快速高效.因此,這些特性可以使DE收斂速度更快,較其他啟發式算法也更穩定.
本文將差分進化對Stacking集成的初級學習器和次級學習器參數進行優化,考慮到癌癥基因數據集是不平衡數據,本文采用實驗結果的AUC(Area Under ROC Curve)值[20]作為DE的適應度函數.DE的總體流程如圖2所示.

圖2 差分進化流程圖Fig.2 Flowchart of differential evolution

圖3 DE-CStacking總體流程圖Fig.3 Flowchart of DE-CStacking
本文采用NB、KNN和RF這三種不同類型的分類器作為初級學習器.針對基因表達數據類別不平衡的問題采用代價敏感的SVM作為次級學習器.在傳統的Stacking集成中是將初級學習器的輸出作為次級學習器的輸入,我們通過實驗發現將原始數據集和初級學習器輸出類的概率同時作為次級學習機的輸出分類效果最好,因此本文將采用原始數據集和初級學習器輸出類的概率同時作為次級學習機的輸出.同時針對Stacking集成中采用多種不同的學習器,其參數較多難以調節的問題,本文采用DE對多個參數進行調節.實驗流程圖3所示.
為證實DE-CStacking算法的有效性,本文從公開的UCI數據集選取乳腺癌Breast、肺癌Lung、卵巢癌Ovarian和前列腺癌prostate四種癌癥基因數據進行仿真實驗.由于存在癌癥基因數據集樣本數小,維度高的問題,在不進行處理的情況下能到達上萬維,因此在對數據進行分析之前要先對數據集進行ReliefF[21]降維,降維后的數據集基本信息如表1所示.
對于不平衡數據,分類精度并不是很好的檢驗算法性能的度量方式.由于基因表達數據是不平衡數據,因此本文以AUC(Area Under ROC Curve)值作為主要的評價指標,AUC值表示的是ROC曲線下的的面積.同時F1值[22]和準確率也將作為評價指標對算法進行評估,如公式(6)-公式(7)所示:

表1 數據集信息表Table 1 Information of gene data sets

其中TP、TN分別為真正例和真反例,n為樣例總數.

表2 不同縮放因子下的AUC值Table 2 AUC values under different mutation rates

表3 不同交叉率下的AUC值Table 3 AUC values under different crossover rates
本文提出的DE-CStacking算法將在乳腺癌Breast、肺癌Lung、卵巢癌Ovarian和前列腺癌Prostate四種癌癥基因數據下采用五折交叉驗證驗證算法的有效性,每個數據集被劃分為五個子集,其中四個被作為訓練數據集,而剩下的被用作驗證數據集.由于該算法采用的DE對Stacking集成的初級學習器和次級學習器的參數進行優化,這里首先要確定DE算法的交叉率和縮放因子.選擇在Breast和Ovarian兩個數據集下進行測試,設交叉率為0.5,種群迭代次數為10,縮放因子在不同值下的AUC值,結果如表2所示.從表2可以看出,當DE的縮放因子為0.3時,DE-CStacking算法的AUC值最高.因此取縮放因子為0.3,種群迭代次數為10,取不同交叉率值進行實驗,實驗結果如表3所示.從表3可以看出,當交叉率為0.5時,DECStacking算法的AUC值最高.因此在以下實驗中將設置DE算法中的縮放因子為0.3,交叉率為0.5.
通過實驗對比,其他對比算法參數設置如下:KNN算法K值為15;RF弱學習器的最大迭代次數為15,決策樹最大深度為8;SVM的懲罰參數為1,選用RBF核函數,gamma值為0.5.在DS-CStacking算法中采用DE算法對初級學習器和次級學習器的參數進行優化,對DE對各個學習器調整的參數分別為:
1)KNN算法的K值;
2)RF算法弱學習器的最大迭代次數,即最大決策樹的個數;
3)RF算法下決策樹的最大深度;
4)SVM的懲罰參數C;
5)SVM的RBF核函數的gamma值.
將DE-CStacking算法與傳統的Stacking算法、利用DE對Stacking的初級學習器和次級學習器的參數進行優化的DE-Stacking、嵌入代價敏感的CStacking,以及以初級學習器的輸出類別作為次級學習器的輸入的DE-CStacking1和以初級學習器的輸出類的概率作為次級學習器的輸入的DECStacking2做對比實驗,實驗結果如表4所示.
從表4可看出,將原始數據集和初級學習器輸出類的概率同時作為次級學習機的輸出的DE-CStacking算法比單獨使用初級學習器的輸出類的概率作為次級學習器的輸入分類效果要好,同時,以初級學習器的輸出類的概率作為次級學習器的輸入總體分類效果要比以初級學習器的輸出類別作為次級學習器的輸入好.

表4 每個數據集在不同Stacking算法下的AUC值Table 4 AUC values for each data set under different stacking algorithms

表5 每個數據集在不同算法下的評價指標Table 5 Evaluation indicators for each data set under different algorithms
將DE-CStacking與傳統的集成算法Adaboost、Bagging、GBDT、RF以及非集成算法SVM做對比實驗,實驗結果如表5所示.從表5可以看出,DE-CStacking算法在各方面都要比其他算法效果好.

圖4 breast數據集下DE不同迭代次數的AUC值Fig.4 AUC values for different iterations of DE under the breast data set

圖5 ovarian數據集下DE不同迭代次數的AUC值Fig.5 AUC values for different iterations of DE under the ovarian data set

圖6 lung數據集下DE不同迭代次數的AUC值Fig.6 AUC values for different iterations of DE under the lung data set

圖7 prostate數據集下DE不同迭代次數的AUC值Fig.7 AUC values for different iterations of DE under the prostate data set

表6 每個數據集在不同算法下的時間對比Table 6 Time comparison of each data set under different algorithms
圖4-圖7是在不同數據集下DE-CStacking算法隨著迭代次數AUC值的曲線變化,可以看出隨著迭代次數的增加逐漸收斂,結果不再波動.
表6是不同數據集下DE-CStacking算法與其他算法的時間比較,可以看DE-CStacking與DE-Stacking算法耗時較長,這是因為DE算法迭代耗時較長.
采用機器學習方法對基因表達數據進行分析是目前生物醫學領域的一個重要研究方向.本文提出一種DE-CStacking集成的基因表達數據分類算法,該算法是建立在傳統的Stacking集成算法基礎上,針對癌癥基因表達數據的類別不平衡的特征,采用嵌入代價敏感的SVM作為Satcking集成的次級分類器.針對Stacking的初級集成是異質的,不同學習器之間的參數難以調節,采本文用DE算法對不同學習器參數進行優化.實驗證明,DE-CStacking算法有效提高了基因表達數據的分類結果.同時,通過實驗我們還得出將原始數據集加入到次級學習器的輸入中比單獨使用初級學習器的輸出效果要好.但是相對于其他算法,DE-CStacking算法耗時相對較長,因此如何加快DE算法收斂速度提高DE-CStacking算法的效率將是我們的進一步研究方向.