如果我有寫過整合方法的話[沒有的話看這篇整合學習理論],整合方法的一大類就是boosting,其基本思想就是不斷地在迭代過程中訓練basemodel,並增加誤分樣本的權重,直到達到停止條件後,組合basemodel。從整合學習的理論我們知道boosting在組合過程中會增大模型的variance,所以basemodel必須是低bias但低variance的弱模型,這樣才不至於最終導致過擬合。
上述的框架有兩個基本問題,1)如何改變誤分類樣本的權重;2)如何組合basemodel得到最終的分類器。adaboost回答了這個問題,所以adaboost是屬於boosting的,但是adaboost沒有指定basemodel,所以其本質仍然是乙個框架。
adaboost的工作流程如下:
1)初始化權值相同(都為1/n)的樣本權值分布d1;
2)對m∈[1,m]:
a)使用權值分布dm的訓練集訓練得到基本分類器;
b)更新權值分布,計算該基本分類器的加權權值(計算公式我不列出來了,可以去書中找~重點在於思想啊思想!)
3)組合(加權相加)得到最終的分類器。
只想說每次看到給了一堆計算公式就會很想知道其內部的原因啊,我為什麼要這麼更新權重啊對吧,所以往下看!~
adaboost本質可以理解成模型為加法模型,損失函式為指數函式(策略為檢驗風險極小化),學習演算法為前向分步演算法的二類學習分類方法。
加法模型,指數函式什麼的都好理解,但是問題來了,什麼是前向分步演算法呢?因為我們要優化的目標是加法模型,可以通過從前向後,每一步值優化乙個基函式及其係數,來降低優化複雜度。其實有發現嗎,前向分步演算法本質是乙個貪心演算法吶~
通過這種方式,就可以得到第二部分的adaboost過程中具體的公式和求解方法啦~
延伸:這時候我們就想啊,boosting一般都是加法模型加上前向分步演算法,那麼可以改變的就是損失函式了,所以其實根據損失函式的不同,會有不同名字/效果的演算法,如下圖:
adaboost最基本的性質是它能在學習過程中不斷減少訓練誤差。直觀來看,每次提高誤分類樣本的權值,當然會減少訓練誤差啦(注意是訓練誤差),這也對應了上述提到的adaboost屬於boosting方法,而boosting方法是會提高model的variance的,就是容易過擬合,這也很直觀。
關於adaboost的訓練誤差界是以指數速率下降的,這也是有理論證明的。
【注:本文不寫公式,為了更注重其理論思想(因為懶...),具體公式請參見《統計學習方法》】
統計學習方法 AdaBoost
在之前的文章中,我們學習了幾種經典的分類演算法 knn,bayes,decision tree,logistic regression,svm。接下來我們學習一種方法來提公升分類效果,這種方法的核心思想就是 三個臭皮匠,頂個諸葛亮。我們先從整合方法講起,簡單介紹bagging和boosting,然後...
《統計學習方法》筆記 AdaBoost
整合方法就是通過組合多個分類器的分類結果,獲得比簡單的分類器更好的分類結果。使用整合方法的多種形式 1 可以是不同演算法的整合 2 可以是同一演算法在不同設定下的整合 3 資料集不同部分分配給不同分類器之後的整合 下面介紹同一種分類器多個不同例項的兩種計算方法 基於資料隨機重抽樣的分類器構建方法 b...
統計學習方法筆記(五)
決策樹模型呈樹形結構,在分類問題中,表示基於特徵對例項進行分類的過程,它可以認為是if then 規則的集合,也可以認為是定義在特徵空間與類空間上的條件概率分布。學習時,利用訓練資料,根據損失函式最小化的原則建立決策樹模型.時,對新的資料,利用決策樹模型進行分類決策樹學習通常包括3 個步驟 特徵選擇...