採用集成學習算法提高分類器的準確性

原文鏈接:http://www.wangxianfeng.name/2011/08/ensemble-method-to-improve-the-accuracy-of-the-classifier/

傳統的分類方法是在一個由各種可能的函數構成的空間中尋找一個最接近實際分類函數的分類器。這些單個的分類器模型主要有決策樹、人工神經網絡、樸素貝葉斯分類器等等。

可以通過聚集多個分類器的預測結果提高分類器的分類準確率,這一方法稱爲集成(Ensemble)學習或分類器組合(Classifier Combination),該方法由訓練數據構建一組基分類器(Base Classifier),然後通過對每個基分類器的預測進行投票來進行分類。

本文首先介紹集成學習算法的基本思想、前提條件,進而討論集成學習涉及的問題:基本分類器之間的關係、生成基本分類器的方法、基本分類器分類結果的整合,最後對常用的集成學習進行了簡單比較。

集成學習的基本思想

集成學習的思路是在對新的實例進行分類的時候,把若干個單個分類器集成起來,通過對多個分類器的分類結果進行某種組合來決定最終的分類,以取得比單個分類器更好的性能。如果把單個分類器比作一個決策者的話,集成學習的方法就相當於多個決策者共同進行一項決策。

下圖表示了集成學習的基本思想,圖中的集成分類器包括了t個單一的分類器,對於同樣的輸入,t分類器分別給出各自的輸出,然後這些輸出通過整合以後得到集成分類器整體的輸出結果作爲最終分類。

集成分類器

集成學習有效的前提條件

雖然集成學習可能取得更好的學習效果,但是並不是所有的集成方式都有效的,集成學習有效需要滿足以下兩個前提條件:

  • 每個基分類器的錯誤率都應當低於0.5,否則集成的結果反而會提高錯誤率。

  • 每個基分類器應該儘可能相互獨立,這是因爲如果每個基分類器分類結果差不多,則集成後的分類器整體和單個分類器做出的決策實際上沒有什麼差異。

基本分類器之間的關係

按照基分類器之間的種類關係可以把集成學習方法劃分爲異態集成學習和同態集成學習兩種:

  • 異態集成學習:使用各種不同的分類器進行集成,異態集成學習的兩個主要代表是疊加法(Stack Generalization)和元學習法(Meta Learning)。

  • 同態集成學習:集成的基本分類器都是同一種分類器,只是這些基本分類器之間的參數有所不同。同態集成的分類器包括有樸素貝葉斯集成、決策樹集成、人工神經網絡集成、K-近鄰集成等。

生成多個不同基分類器的方法

  • 處理訓練數據集的方法:Bagging

袋裝(Bagging)又稱自助聚集(Bootstrap AGGregatING)是Breiman在1996年提出的,它是一種根據均勻概率分佈從數據集中重複抽樣(有放回)的技術,它爲每一個基分類器都構造出一個跟訓練集同樣大小但各不相同的訓練集,從而訓練出不同的基本分類器。

由於抽樣過程是有放回的,因此一個樣本可能在同一個訓練數據集中出現多次,而其他一些卻可能忽略。理論上,自助樣本Di大約包含63.2%的原訓練數據,因爲每一個樣本抽到Di的概率爲1 – (1-1/N)N,如果N充分大,這個概率將收斂於1 – 1/e,即大約0.632.

由於Bagging算法本身的特點,使得Bagging算法非常適合用來並行訓練多個基本分類器,這也是Bagging算法的一大優勢。同時,由於每個樣本被選中的概率都相同,Bagging並不側重於訓練數據集中的任何特定樣本,所以對於噪聲數據,Bagging不太受過分擬合的影響。

  • 處理訓練數據集方法:Boosting

Boosting最先由Schapire於1990年提出,其思想是通過一個迭代的過程來自適應訓練樣本的分佈,使得基分類器聚焦在那些很難分類正確的樣本上。這個過程就好像一個人背英語單詞一樣,首先第一遍背完以後有一些容易記住的單詞就記住了,還有一些不容易記住的,則第二遍的時候對那些不容易記住的單詞多看幾眼,第三遍又對第二遍還記不住的單詞再多看幾眼……

與Bagging不同,具體實施的時候Boosting方法是這樣進行的:首先給每一個訓練樣例賦予相同的權重,然後訓練第一個基本分類器並用它來對訓練集進行測試,對於那些分類錯誤的測試樣例提高其權重,然後用調整後的帶權訓練集訓練第二個基本分類器,然後重複這個過程直到最後得到一個足夠好的學習器。最常用的Boosting算法,是Freund和Schapire於1997年提出的AdaBoost(Adaptive Boosting)算法。

與Bagging對於噪聲容忍程度比較好不同,Boosting傾向於那些被錯誤分類的樣本,很容易受過分擬合的影響。與Bagging對訓練集的選擇是隨機的、各輪訓練集之間相互獨立不同,Boosting對訓練集的選擇不是獨立的,各輪訓練集的選擇與前面各輪的學習結果有關,各個預測函數只能順序生成。對於象神經網絡這樣極爲耗時的學習方法,Boosting訓練模型將需要大量的時間開銷。

  1. 處理訓練數據集的方法:交叉驗證

