周鋼,郭福亮
(海軍工程大學電子工程學院,湖北武漢430033)
隨著移動互聯(lián)網以及物聯(lián)網技術的不斷深入應用,各類信息數據以極快速度產生和累積,大數據時代已經來臨[1]。大數據備受關注,核心在于挖掘出新的有價值信息[2]。數據挖掘是從已知數據集合中發(fā)現各種模型、概要和導出值的過程和方法,也是從大數據中挖掘價值信息的核心手段[3]。
集成學習(Ensemble Learning)是一種重要的數據挖掘方法,主要利用多個學習器的集成來解決問題,能夠顯著提高學習系統(tǒng)的泛化能力[4]。Elder在文獻[5]中研究表明分類器集成技術優(yōu)于簡單的平均法和單一模型,且在近年來多屆KDD和CIKM Cup中取得優(yōu)秀成績。集成學習也被認為是未來機器學習的重要研究方向之一,是提高學習精度的重要手段[6]。
在介紹集成學習的基本概念基礎上,研究了當前集成學習方法的評價標準,分析了常用的分類器集成學習算法和結果整合集成方法,對集成學習方法有綜合充分了解。
集成學習是數據挖掘算法的一種,本質上是將多個弱分類器通過有效融合集成為一個強分類器,提高分類精度。數據挖掘包括分類,聚類,關聯(lián)等多種方法[7],集成學習主要針對分類和回歸作為基分類器,兩者區(qū)別主要在于預測輸出值是否為離散值,本文中主要針對分類器的集成方法進行研究。
分類器是一種利用已知的觀察數據(測試數據或實驗數據)構建的分類模型,并以此來預測未知類別的對象所屬類別。常見的基分類器包括線性回歸,決策樹,基于關聯(lián)規(guī)則的分類,貝葉斯信念網絡,向后傳播,支持向量機(SVM)等方法,其中包括ID3及其改進算法C4.5,分類回歸樹CART,基于頻繁模式的CBA、CMAR、CPAR 等算法[8,9]。
集成學習是建立基分類器的基礎上進行有效融合集成形成強分類器,其中包括兩個主要工作,一是基分類器的構建,二是多分類器的融合集成方法。集成學習算法的一般實現框架如圖1所示。
圖1 構建集成學習方法的一般框架
集成學習的兩個主要工作一般可以劃分到訓練和檢驗兩個階段。訓練階段是訓練形成集成模型,主要針對訓練樣本數據集,劃分多個弱分類器按照一定的融合集成規(guī)則形成一個強分類器;檢驗階段是驗證調整集成模型,主要針對測試樣本數據集,對多個弱分類器的預測結果按照一定的集成整合規(guī)則形成集成預測結果。其中,多分類器融合的集成模型是我們研究的重點。
集成學習方法按照基分類器的類型異同可以分為同態(tài)集成學習和異態(tài)集成學習,同態(tài)集成學習包括決策樹集成和人工神經網絡集成等,包括同態(tài)模型的集成包括統(tǒng)一融合、線性融合和堆融合方式,stacking算法是堆融合的典型方法,異態(tài)集成學習包括疊加法(stacking算法)和元學習法(Meta Learning)[10];根據基分類器的生成順序可以分為串行組合,并行組合和混合拓撲組合,經典的集成學習方法Boosting以及其改進的AdaBoosting、GDBT(Gradient Boosting Decision Tree)都是串行組合[11],Bagging以及在此基礎上的隨機森林算法則是并行組合[12],兩階段集成學習TPEL是一種混合拓撲組合[13];根據基分類器的學習基礎分為基于數據和基于屬性的集成方法,其中Bagging、AdaBoosting都是基于數據的集成方法[14]。
Dietterich在文獻[4]中從統(tǒng)計、計算和表示三個層面闡述了集成學習的相對于單一學習器的優(yōu)越性。本節(jié)重點分析集成學習模型的預測誤差計算方法,并分析有效控制誤差的途徑。
對于單一分類器,其性能評價指標主要有訓練精度、查準率、查全率、F-Measure值等[15],集成學習方法通過對基分類器(性能較弱)通過集成融合形成強分類器,假設n個相互獨立基分類器的查準率為p,那么集成學習模型的準確度為:
其中,第1到第i個基分類器作為樣本錯誤檢驗模型。根據公式1可以發(fā)現,集成學習準確率pensemble提升的基本條件在于:一是各基分類器的相關性低;二是各基分類器的查準率p高于0.5;三是有一定數量的基分類器。因此,提升基分類器的差異化有助于提升集成學習的預測精度(MSE,Mean Squared Error)[16]。
同時,通過基分類器數量的提升,集成學習的查準率達到較高水平。當基分類器數量較大時能夠在樣本訓練數據集上得到很高的查準率,但是會造成過擬化,降低集成模型泛化水平,即在測試樣本數據上反而有較低的查準率。
因此,對于集成學習方法,一般采用偏差-方差分解分析學習方法的誤差[17]。假設存在我們需要預測的目標函數為:
其中,ε為數據對象的噪聲數據誤差,是系統(tǒng)自帶誤差,與預測模型選擇無關,一般認為服從正態(tài)分布,即 ε ~ N(0,σ2)。
對集成學習的強分類器對目標數據集的評價擬合為:
那么針對數據集D的某一個x=xi,那么在該點的誤差即為:
可以發(fā)現集成誤差由三部分組成,第一個為系統(tǒng)誤差;第二個為系統(tǒng)的平方偏差,是模型預測值與真實值的差值平方,由于預測(分類)系統(tǒng)中真實值無法獲取,該誤差是一個有用的理論概念;第三個是方差,體現了各基分類器預測值在均值周圍的波動程度。
為提高預測(分類)精度,降低誤差,集成學習一般在降低平方偏差和模型方差兩個方面開展工作。但是,一般來說,簡單模型具有高偏差和低方差,而復雜模型傾向于具有低偏差和高方差[18]。
以基分類器為決策樹的集成學習為例,以集成學習的決策樹數量M表征集成學習的復雜度,可以發(fā)現集成模型的預測誤差與系統(tǒng)復雜度,以集成簡單決策樹數量M擬合,其相關關系如圖2所示[19]。
圖2 預測誤差(MSE)-模型復雜度關系圖
根據公式1可以知道隨著模型復雜度的提升,即弱分類器數量增加,集成模型的準確度即系統(tǒng)的偏差會降低,但同時系統(tǒng)間基分類器預測值間的方差將會增大,導致系統(tǒng)的預測誤差會提升。在實際集成學習中,模型復雜度過高會導致過擬化,即模型在訓練樣本中有很好預測精度,在應用數據或訓練樣本中表現一般,如果模型復雜度過低則會導致欠擬化[20]。圖3分析了集成模型在訓練樣本和測試樣本中的預測誤差。
集成學習為了降低系統(tǒng)的預測誤差,提高預測精度,增強泛化能力,一般在控制集成模型復雜度上下功夫,主要采用正則化的方法[21]。該方法采用隱形或顯性的考慮數據的有限性、不完整性和局限性,借此來構建模型的方差,借鑒了數學中解決求解反問題中的不適定問題的模型修正方法[22]。
圖3 預測誤差-集成復雜度在訓練和測試樣本中區(qū)別
因此,為提高集成學習預測精度,集成學習方法在集成多個弱分類器基礎上,主要從控制集成模型復雜度和提升基分類器的差異化兩個方面開展研究工作。
對于控制集成模型復雜度,在分類問題中,通過屬性選擇或剪枝方法控制分類樹的規(guī)模,典型方法如CART,同時控制基分類器數量,提升基分類器間的差異化;對于回歸問題,則是通過控制參數參與度,即各參數系統(tǒng)比重來實現,常見方法包括約束函數,魯棒損失函數等,典型算法如前向階梯線性回歸算法;對于提升基分類器的差異化,一般通過對訓練數據集的重采樣,參數設置,特征空間和引入隨機擾動四個方面開展工作。
集成學習方法源于1989年Kearns提出的PAC(Probably Approximately Correct)學習模型,提出了弱學習器和強學習器,進而構建了一個多項式級的學習器[23]。集成學習方法發(fā)展至今,形成了Breiman提出的Bagging(Bootstrap Aggregating)算法[24]和Robert提出的算法[25]以及在Boosting基礎上 Freund和 Schapire提出了 AdaBoost(Adaptive Boosting)算法[26]。Bagging和 Boosting 算法都是基于訓練數據集的重采樣方法,Bagging算法是并行集成,而Boosting是串行提升,都是使用輸入數據的不同訓練子集和同樣的學習方法生成不同模型[27]。
Bagging算法是通過引導程序使用一個訓練集的多個版本,即放回抽樣,多每一個數據集都來訓練一個不同的模型,在對訓練模型通過整合輸出形成一個最終的預測結果?;舅惴ㄈ缦隆?/p>
集成預測結果hensemble(x)=f(hi(x))=y其中,y為集成預測結果,是對各基分類器Li預測結果hi(x)的整合,整合函數為f(x)?;诸惼鞯膫€數N與分類種數呈正比關系。每一個Li是對訓練樣本T進行放回采樣數據集的采用同一訓練模型的基分類器。
為了控制集成學習模型復雜度,一般采用對分類決策樹的屬性進行篩選的方法,對不重要、不相關的分支進行裁剪。
為了提升集成模型的差異化,由于理論上每一個重抽樣訓練樣本數據集Ti中有較高的重復率,所以Bagging算法的基分類器L一般采用不穩(wěn)定算法,即調整訓練樣本部分的數據后,分類器Li變化較大,從而提升各基分類器的差異性。
Boosting算法也是一種基于數據集重抽樣算法,與Bagging算法主要區(qū)別在于需要動態(tài)調整訓練樣本中各數據權重,每一次迭代增加不能正確學習樣本權重,降低能正確學習樣本權重,從而提升在整個訓練樣本數據集上的學習正確率?;舅惴ㄈ缦隆?/p>
集成預測結果hensemble(x)=f(hi(x))=y與Bagging算法不同,Boosting算法第一次構建基分類器給每一個訓練數據樣本賦予動態(tài)權重,加強分類錯誤樣本權重。在下一次基分類器采用新的樣本權重進行隨機抽樣構建新的基分類器并以此類推構建多個基分類器,并形成一個精度較高的強分類器。
為了控制集成學習模型復雜度,通過動態(tài)權重降低了高精度分類樣本的權重,有效控制了最終分類器的樣本數量,從而控制了集成學習模型復雜度。
為了提升集成模型的差異化,Boosting算法是一個逐步遞進的方法,每一個分類器都是前一個的通過調整樣本權重的改進模型。
Boosting算法問題在于更多關注不能正確分類樣本數據,對于邊界樣本會導致權重失衡,產生“退化問題”。在Boosting基礎上使用指數權重產生用于二值分類的AdaBoost算法[28,29]。
隨著神經網絡等新機器學習方法的發(fā)展,以及著眼Bagging和Boosting系列算法的改進提升,產生了很多新的具有代表性的集成學習方法,主要算法包括神經網絡集成算法,隨機森林算法,選擇性集成算法等。
Hansen和Salamon提出了神經網絡集成方法(Neural Network Ensemble)[30]。通過使用多個基礎神經網絡作為基分類器對同一問題進行學習,集成分類器的輸出值得到精確化的預測值。其關鍵點在于一是使用神經網絡作為基分類器,二是對基分類器權重采用反向傳播算法訓練。當神經網絡為單隱藏層神經網絡時,構建極限學習機,并基于此開展極限學習機集成方法[31]。
2001年Breiman提出了一種用于分類預測的集成學習算法—隨機森林(Random forests)[32]。隨機森林算法集成多個從訓練樣本數據中重抽樣非裁剪決策樹,決策樹構建中類似C4.5決策樹構建方法根據增益最大挑選分裂屬性,最后對每個決策樹進行同權重投票實現預測結果集成。
Bagging,Boosting等算法都是對所有基分類器進行集成,文獻[33]發(fā)現選擇部分基分類器進行集成能夠有效控制過擬化,提升集成模型泛化能力。2002年,我國學者周志華提出了“選擇性集成”概念[34],將訓練得到的基分類器中精度不高,誤差過大的分類器從集成模型中剔除,只選擇在訓練樣本中表現較好的基分類器進行集成。
典型集成學習描述了如何通過訓練樣本數據得到基分類器,本節(jié)關注集成學習的檢驗階段,即如何將各基分類器的預測結果進行有效整合集成形成集成學習預測結果并進行檢驗?;诸惼鞯恼戏绞娇梢苑譃槿齻€層次,即決策層次輸出,排序層次輸出和度量層次輸出[35]。對于基分類器結果集成屬于決策層次集成,一般包括兩大類集成方法,即投票方法(Voting)和疊加方法(Stacking)[36]。
投票方法是對各基分類器的分類結果按照某種原則進行投票表決,得到集成預測分類結果,投票方法可分為普通投票和貝葉斯投票兩種。
普通投票方法可以分為均等投票和賦權投票兩類,賦權投票是給投票專家賦予不同權重,均等投票則是以相同權重進行投票。根據應用背景需求,按投票原則又可以分為一票否決,一致表決,大數原則和閥值表決等[35]。對于回歸問題,可以通過平均值,加權求和,中位數,最大數等方式進行整合[37]。
貝葉斯投票是根據每個基分類器的歷史分類表現通過貝葉斯定理賦予不同的權重,根據各基分類器的權重進行投票[38]。由于不能覆蓋各基分類器的所有樣本空間,且不能正確給出各基分類器的先驗概率,貝葉斯投票的效能不及普通投票方式[39]。
Stacking算法是1992年Worlpert提出的stacked Generalization的學習模型,對基分類器的學習結果進行再集成得到集成模型預測結果[40]。采用Leave-One-Out的交叉驗證(CV,Cross Validation)方法訓練基分類器,將各基分類器的訓練結果作為強分類器的輸入訓練實例,訓練學習得到最終預測結果。
Stacking算法既能集成各基分類器的訓練結果,也能組合各種可能決定分類的相關信息,因此普遍認為其性能優(yōu)于貝葉斯投票方法[41]。
集成學習被認為是當前數據挖掘、機器學習中提升預測精度的重要方法。在介紹集成學習概念、評價標準的基礎上,將集成學習劃分為基分類器的構建和集成兩個階段,從偏差-方差分解角度,分析集成學習的預測精度主要是通過控制集成模型復雜度和各基分類器差異度實現,研究討論了集成學習的模型構建階段的經典算法Bagging、Boosting等,同時分析研究了分類結果集成的普通投票和Stacking方法。對于掌握集成學習的一般步驟、精度控制、經典方法以及結果集成整合等有一定幫助。