所謂「眾人拾柴火焰高」,「三個臭皮匠抵個諸葛亮」,整合學習機的泛化能力一般明顯好於單一的學習器。那麼adaboost演算法就是基於這樣的思想產生的。
boosting方法的代表adaboost是乙個以單層決策樹分類器為弱分類器基礎,將他們組合在一起,從而組成乙個高效能的可與svm相提並論的分類器。它的自適應在於:前乙個基本分類器分錯的樣本會得到加強,加權後的全體樣本再次被用來訓練下乙個基本分類器。同時,在每一輪中加入乙個新的弱分類器,直到達到某個預定的足夠小的錯誤率或達到預先指定的最大迭代次數。
adaboost演算法針對不同的訓練集訓練同乙個基本分類器(弱分類器),然後把這些在不同訓練集上得到的分類器集合起來,構成乙個更強的最終的分類器(強分類器)。理論證明,只要每個弱分類器分類能力比隨機猜測要好,當其個數趨向於無窮個數時,強分類器的錯誤率將趨向於零。
adaboost演算法中不同的訓練集是通過調整每個樣本對應的權重實現的。最開始的時候,每個樣本對應的權重是相同的,在此樣本分佈下訓練出乙個基本分類器h1(x)。對於h1(x)錯分的樣本,則增加其對應樣本的權重;而對於正確分類的樣本,則降低其權重。這樣可以使得錯分的樣本突出出來,並得到乙個新的樣本分佈。同時,根據錯分的情況賦予h1(x)乙個權重,表示該基本分類器的重要程度,錯分得越少權重越大。在新的樣本分佈下,再次對基本分類器進行訓練,得到基本分類器h2(x)及其權重。依次類推,經過t次這樣的迴圈,就得到了t個基本分類器,以及t個對應的權重。最後把這t個基本分類器按一定權重累加起來,就得到了最終所期望的強分類器。
簡單來說,adaboost有很多優點:
1)adaboost是一種有很高精度的分類器
2)可以使用各種方法構建子分類器,adaboost演算法提供的是框架
3)當使用簡單分類器時,計算出的結果是可以理解的。而且弱分類器構造極其簡單
4)簡單,不用做特徵篩選
5)不用擔心overfitting!
具體說來,整個adaboost 迭代演算法為3步:
初始化訓練資料的權值分布。如果有n個樣本,則每乙個訓練樣本最開始時都被賦予相同的權值:1/n。
訓練弱分類器。具體訓練過程中,如果某個樣本點已經被準確地分類,那麼在構造下乙個訓練集中,它的權值就被降低;相反,如果某個樣本點沒有被準確地分類,那麼它的權值就得到提高。然後,權值更新過的樣本集被用於訓練下乙個分類器,整個訓練過程如此迭代地進行下去。
將各個訓練得到的弱分類器組合成強分類器。各個弱分類器的訓練過程結束後,加大分類誤差率小的弱分類器的權重,使其在最終的分類函式中起著較大的決定作用,而降低分類誤差率大的弱分類器的權重,使其在最終的分類函式中起著較小的決定作用。換言之,誤差率低的弱分類器在最終分類器中佔的權重較大,否則較小。
adaboost演算法的具體描述如下:
假定x表示樣本空間,y表示樣本類別標識集合,假設是二值分類問題,這裡限定y=。令s=為樣本訓練集,其中xi∈x,yi∈y。
① 始化m個樣本的權值,假設樣本分佈dt為均勻分布:dt(i)=1/m,dt(i)表示在第t輪迭代中賦給樣本(xi,yi)的權值。
② 令t表示迭代的次數。
③ for t=1 to t do
根據樣本分佈dt,通過對訓練集s進行抽樣(有回放)產生訓練集st。
在訓練集st上訓練分類器ht。
用分類器ht對原訓練集s中的所有樣本分類。
得到本輪的分類器ht:x →y,並且有誤差εt=pri-di[ht(xi) ≠yi]。
令
這個a1代表h1(x)在最終的分類函式中所佔的權重。
更新每個樣本的權值
其中,zt是乙個正規因子,用來確保σidt+1(i)=1。
end for
④ 最終的**輸出為:
總結:
單層決策樹樁,decision stump,他是adaboost中最流行的弱分類器,當然並非是唯一可用的弱分類器。實際上,任意分類器都可以作為基分類器。演算法第一步之後,會輸出乙個單層決策樹的陣列,長度為m,並建立乙個列向量d;
向量d非常重要,它包含了每個資料點的權重,一開始這些權重都賦予了相等的權重1/m。在後續的迭代中,adaboost演算法會在增加錯分資料的權重的同事,降低正確分類資料的權重,d是乙個概率分布向量,因此所有元素的和為1。
adaboost演算法的核心在於for迴圈,該迴圈執行t次(該t也是使用者要輸入的引數),或是在訓練錯誤率為零時停止。迴圈第一件事是簡歷乙個單層決策樹,然後輸入權重向量d。接下來,需要計算的是alpha值。該值會告訴總分類此本次單層決策樹輸出結果的權重。
這種針對錯誤的調節能力是adaboost的長處。
資料探勘 Adaboost
adaboost就是通過迭代訓練若干個弱分類器,直到錯誤率為零,所有分類器的加權 d 和的sign值就是結果。每一次迭代之後的下乙個分類器都更加關注分錯類的個體 每乙個弱分類器都是通過閾值劃分確定的,找到使總體的錯誤最小的切分方式,即min d.t 判斷錯誤為1,正確為0的矩陣 這一次劃分錯誤的個體...
資料探勘學習筆記 AdaBoost演算法 一
宣告 這篇筆記是自己對adaboost原理的一些理解,如果有錯,還望指正,俯謝 adaboost演算法,這個演算法思路簡單.adaboost演算法,是一種組合演算法 通過多個弱分類器,組合成乙個強分類器 關於adaboost演算法的流程,簡單的描述,我們以 short introduction to...
Adaboost學習資料
1 adaboost演算法介紹 描述 介紹了主要思想和偽碼 2 adaboost演算法原理和推導 描述 介紹了原理 演算法流程 舉例 誤差界的推導 3 adaboost 從原理到實現 描述 介紹原理 演算法過程 python實現 4 adaboost 演算法 描述 boosting演算法起源和發展歷...