機器學習十大算法——集成方法


機器學習十大算法——集成方法

什麼是集成方法

集成方法是先構建一組分類器,然後用各個分類器帶權重的投票來預測新數據的算法。最初的集成方法是貝葉斯平均,但最新的算法包括誤差糾正輸出編碼和提升算法。

​​​​在這裏插入圖片描述

那麼集成模型的原理是什麼,以及它爲什麼比獨立模型的效果好呢?

它們消除了偏置的影響:比如把民主黨的問卷和共和黨的問卷混合,從中得到的將是一個不倫不類的偏中立的信息。

它們能減小預測的方差:多個模型聚合後的預測結果比單一模型的預測結果更穩定。在金融界,這被稱爲是多樣化 —— 多個股票的混合產品波動總是遠小於單個股票的波動。這也解釋了爲何增加訓練數據,模型的效果會變得更好。

它們不容易產生過擬合:如果單個模型不會產生過擬合,那麼將每個模型的預測結果簡單地組合(取均值、加權平均、邏輯迴歸),沒有理由產生過擬合。

集成學習(ensemble learning)更多的是一種組合策略,將多個機器學習模型結合起來,可以稱爲元算法(meta-algorithm)。

面對一個機器學習問題,通常有兩種策略,一種是研發人員嘗試各種模型,選擇其中表現最好的模型做重點調參優化。這種策略類似於奧運會比賽,通過強強競爭來選拔最優的運動員,並逐步提高成績。另一種重要的策略是集各家之長,如同賢明的君主廣泛的聽取衆多謀臣的建議,然後綜合考慮,得到最終決策。後一種策略的核心,是將多個分類器的結果集成爲一個統一的決策。使用這類策略的機器學習方法統稱爲集成學習。其中的每個單獨的分類器稱爲基分類器。

集成學習可以大致分爲兩類:

Boosting:這類方法訓練基分類器時採用串行的方法,各個基分類器之間有依賴。它的基本思路是將基分類器層層疊加,每一層在訓練的時候,對前一層基分類器分錯的樣本,給予更高的權重。測試時,根據各層分類器的結果的加權得到最終結果。
Bagging:這類方法基分類器之間無強依賴,可以並行。其中很著名的算法之一是基於決策樹基分類器的隨機森林(Random Forest)。爲了讓基分類器之間互相獨立,將訓練集分爲若干子集(當訓練樣本數量較少時,子集之間可能有交疊)。

基分類器有時又稱爲弱分類器,因爲基分類器的錯誤率要大於集成後的分類器。基分類器的錯誤,是偏差(Bias)和方差(Variance)兩種錯誤之和。偏差主要是由於分類器的表達能力有限導致的系統性錯誤,表現在訓練誤差不能收斂到一個比較小的值。方差則是由於分類器對於樣本分佈過於敏感,導致在訓練樣本數較少時,產生過擬合。

Boosting方法通過逐步聚焦於基分類器分錯的樣本,減小集成分類器的偏差。Bagging方法則是採取分而治之的策略,通過對訓練樣本多次採樣,並分別訓練出多個不同模型,然後做綜合,來減小集成分類器的方差。假設每個基分類器出錯的概率都是相互獨立的,在某個測試樣本上,用簡單多數的投票方法來集成結果,超過半數基分類器都出錯的概率會小於每個單獨的基分類器的出錯概率。一個Bagging的簡單示例如下圖:
在這裏插入圖片描述

Boosting

Boosting 是一族可將弱學習器提升爲強學習器的算法.這族算法的工作機制類似:先從初始訓練集訓練出一個基學習器,再根據基學習器的表現對訓練樣本分佈進行調整,使得先前基學習器做錯的訓練樣本在後續受到更多關注,然後基於調整後的樣本分佈來訓練下一個基學習器;如此重複進行,直至基學習器數目達到事先指定的值T , 最終將這T 個基學習器進行加權結合.

Boosting算法的典型代表就是Adaboost算法,下圖是Adaboost算法步驟。

