一、主要內容html
介紹集成學習,而後講述boosting和bagging的區別與聯繫,同時對adaBoost進行推導而後進行gbdt的推導,最後比較隨機森林和gdbt的區別和聯繫。算法
二、集成學習bootstrap
集成學習(ensamble learning)經過構建多個學習器來完成任務。集成學習的通常結構:先產生一組「個體學習器」,而後再用某種策略將這些個體學習器進行聯繫起來,個體學習器由現有的一個算法產生,好比說c4.5決策樹,bp神經網絡等。根據集成學習中個體學習器是否相同能夠分爲同質集成和已質集成,同質集成中個體學習器被稱爲「基學習器」,已質集成中的個體學習器稱爲「組件學習器」。網絡
集成學習經過使用多個學習器進行組合得到強大的功能,一般個體學習器爲弱分類器:分類結果不是太好可是要比隨機猜想的預測結果好(精度高於50%)。目前集成學習的生成方式有兩類:框架
1)、boosting:個體學習器之間存在強烈的依賴關係,只能進行串行生成不一樣的個體學習器,以adaboost和gdbt爲表明函數
2)、bagging:個體學習器獨立生成,互相之間沒有關係,以隨機森林爲表明性能
三、boosting 和 bagging學習
boosting的工做機制:從初始訓練數據集出發訓練出一個基學習器,而後再根據基學習器的表現對訓練的樣本進行調整,使得先前基學習器中學習結果錯誤的樣本權重提高得到更大的關注,而後使用調整後的訓練樣本進行訓練下一個基學習器,如此重複直到產生足夠數量的基學習器。spa
bagging的工做機制:都訓練樣本進行又放回的抽樣(bootstrap sampling)產生和訓練數據規模相同的新的訓練數據,重複動做產生N個訓練樣本,而後使用這N個樣本數據進行分別訓練基學習器,基學習器之間沒有關係,相互獨立。3d
四、adaboost算法
輸入:訓練數據集 T={(x1,y1),(x2,y2),...,(xN,yN)}; 其中xy = {-1, +1};弱分類器算法
輸出:最終分類器G(x),此處獲得的是一個分類器
(1)、初始化訓練數據的分佈權重
D1 = {w11,w12,....,w1i,.....,w1N}, i = 1,2,3, ..... , N
w1i = 1/N
(2)、對於要生成M個基學習器,則對於m = 1,2,.....,M:
(a)、使用具備權重分佈Dm的訓練數據進行生成基學習器:
(b)、計算Gm(x)在訓練數據集上的分類偏差率:
關於這個偏差率計算的問題,針對不一樣的問題有不一樣的計算方法,此處爲分類器的計算方法,上式還能夠寫爲:
這個表達式就代表了計算分類錯誤率時就是被Gm(x)誤分類樣本的權重之和,從這個關係上能夠看出分類偏差率和樣本權重之間的關係。在此處,實際工程中須要判斷如下偏差率是否小於0.5,若是小於則表示這個基學習器還不如隨機預測的結果,若是加入到最終分類器中會嚴重影響分類器的性能須要拋棄該學習器。
(c)、計算基學習器Gm(x)的係數
基學習器Gm(x)的係數就是這個學習器正確分類的機率除以分錯機率的對數值的一半。當em越小時αm也就越大,也就是說分類偏差率越小的分類器在最終的分類器中的做用就愈來愈大,也是保證了最終分類器性能強勁的緣由。同時若是 em 》0.5的話,結果小於0.這是不容許的,這就是上面要拋棄掉分類偏差大於0.5的學習器的緣由。
(d)、更新訓練數據集的權重分佈
其中Zm爲:
從更新權重值的公式能夠看出,正確分類的樣本數據的權重減少了(e-am < 1),一樣錯誤分類的樣本的權重變大了,所以錯誤樣本在下一輪的訓練中會被重視,若是這個樣本仍是算錯那麼偏差率必然會很大,由於必然會致使基學習器變換分類策略使得偏差率變小,經過更新權重避免了改變訓練數據,使不一樣的訓練數據在基學習器的學習過程當中起到不一樣的做用,這是adaBoost的一個特色。
(3)、構建基本分類器的線性組合
獲得最終的分類器:
須要注意的是這裏的αm的和並不等於1,表示每一個分類器的重要程度,f(x)的符號代表了x的類別,|f(x)|表示分類的確信度,越大分類結果越可靠。
對於adaBoost的迴歸狀況分析,如下內容來自http://www.cnblogs.com/pinard/p/6133937.html
迴歸問題與分類問題算法的不一樣點在於偏差率計算的方式不一樣,分類問題通常都採用0/1損失函數,而回歸問題通常都是平方損失函數或者是線性損失函數,所以此處會有較大的不一樣。
對於第k個弱學習器,計算他在訓練集上的最大偏差:
而後計算每一個樣本的相對偏差結果:
此處使用的是線性偏差的狀況,若是是平方偏差,則
若是採用指數偏差函數那麼:
最終獲得第k個弱學習器的偏差率:
有了偏差率後看學習器的權重係數的計算:
計算完學習器的權重係數後更芯樣本權重Dm+1:
最後進行線性組合:
同時其餘的adaBoost的算法能夠參考:http://www.cnblogs.com/jcchen1987/p/4581651.html
這裏對Adaboost算法的優缺點作一個總結。
Adaboost的主要優勢有:
1)Adaboost做爲分類器時,分類精度很高
2)在Adaboost的框架下,可使用各類迴歸分類模型來構建弱學習器,很是靈活。
3)做爲簡單的二元分類器時,構造簡單,結果可理解。
4)不容易發生過擬合
Adaboost的主要缺點有:
1)對異常樣本敏感,異常樣本在迭代中可能會得到較高的權重,影響最終的強學習器的預測準確性
五、隨機森林
bagging的典型表明。未完