【机器学习】集成学习ensemble之随机森林
Bootstrapping
Bootstrapping從字面意思翻譯是拔靴法,從其內(nèi)容翻譯又叫自助法,是一種再抽樣的統(tǒng)計(jì)方法。自助法的名稱(chēng)來(lái)源于英文短語(yǔ)“to?pull oneself up by one’s bootstrap”,表示完成一件不能自然完成的事情。1977年美國(guó)Standford大學(xué)統(tǒng)計(jì)學(xué)教授Efron提出了一種新的增廣樣本的統(tǒng)計(jì)方法,就是Bootstrap方法,為解決小子樣試驗(yàn)評(píng)估問(wèn)題提供了很好的思路。
算法流程
Bagging策略(bootstrap aggregating)套袋法
隨機(jī)森林
bagging方法可以有效降低模型的方差。隨機(jī)森林每棵子樹(shù)不需要剪枝,是低偏差高方差的模型,通過(guò)bagging降低方差后使得整個(gè)模型有較高的性能。
隨機(jī)森林其實(shí)很簡(jiǎn)單,就是在bagging策略上略微改動(dòng)了一下。
特征m個(gè)數(shù)的選取:
用作分類(lèi)時(shí),m默認(rèn)取,最小取1.
用作回歸時(shí),m默認(rèn)取M/3,最小取5.
兩個(gè)隨機(jī)性的引入對(duì)隨機(jī)森林的分類(lèi)性能至關(guān)重要。由于它們的引入,使得隨機(jī)森林不容易陷入過(guò)擬合,并且具有很好得抗噪能力(比如:對(duì)缺省值不敏感)。
隨機(jī)森林分類(lèi)效果(錯(cuò)誤率)與兩個(gè)因素有關(guān):
- 森林中任意兩棵樹(shù)的相關(guān)性:相關(guān)性越大,錯(cuò)誤率越大;
- 森林中每棵樹(shù)的分類(lèi)能力:每棵樹(shù)的分類(lèi)能力越強(qiáng),整個(gè)森林的錯(cuò)誤率越低。
減小特征選擇個(gè)數(shù)m,樹(shù)的相關(guān)性和分類(lèi)能力也會(huì)相應(yīng)的降低;增大m,兩者也會(huì)隨之增大。所以關(guān)鍵問(wèn)題是如何選擇最優(yōu)的m(或者是范圍),這也是隨機(jī)森林唯一的一個(gè)參數(shù)。
OOB(Out Of Bag)袋外錯(cuò)誤率
在bootstrapping的過(guò)程中,有些數(shù)據(jù)可能沒(méi)有被選擇,這些數(shù)據(jù)稱(chēng)為out-of-bag(OOB) examples。
解釋一下上面這張圖。一眼看還是挺難理解的,用白話(huà)講一下。
是什么?
隨機(jī)森林中每一次樣本抽樣(不是特征抽樣),就是bootstrapping方法,是有放回的隨機(jī)抽樣,所以每一次抽的時(shí)候,對(duì)于一個(gè)特定的樣本,抽到它的概率就是,很好理解,N個(gè)樣本里隨機(jī)抽取一個(gè),抽到的概率當(dāng)然是,因?yàn)槭怯蟹呕氐某闃?#xff0c;所以分母永遠(yuǎn)是N。
是什么?
既然被抽到的概率是,那不被抽到的概率就是,很好理解。那指數(shù)大N又是什么呢?其實(shí)就是抽樣的次數(shù)。假設(shè)我們的隨機(jī)森林一共有A顆樹(shù),每棵樹(shù)抽了B個(gè)樣本,那么指數(shù)大N就是,是不是感覺(jué)指數(shù)大N應(yīng)該和分母的那個(gè)N一樣?其實(shí)這里只是為了方便,它表達(dá)的意思就是抽了很多次。
搞明白了那個(gè)公式之后,就可以開(kāi)始計(jì)算了。要用到數(shù)學(xué)分析中的極限知識(shí)。一步步推一下。
這是基本公式:?后面的都是基于這個(gè)變形
這說(shuō)明了什么呢?就是你隨機(jī)森林已經(jīng)造好了,但是即使你的訓(xùn)練集是整個(gè)樣本集,其中也會(huì)有的樣本你抽不到。為什么抽不到,上面的公式就是告訴你為什么抽不到。這些抽不到的樣本就叫做out-of-bag(OOB) examples
好了,到這里已經(jīng)能搞懂什么是out-of-bag(OOB) examples了。那這些樣本能用來(lái)做什么呢?下面就介紹oob袋外錯(cuò)誤率。
袋外錯(cuò)誤率的應(yīng)用
正常情況下,我們訓(xùn)練一個(gè)模型,怎么驗(yàn)證它好不好。是不是要拿出一部分的數(shù)據(jù)集當(dāng)作驗(yàn)證集,更好的還要拿出一部分當(dāng)作測(cè)試集,一般是6:2:2。
在隨機(jī)森林中,有了out-of-bag(OOB) examples,我們就不需要拿出一部分?jǐn)?shù)據(jù)了,out-of-bag(OOB) examples就是那部分沒(méi)有用到的數(shù)據(jù),我們可以直接當(dāng)成驗(yàn)證集來(lái)使用。
obb error = 被分類(lèi)錯(cuò)誤數(shù) / 總數(shù)
隨機(jī)森林算法中不需要再進(jìn)行交叉驗(yàn)證或者單獨(dú)的測(cè)試集來(lái)獲取測(cè)試集誤差的無(wú)偏估計(jì)。
Breiman [1996b]在對(duì) bagged?分類(lèi)器的錯(cuò)誤率估計(jì)研究中,?給出實(shí)證證據(jù)顯示,out-of-bag?估計(jì)?和使用與訓(xùn)練集大小一致的測(cè)試集所得到的錯(cuò)誤率一樣精確. 所以, 使用out-of-bag error?估計(jì)可以不在另外建立一個(gè)測(cè)試集.
特征重要性度量
計(jì)算某個(gè)特征X的重要性時(shí),具體步驟如下:
對(duì)整個(gè)隨機(jī)森林,得到相應(yīng)的袋外數(shù)據(jù)(out of bag,OOB)?計(jì)算袋外數(shù)據(jù)誤差,記為errOOB1.
所謂袋外數(shù)據(jù)是指,每次建立決策樹(shù)時(shí),通過(guò)重復(fù)抽樣得到一個(gè)數(shù)據(jù)用于訓(xùn)練?決策樹(shù),這時(shí)還有大約1/3的數(shù)據(jù)沒(méi)有被利用,沒(méi)有參與決策樹(shù)的建立。這部分?jǐn)?shù)據(jù)可以用于對(duì)決策樹(shù)的性能進(jìn)行評(píng)估,計(jì)算模型的預(yù)測(cè)錯(cuò)誤率,稱(chēng)為袋外數(shù)據(jù)誤差。
?這已經(jīng)經(jīng)過(guò)證明是無(wú)偏估計(jì)的,所以在隨機(jī)森林算法中不需要再進(jìn)行交叉驗(yàn)證或者單獨(dú)的測(cè)試集來(lái)獲取測(cè)試集誤差的無(wú)偏估計(jì)。
隨機(jī)對(duì)袋外數(shù)據(jù)OOB所有樣本的特征X加入噪聲干擾(可以隨機(jī)改變樣本在特征X處的值),再次計(jì)算袋外數(shù)據(jù)誤差,記為errOOB2。
特征選擇
在特征重要性的基礎(chǔ)上,特征選擇的步驟如下:
優(yōu)點(diǎn)
- 在數(shù)據(jù)集上表現(xiàn)良好
- 在當(dāng)前的很多數(shù)據(jù)集上,相對(duì)其他算法有著很大的優(yōu)勢(shì)
- 它能夠處理很高維度(feature很多)的數(shù)據(jù),并且不用做特征選擇
- 在訓(xùn)練完后,它能夠給出哪些feature比較重要
- 在創(chuàng)建隨機(jī)森林的時(shí)候,對(duì)generlization error使用的是無(wú)偏估計(jì)
- 訓(xùn)練速度快
- 在訓(xùn)練過(guò)程中,能夠檢測(cè)到feature間的互相影響
- 容易做成并行化方法
- 實(shí)現(xiàn)比較簡(jiǎn)單
- 可以得到變量重要性排序(兩種:基于OOB誤分率的增加量和基于分裂時(shí)的GINI下降量)
隨機(jī)森林有許多優(yōu)點(diǎn):
- 具有極高的準(zhǔn)確率
- 隨機(jī)性的引入,使得隨機(jī)森林不容易過(guò)擬合
- 隨機(jī)性的引入,使得隨機(jī)森林有很好的抗噪聲能力
- 能處理很高維度的數(shù)據(jù),并且不用做特征選擇
- 既能處理離散型數(shù)據(jù),也能處理連續(xù)型數(shù)據(jù),數(shù)據(jù)集無(wú)需規(guī)范化
- 訓(xùn)練速度快,可以得到變量重要性排序
- 容易實(shí)現(xiàn)并行化
隨機(jī)森林的缺點(diǎn):
- 當(dāng)隨機(jī)森林中的決策樹(shù)個(gè)數(shù)很多時(shí),訓(xùn)練時(shí)需要的空間和時(shí)間會(huì)較大
- 隨機(jī)森林模型還有許多不好解釋的地方,有點(diǎn)算個(gè)黑盒模型
總結(jié)
以上是生活随笔為你收集整理的【机器学习】集成学习ensemble之随机森林的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【机器学习】 树的剪枝策略
- 下一篇: 【机器学习】集成学习之boosting