在這裏插入圖片描述
Boosting 算法要求基學習器能對特定的數據分佈進行學習,這可通過"重賦權法" (re-weighting)實施,即在訓練過程的每一輪中,根據樣本分佈爲每個訓練樣本重新賦予一個權重.對無法接受帶權樣本的基學習算法,則可通過"重採樣法" (re-sampling)來處理,即在每一輪學習中,根據樣本分佈對訓練集重新進行採樣,再用重採樣而得的樣本集對基學習器進行訓練.

Bagging

Bagging [Breiman, 1996a] 是並行式集成學習方法最著名的代表.從名字即可看出,它直接基於自助採樣法(bootstrap sampling)。給定包含m 個樣本的數據集,我們先隨機取出一個樣本放入採樣集中,再把該樣本放回初始數據集,使得下次採樣時該樣本仍有可能被選中,這樣,經過m次隨機採樣操作,我們得到含m 個樣本的採樣集,初始訓練集中有的樣本在採樣集裏多次出現,有的則從未出現。初始訓練集中約有63.2%的樣本出現在來樣集中。

在這裏插入圖片描述
與標準AdaBoost 只適用於二分類任務不間, Bagging 能不經修改地用於多分類、迴歸等任務.

隨機森林

隨機森林(Random Forest ,簡稱RF) 是Bagging的一個擴展變體.RF在以決策樹爲基學習器構建Bagging 集成的基礎上,進一步在決策樹的訓練過程中引入了隨機屬性選擇.具體來說,傳統決策樹在選擇劃分屬性時是在當前結點的屬性集合(假定有d 個屬性)中選擇一個最優屬性;而在RF 中,對基決策樹的每個結點,先從該結點的屬性集合中隨機選擇一個包含k個屬性的子集,然後再從這個子集中選擇一個最優屬性用於劃分。

隨機森林簡單、容易實現、計算開銷小,令人驚奇的是, 它在很多現實任務中展現出強大的性能,被譽爲"代表集成學習技術水平的方法"可以看出,隨機森林對Bagging 只做了小改動, 但與Bagging 中基學習器的"多樣性"僅通過樣本擾動(通過對初始訓練集採樣)而來不同,隨機森林中基學習器的多樣性不僅來自樣本擾動,還來自屬性擾動,這就使得最終集成的泛化性能可通過個體學習器之間差異度的增加而進一步提升.

隨機森林的訓練效率常優於Bagging,因爲在個體決策樹的構建過程中, Bagging使用的是" 確定型" 決策樹?在選擇劃分屬性時要對結點的所有屬性進行考察,而隨機森林使用的" 隨機型"決策樹則只需考察-個屬性子集。

集成方法的結合策略

平均法

平均法又分爲簡單平均法和加權平均法。

簡單平均法就是求均值。

加權平均法的權重一般是從訓練數據中學習而得,現實任務中的訓練樣本通常不充分或存在噪聲,這將使得學出的權重不完全可靠.尤其是對規模比較大的集成來說,要學習的權重比較多,較容易導致過擬合.因此,實驗和應用均顯示出,加權平均法未必一起優於簡單平均法。一般而言,在個體學習器性能相差較大時宜使用加權平均
法,而在個體學習器性能相近時宜使用簡單平均法。

投票法

投票法常用的有 絕對多數投票法,相對多數投票法和 加權投票法。

在不允許拒絕預測的任務中,絕對多數、相對多數投票法統稱爲"多數投票法"

學習法

當訓練數據很多時,一種更爲強大的結合策略是使用"學習法",即通過Stacking 本身是一種著另一個學習器來進行結合. Stacking 是學習法的典型代表.這裏我們把個體學習器稱爲初級學習器,用於結合的學習器稱爲次級學習器或元學習器(meta-learner)。

stacking算法描述如下:
在這裏插入圖片描述

在訓練階段,次級訓練集是利用初級學習器產生的,若直接用初級學習器的訓練集來產生次級訓練集,則過擬合風險會比較大;因此,一般是通過使用交叉驗證或留一法這樣的方式,用訓練初級學習器未使用的樣本來產生次級學習器的訓練樣本.

次級學習器的輸入屬性表示和次級學習算法對Stacking 集成的泛化性能有很大影響.有研究表明,將初級學習器的輸出類概率作爲次級學習器的輸入屬性,用多響應線性迴歸(Multi-response Linear Regression,簡稱MLR) 作爲次級學習算法效果較好,在MLR 中使用不同的屬性集更佳。

