集成学习原理小结
集成學(xué)習(xí)(ensemble learning)可以說是現(xiàn)在非常火爆的機(jī)器學(xué)習(xí)方法了。它本身不是一個(gè)單獨(dú)的機(jī)器學(xué)習(xí)算法,而是通過構(gòu)建并結(jié)合多個(gè)機(jī)器學(xué)習(xí)器來完成學(xué)習(xí)任務(wù)。也就是我們常說的“博采眾長”。集成學(xué)習(xí)可以用于分類問題集成,回歸問題集成,特征選取集成,異常點(diǎn)檢測集成等等,可以說所有的機(jī)器學(xué)習(xí)領(lǐng)域都可以看到集成學(xué)習(xí)的身影。本文就對集成學(xué)習(xí)的原理做一個(gè)總結(jié)。
1. 集成學(xué)習(xí)概述
從下圖,我們可以對集成學(xué)習(xí)的思想做一個(gè)概括。對于訓(xùn)練集數(shù)據(jù),我們通過訓(xùn)練若干個(gè)個(gè)體學(xué)習(xí)器,通過一定的結(jié)合策略,就可以最終形成一個(gè)強(qiáng)學(xué)習(xí)器,以達(dá)到博采眾長的目的。
也就是說,集成學(xué)習(xí)有兩個(gè)主要的問題需要解決,第一是如何得到若干個(gè)個(gè)體學(xué)習(xí)器,第二是如何選擇一種結(jié)合策略,將這些個(gè)體學(xué)習(xí)器集合成一個(gè)強(qiáng)學(xué)習(xí)器。
2. 集成學(xué)習(xí)之個(gè)體學(xué)習(xí)器
上一節(jié)我們講到,集成學(xué)習(xí)的第一個(gè)問題就是如何得到若干個(gè)個(gè)體學(xué)習(xí)器。這里我們有兩種選擇。
第一種就是所有的個(gè)體學(xué)習(xí)器都是一個(gè)種類的,或者說是同質(zhì)的。比如都是決策樹個(gè)體學(xué)習(xí)器,或者都是神經(jīng)網(wǎng)絡(luò)個(gè)體學(xué)習(xí)器。第二種是所有的個(gè)體學(xué)習(xí)器不全是一個(gè)種類的,或者說是異質(zhì)的。比如我們有一個(gè)分類問題,對訓(xùn)練集采用支持向量機(jī)個(gè)體學(xué)習(xí)器,邏輯回歸個(gè)體學(xué)習(xí)器和樸素貝葉斯個(gè)體學(xué)習(xí)器來學(xué)習(xí),再通過某種結(jié)合策略來確定最終的分類強(qiáng)學(xué)習(xí)器。
目前來說,同質(zhì)個(gè)體學(xué)習(xí)器的應(yīng)用是最廣泛的,一般我們常說的集成學(xué)習(xí)的方法都是指的同質(zhì)個(gè)體學(xué)習(xí)器。而同質(zhì)個(gè)體學(xué)習(xí)器使用最多的模型是CART決策樹和神經(jīng)網(wǎng)絡(luò)。同質(zhì)個(gè)體學(xué)習(xí)器按照個(gè)體學(xué)習(xí)器之間是否存在依賴關(guān)系可以分為兩類,第一個(gè)是個(gè)體學(xué)習(xí)器之間存在強(qiáng)依賴關(guān)系,一系列個(gè)體學(xué)習(xí)器基本都需要串行生成,代表算法是boosting系列算法,第二個(gè)是個(gè)體學(xué)習(xí)器之間不存在強(qiáng)依賴關(guān)系,一系列個(gè)體學(xué)習(xí)器可以并行生成,代表算法是bagging和隨機(jī)森林(Random Forest)系列算法。下面就分別對這兩類算法做一個(gè)概括總結(jié)。
3. 集成學(xué)習(xí)之boosting
boosting的算法原理我們可以用一張圖做一個(gè)概括如下:
從圖中可以看出,Boosting算法的工作機(jī)制是首先從訓(xùn)練集用初始權(quán)重訓(xùn)練出一個(gè)弱學(xué)習(xí)器1,根據(jù)弱學(xué)習(xí)的學(xué)習(xí)誤差率表現(xiàn)來更新訓(xùn)練樣本的權(quán)重,使得之前弱學(xué)習(xí)器1學(xué)習(xí)誤差率高的訓(xùn)練樣本點(diǎn)的權(quán)重變高,使得這些誤差率高的點(diǎn)在后面的弱學(xué)習(xí)器2中得到更多的重視。然后基于調(diào)整權(quán)重后的訓(xùn)練集來訓(xùn)練弱學(xué)習(xí)器2.,如此重復(fù)進(jìn)行,直到弱學(xué)習(xí)器數(shù)達(dá)到事先指定的數(shù)目T,最終將這T個(gè)弱學(xué)習(xí)器通過集合策略進(jìn)行整合,得到最終的強(qiáng)學(xué)習(xí)器。
Boosting系列算法里最著名算法主要有AdaBoost算法和提升樹(boosting tree)系列算法。提升樹系列算法里面應(yīng)用最廣泛的是梯度提升樹(Gradient Boosting Tree)。AdaBoost和提升樹算法的原理在后面的文章中會(huì)專門來講。
4. 集成學(xué)習(xí)之bagging
Bagging的算法原理和 boosting不同,它的弱學(xué)習(xí)器之間沒有依賴關(guān)系,可以并行生成,我們可以用一張圖做一個(gè)概括如下:
從上圖可以看出,bagging的個(gè)體弱學(xué)習(xí)器的訓(xùn)練集是通過隨機(jī)采樣得到的。通過T次的隨機(jī)采樣,我們就可以得到T個(gè)采樣集,對于這T個(gè)采樣集,我們可以分別獨(dú)立的訓(xùn)練出T個(gè)弱學(xué)習(xí)器,再對這T個(gè)弱學(xué)習(xí)器通過集合策略來得到最終的強(qiáng)學(xué)習(xí)器。
對于這里的隨機(jī)采樣有必要做進(jìn)一步的介紹,這里一般采用的是自助采樣法(Bootstap sampling),即對于m個(gè)樣本的原始訓(xùn)練集,我們每次先隨機(jī)采集一個(gè)樣本放入采樣集,接著把該樣本放回,也就是說下次采樣時(shí)該樣本仍有可能被采集到,這樣采集m次,最終可以得到m個(gè)樣本的采樣集,由于是隨機(jī)采樣,這樣每次的采樣集是和原始訓(xùn)練集不同的,和其他采樣集也是不同的,這樣得到多個(gè)不同的弱學(xué)習(xí)器。
隨機(jī)森林是bagging的一個(gè)特化進(jìn)階版,所謂的特化是因?yàn)殡S機(jī)森林的弱學(xué)習(xí)器都是決策樹。所謂的進(jìn)階是隨機(jī)森林在bagging的樣本隨機(jī)采樣基礎(chǔ)上,又加上了特征的隨機(jī)選擇,其基本思想沒有脫離bagging的范疇。bagging和隨機(jī)森林算法的原理在后面的文章中會(huì)專門來講。
5. 集成學(xué)習(xí)之結(jié)合策略
在上面幾節(jié)里面我們主要關(guān)注于學(xué)習(xí)器,提到了學(xué)習(xí)器的結(jié)合策略但沒有細(xì)講,本節(jié)就對集成學(xué)習(xí)之結(jié)合策略做一個(gè)總結(jié)。我們假定我得到的T個(gè)弱學(xué)習(xí)器是{h1,h2,...hT}{h1,h2,...hT}
5.1 平均法
對于數(shù)值類的回歸預(yù)測問題,通常使用的結(jié)合策略是平均法,也就是說,對于若干和弱學(xué)習(xí)器的輸出進(jìn)行平均得到最終的預(yù)測輸出。
最簡單的平均是算術(shù)平均,也就是說最終預(yù)測是
H(x)=1T∑1Thi(x)H(x)=1T∑1Thi(x)如果每個(gè)個(gè)體學(xué)習(xí)器有一個(gè)權(quán)重ww,則最終預(yù)測是
H(x)=∑i=1Twihi(x)H(x)=∑i=1Twihi(x)其中wiwi是個(gè)體學(xué)習(xí)器hihi的權(quán)重,通常有
wi≥0,∑i=1Twi=1wi≥0,∑i=1Twi=15.2 投票法
對于分類問題的預(yù)測,我們通常使用的是投票法。假設(shè)我們的預(yù)測類別是{c1,c2,...cK}{c1,c2,...cK},對于任意一個(gè)預(yù)測樣本x,我們的T個(gè)弱學(xué)習(xí)器的預(yù)測結(jié)果分別是(h1(x),h2(x)...hT(x))(h1(x),h2(x)...hT(x))。
最簡單的投票法是相對多數(shù)投票法,也就是我們常說的少數(shù)服從多數(shù),也就是T個(gè)弱學(xué)習(xí)器的對樣本x的預(yù)測結(jié)果中,數(shù)量最多的類別cici為最終的分類類別。如果不止一個(gè)類別獲得最高票,則隨機(jī)選擇一個(gè)做最終類別。
稍微復(fù)雜的投票法是絕對多數(shù)投票法,也就是我們常說的要票過半數(shù)。在相對多數(shù)投票法的基礎(chǔ)上,不光要求獲得最高票,還要求票過半數(shù)。否則會(huì)拒絕預(yù)測。
更加復(fù)雜的是加權(quán)投票法,和加權(quán)平均法一樣,每個(gè)弱學(xué)習(xí)器的分類票數(shù)要乘以一個(gè)權(quán)重,最終將各個(gè)類別的加權(quán)票數(shù)求和,最大的值對應(yīng)的類別為最終類別。
5.3 學(xué)習(xí)法
上兩節(jié)的方法都是對弱學(xué)習(xí)器的結(jié)果做平均或者投票,相對比較簡單,但是可能學(xué)習(xí)誤差較大,于是就有了學(xué)習(xí)法這種方法,對于學(xué)習(xí)法,代表方法是stacking,當(dāng)使用stacking的結(jié)合策略時(shí), 我們不是對弱學(xué)習(xí)器的結(jié)果做簡單的邏輯處理,而是再加上一層學(xué)習(xí)器,也就是說,我們將訓(xùn)練集弱學(xué)習(xí)器的學(xué)習(xí)結(jié)果作為輸入,將訓(xùn)練集的輸出作為輸出,重新訓(xùn)練一個(gè)學(xué)習(xí)器來得到最終結(jié)果。
在這種情況下,我們將弱學(xué)習(xí)器稱為初級學(xué)習(xí)器,將用于結(jié)合的學(xué)習(xí)器稱為次級學(xué)習(xí)器。對于測試集,我們首先用初級學(xué)習(xí)器預(yù)測一次,得到次級學(xué)習(xí)器的輸入樣本,再用次級學(xué)習(xí)器預(yù)測一次,得到最終的預(yù)測結(jié)果。
?
以上就是集成學(xué)習(xí)原理的一個(gè)總結(jié),后面會(huì)分別對Adaboost, 提升樹,bagging和隨機(jī)森林的算法原理做一個(gè)總結(jié),敬請期待。
本文轉(zhuǎn)自劉建平Pinard博客園博客,原文鏈接:http://www.cnblogs.com/pinard/p/6131423.html,如需轉(zhuǎn)載請自行聯(lián)系原作者
總結(jié)
- 上一篇: Lesson 4- Exchange S
- 下一篇: 为什么我们需要域?Active Dire