集成算法目標:集成算法會考慮多個評估器的建模結果,彙總以後獲得一個綜合的結果,以此來獲取比單個模型更好的迴歸或分類表現。javascript
集成學習(Ensemble learning)經過構建並結合多個學習器來完成學習任務。通常結構爲:先產生一組「個體學習器」,再用某種策略將它們結合起來。但要得到好的集成,個體學習器應「好而不一樣」,即個體學習器要有必定的「準確性」,即學習器不能太壞,而且要有多樣性,即個體學習器間具備差別。多個模型集成成爲的模型叫作集成評估器(ensemble estimator),組成集成評估器的每一個模型都叫作基評估器(base estimator)。css
根據個體學習器的生成方式,目前的集成學習方法大體能夠分爲2類:html
1.Bagging(裝袋法):個體學習器間不存在強依賴關係、可同時生成的並行化方法。html5
2.Boosting(提高法):個體學習器間存在強依賴關係、必須串行生成的序列化方法。java
注:所謂串行生成的序列化方法就是除了訓練第一個以外,其餘的學習器學習都須要依賴於前面生成的學習的結果。node
Bagging算法原理圖以下:python
算法過程以下:jquery
1.自助採樣:假設訓練數據集包含m個樣本,隨機從樣本集中可放回的抽取m次,獲得與訓練集數量相同的訓練集。通過K輪自助採樣,能夠獲得K個包含m個訓練樣本的採樣集。linux
2.模型訓練:基於每一個採樣集訓練出一個最優模型(基學習器),K個訓練集就獲得K個訓練模型。android
3.模型輸出:K個基學習器進行組合,獲得集成模型。分類問題:對K個模型採起投票的方式獲得分類結果。迴歸問題:對K個模型的值取平均獲得迴歸值。
即對於$m$個樣本的原始訓練集,咱們每次先隨機採集一個樣本放入採樣集,接着把該樣本放回,這樣採集$m$次,最終能夠獲得$m$個樣本的採樣集,因爲是隨機採樣,這樣每次的採樣集是和原始訓練集不一樣的,和其餘採樣集也是不一樣的。
對於一個樣本,它每次被採集到的機率是$\frac{1}{m}$。不被採集到的機率爲$1-\frac{1}{m}$。若是m次採樣都沒有被採集中的機率是$(1-\frac 1 m)^m$。則
即當抽樣的樣本量足夠大時,在bagging的每輪隨機採樣中,訓練集中大約有36.8%的數據沒有被採集中。對於這部分大約36.8%的沒有被採樣到的數據,咱們經常稱之爲袋外數據(Out Of Bag, 簡稱OOB)。這些數據未參與訓練集模型的擬合,能夠用來檢測模型的泛化能力。
Boosting算法原理圖以下:
算法過程以下:
1.從初始訓練集訓練出一個基學習器。
2.根據基學習器的表現對樣本分佈進行調整,使得先前的基學習器作錯的訓練樣本在後續收到更多的關注,而後基於調整後的樣本分佈來訓練下一個基學習器。
3.如此重複進行訓練,直至基學習器數目達到實現指定的值T,或整個集成結果達到退出條件,而後將這些學習器進行加權結合。(每一輪訓練都提高那些錯誤率小的基礎模型權重,同時減少錯誤率高的模型權重。)
集成學習獲得多個學習器後,須要用結合策略對多個結果進行分類或彙總輸出。其主要會用到3種方法:平均法、投票法和學習法。
平均法主要用於數值類的迴歸預測。假定我獲得的$K$個弱學習器是$h_1,h_2,h_3...h_k$
1.徹底平均
將全部弱學習的值求算數平均值,即$H(x)=\frac{1}{K}\sum_{i=1}^K{h_i(x)}$
2.加權平均
給每一個學習器設定一個權重求加權平均值,即$H(x)=\sum_{i=1}^K{w_i}{h_i(x)}$,且$0\leq{w_i}\leq{1},\sum_{i=1}^K{w_i}=1$。
投票法主要用於分類問題的預測,便是少數服從多數。主要有如下三種方法:
相對多數投票法:也就是少數服從多數,即預測結果中票數最高的分類類別。若是不止一個類別得到最高票,則隨機選擇一個做爲最終類別。
絕對多數投票法:即不光要求得到最高票,還要求票過半數。
加權投票法:每一個弱學習器的分類票數要乘以一個權重,最終將各個類別的加權票數求和,最大的值對應的類別爲最終類別。
一般考慮的是異質弱學習器,並行地學習它們,並經過訓練一個「元模型」將它們組合起來,根據不一樣弱模型的預測結果輸出一最終的預測結果。便是將K個學習器的分類結果再次做爲輸入,將訓練集的輸出做爲輸出,從新訓練一個學習器來獲得最終結果。
1.訓練樣本集
Bagging:訓練集是有放回抽樣,從原始集中選出的K組訓練集是相互獨立的。
Boosting:每一次迭代的訓練集不變。
2.訓練樣本權重
Bagging:每一個訓練樣本的權重相等,即1/N。
Boosting:根據學習器的錯誤率不斷調整樣例的權值,錯誤率越大,權值越大。
3.預測函數的權重
Bagging:K組學習器的權重相等,即1/K。
Boosting:學習器性能好的分配較大的權重,學習器性能差的分配較小的權重。
4.並行計算
Bagging:K組學習器模型能夠並行生成。
Boosting:K組學習器只能順序生成,由於後一個模型的樣本權值須要前一個學習器模型的結果。