貝葉斯模型平均(Bayes Model Averaging,簡稱BMA)基於後驗概率來爲不同模型賦予權重7 可視爲加權平均法的一種特殊實現. 對Stacking 和BMA 進行了比較.理論上來說?若數據生成模型怡在當前考慮的模型中,且數據噪聲很少,則BMA 不差於Stacking; 然而,在現實應用中無法確保數據生成模型一定在當前考慮的模型中,甚至可能難以用當前考慮的模型來進行近似,因此, Stacking 通常優於BMA,因爲其魯棒性比BMA 更好,而且BMA 對模型近似誤差非常敏感。

集成放法的多樣性

誤差-分歧分解

個體學習器準確性越高、多樣性越大,則集成越好.上面這個分析首先由[Krogh and Vedelsby, 1995] 給出,稱爲"誤差一分歧分解" (error-ambiguity decomposition).

多樣性度量

多樣性度量(diversity measure)是用於度量集成中個體分類器的多樣性,即估算個體學習器的多樣化程度.典型做法是考慮個體分類器的兩兩相似/不相似性.

在這裏插入圖片描述
不合度量 = (b+c)/m, 值越大,則多樣性越大

在這裏插入圖片描述

在這裏插入圖片描述

多樣性增強

常見做法主要是對數據樣本、輸入屬性、輸出表示、算法參數進行擾動。

集成學習有哪些基本步驟?

集成學習一般可分爲以下三個步驟:

  1. 找到誤差互相獨立的基分類器;
  2. 訓練基分類器;
  3. 合併基分類器的結果。

合併基分類器的方法有voting和stacking兩種。前者是用投票的方式,將獲得最多選票的結果作爲最終的結果。後者是用串行的方式,把前一個基分類器的結果輸出到下一個分類器,將所有基分類器的輸出結果相加作爲最終的輸出。

以Adaboost爲例,它基分類器的訓練和合並的基本步驟如下:
在這裏插入圖片描述

合併基分類器

在這裏插入圖片描述

另一個例子是GBDT(Gradient Boosted Decision Tree):

GBDT的基本思想是,每一棵樹學的是之前所有樹結論和的殘差,這個殘差就是一個加預測值後能得真實值的累加量。

我們以一個視頻網站的用戶爲例,爲了將廣告匹配到指定年齡性別的用戶,視頻網站需要對每個用戶的性別/年齡做出預測。在這個問題中,每個樣本是一個已知性別/年齡的用戶,而特徵則包括這個人訪問的時長、時段、觀看的視頻的類型等。

例如用戶A的真實年齡是25歲,但第一棵決策樹的預測年齡是22歲,差了3歲,即殘差爲3。那麼在第二棵樹裏我們把A的年齡設爲3歲去學習,如果第二棵樹能把A分到3歲的葉子節點,那兩棵樹的結果相加就可以得到A的真實年齡;如果第二棵樹的結論是5歲,則A仍然存在-2歲的殘差,第三棵樹裏A的年齡就變成-2歲,繼續學。這裏使用殘差繼續學習,就是Gradient Boosting的意義。

集成方法常用的基分類器是什麼?

常用的基分類器是什麼?可否將隨機森林中的基分類器,由決策樹替換爲線性分類器或K-近鄰?請解釋爲什麼?

最常用的基分類器是決策樹,這是因爲:

  1. 決策樹可以較爲方便的將樣本的權重整合到訓練過程中,而不需要使用過採樣的方法來調整樣本權重。
  2. 決策樹的表達能力和泛化能力,可以通過調節樹的層數來做折中。

隨機森林屬於Bagging類的集成學習。Bagging的主要好處是集成後的分類器的方差,比基分類器的方差小。Bagging所採用的基分類器,最好是本身對樣本分佈較爲敏感的(即所謂unstable分類器)。這樣Bagging纔能有用武之地。線性分類器或者K-近鄰都是較爲穩定的分類器,本身方差就不大,所以以它們爲基分類器使用Bagging並不能在原有基分類器的基礎上,獲得更好的表現。甚至可能因爲Bagging的採樣,而導致他們在訓練中更難收斂,而增大了集成分類器的偏差。

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