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