交叉驗證法來自於K-折交叉驗證(K-fold Cross Validation)的測試方法,屬於無放回抽抽樣。K-折交叉驗證的思想是把整個訓練集劃分爲互不相交的K等份,然後每次選定一份作爲測試集,其他的K-1份作爲訓練集來進行學習,用這種思路可以訓練出K個不同的基本分類器。跟Bagging一樣,這種集成方法也適用於多個基本分類器並行進行訓練。

  1. 處理輸入特徵的方法

該方法通過選擇輸入特徵的子集來形成每個訓練集。子集可以隨機選擇,也可以根據領域專家的建議選擇。相關的研究表明,對那些含有大量冗餘特徵的數據集,該方法的性能非常好。隨機森林(Random Forest)就是採用處理輸入特徵的集成學習方法,它用決策樹作爲基分類器。

  1. 處理類標號的方法

該方法是用於類別數目足夠多的情況,通過將類標號隨機劃分爲兩個不相交的子集A0和A1,類標號屬於子集A0的訓練樣本指派到類0,而那些類標號爲A1的訓練樣本被指派到類1。然後,使用重新標記過的數據訓練得到一個基分類器,重複重新標記和構建基分類器多次,就得到一組基分類器。當遇到一個檢驗樣本時,使用每個基分類器Ci預測它的類標號。如果檢驗樣本被預測爲0/1,則所有屬於A0/A1的類都得到一票。最後統計選票,將檢驗樣本的指派到得票最高的類。

  1. 處理學習算法的方法

許多分類算法在同一訓練數據集上多次執行的算法可能得到不同的模型。如對於神經網絡的拓撲結構和各個神經元之間聯繫的初始權值的設定,對於決策樹可以通過在樹的生成過程中注入隨機性因素(結點劃分最好的k個最好屬性中隨機選擇一個)。

基本分類器分類結果的整合

現在我們有多個基本分類器的分類結果了,但是怎麼根據這麼多的分類結果來給出最終決策呢?基本分類器的整合方式歸納爲三個層次:

抽象層次:每個基本分類器只提供一個目標分類或者目標分類子集;

排位層次:每個基本分類器提供一個可能的目標分類列表,其中的目標分類按照可能性大小排列;

度量層次:每個基本分類不僅提供分類結果,還提供每種分類結果的可能性。

本文中我們主要介紹抽象層次的整合方式,我們把這種整合方式歸爲四類,並分別進行說明:

  • 簡單投票法

它的基本思想是多個基本分類器都進行分類預測,然後根據分類結果用某種投票的原則進行投票表決,按照投票原則的不同投票法可以有一票否決、一致表決、少數服從多數、閾值表決等等。

一票否決:當且僅當所有分類器都把實例x劃分到類Ci的時候才把x劃分到類Ci,否則拒絕該實例;

一致表決:當且僅當沒有分類器反對把x劃分到類Ci的時候才把x劃分到類Ci;

少數服從多數:讓各個基本分類器進行投票(加權或者不加權),得票數多的那個分類Ci作爲對應實例x的最終類別;

閾值表決:統計出把實例x劃分爲Ci和不劃分爲Ci的分類器數目,當這兩者比例超過某個閾值的時候把x劃分到類Ci;

此外,對於連續目標變量的分類問題,還可以採用平均取值、加權求和、中位數、最大值等等方式進行整合。

  • 貝葉斯投票法

簡單投票法假設每個基本分類器都是平等的,沒有分類能力之間的差別,但是這種假設並不總是合適的,在實際生活中,我們聽取一個人的意見的時候會考慮到這個人過去的意見是否有用,貝葉斯投票法就是基於這種思想來提出的。貝葉斯投票法是基於每一個基本分類器在過去的分類表現來設定一個權值,然後按照這個權值進行投票,其中每個基本分類器的權值基於貝葉斯定理來進行計算。

雖然理論上貝葉斯投票法在假設空間所有假設的先驗概率都正確的情況下能夠獲得最優的集成效果,但是實際應用中往往不可能窮舉整個假設空間,也不可能準確地給每個假設分配先驗概率,從而使得在實際使用中其他集成方法也會優於貝葉斯投票法。

集成學習方法對比

  • Bagging方法得到的集成分類器幾乎總是比單個分類器效果要好;

  • Boosting方法得到的集成分類器的效果可能明顯優於Bagging方法得到的分類器和單個分類器;

  • 然而對於某些數據集Boosting的結果有可能比單個分類器的性能還低;

  • 使用隨機化人工神經網絡的初始權值來進行集成的方法往往能夠取得和Bagging同樣好的效果;

  • Boosting方法的效果至少有一定程度依賴於數據集,而Bagging方法對數據集的依賴卻沒有那麼明顯。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章