1.什么是隨機(jī)森林
1.1 Bagging思想
Bagging是bootstrap aggregating歹鱼。思想就是從總體樣本當(dāng)中隨機(jī)取一部分樣本進(jìn)行訓(xùn)練,通過多次這樣的結(jié)果卜高,進(jìn)行投票獲取平均值作為結(jié)果輸出弥姻,這就極大可能的避免了不好的樣本數(shù)據(jù),從而提高準(zhǔn)確度掺涛。因為有些是不好的樣本庭敦,相當(dāng)于噪聲,模型學(xué)入噪聲后會使準(zhǔn)確度不高薪缆。
舉個例子:
假設(shè)有1000個樣本秧廉,如果按照以前的思維,是直接把這1000個樣本拿來訓(xùn)練拣帽,但現(xiàn)在不一樣疼电,先抽取800個樣本來進(jìn)行訓(xùn)練,假如噪聲點(diǎn)是這800個樣本以外的樣本點(diǎn)减拭,就很有效的避開了蔽豺。重復(fù)以上操作,提高模型輸出的平均值拧粪。
1.2 隨機(jī)森林
Random Forest(隨機(jī)森林)是一種基于樹模型的Bagging的優(yōu)化版本修陡,一棵樹的生成肯定還是不如多棵樹沧侥,因此就有了隨機(jī)森林,解決決策樹泛化能力弱的特點(diǎn)魄鸦。(可以理解成三個臭皮匠頂過諸葛亮)
而同一批數(shù)據(jù)宴杀,用同樣的算法只能產(chǎn)生一棵樹,這時Bagging策略可以幫助我們產(chǎn)生不同的數(shù)據(jù)集拾因。Bagging策略來源于bootstrap aggregation:從樣本集(假設(shè)樣本集N個數(shù)據(jù)點(diǎn))中重采樣選出Nb個樣本(有放回的采樣旺罢,樣本數(shù)據(jù)點(diǎn)個數(shù)仍然不變?yōu)镹),在所有樣本上盾致,對這n個樣本建立分類器(ID3\C4.5\CART\SVM\LOGISTIC)主经,重復(fù)以上兩步m次,獲得m個分類器庭惜,最后根據(jù)這m個分類器的投票結(jié)果罩驻,決定數(shù)據(jù)屬于哪一類。
每棵樹的按照如下規(guī)則生成:
- 如果訓(xùn)練集大小為N护赊,對于每棵樹而言惠遏,隨機(jī)且有放回地從訓(xùn)練集中的抽取N個訓(xùn)練樣本,作為該樹的訓(xùn)練集骏啰;
- 如果每個樣本的特征維度為M节吮,指定一個常數(shù)m<<M,隨機(jī)地從M個特征中選取m個特征子集判耕,每次樹進(jìn)行分裂時透绩,從這m個特征中選擇最優(yōu)的;
- 每棵樹都盡最大程度的生長壁熄,并且沒有剪枝過程帚豪。
一開始我們提到的隨機(jī)森林中的“隨機(jī)”就是指的這里的兩個隨機(jī)性。兩個隨機(jī)性的引入對隨機(jī)森林的分類性能至關(guān)重要草丧。由于它們的引入狸臣,使得隨機(jī)森林不容易陷入過擬合,并且具有很好得抗噪能力(比如:對缺省值不敏感)昌执。
總的來說就是隨機(jī)選擇樣本數(shù)烛亦,隨機(jī)選取特征,隨機(jī)選擇分類器懂拾,建立多顆這樣的決策樹煤禽,然后通過這幾課決策樹來投票,決定數(shù)據(jù)屬于哪一類(投票機(jī)制有一票否決制岖赋、少數(shù)服從多數(shù)呜师、加權(quán)多數(shù))
2. 隨機(jī)森林分類效果的影響因素
- 森林中任意兩棵樹的相關(guān)性:相關(guān)性越大,錯誤率越大贾节;
- 森林中每棵樹的分類能力:每棵樹的分類能力越強(qiáng)汁汗,整個森林的錯誤率越低衷畦。
減小特征選擇個數(shù)m,樹的相關(guān)性和分類能力也會相應(yīng)的降低知牌;增大m祈争,兩者也會隨之增大。所以關(guān)鍵問題是如何選擇最優(yōu)的m(或者是范圍)角寸,這也是隨機(jī)森林唯一的一個參數(shù)菩混。
3. 隨機(jī)森林有什么優(yōu)缺點(diǎn)
優(yōu)點(diǎn):
- 在當(dāng)前的很多數(shù)據(jù)集上,相對其他算法有著很大的優(yōu)勢扁藕,表現(xiàn)良好沮峡。
- 它能夠處理很高維度(feature很多)的數(shù)據(jù),并且不用做特征選擇(因為特征子集是隨機(jī)選擇的)亿柑。
- 在訓(xùn)練完后邢疙,它能夠給出哪些feature比較重要。
- 訓(xùn)練速度快望薄,容易做成并行化方法(訓(xùn)練時樹與樹之間是相互獨(dú)立的)疟游。
- 在訓(xùn)練過程中,能夠檢測到feature間的互相影響痕支。
- 對于不平衡的數(shù)據(jù)集來說颁虐,它可以平衡誤差。
- 如果有很大一部分的特征遺失卧须,仍可以維持準(zhǔn)確度另绩。
缺點(diǎn):
- 隨機(jī)森林已經(jīng)被證明在某些噪音較大的分類或回歸問題上會過擬合。
- 對于有不同取值的屬性的數(shù)據(jù)花嘶,取值劃分較多的屬性會對隨機(jī)森林產(chǎn)生更大的影響板熊,所以隨機(jī)森林在這種數(shù)據(jù)上產(chǎn)出的屬性權(quán)值是不可信的。
4. 隨機(jī)森林如何處理缺失值察绷?
根據(jù)隨機(jī)森林創(chuàng)建和訓(xùn)練的特點(diǎn),隨機(jī)森林對缺失值的處理還是比較特殊的津辩。
- 首先拆撼,給缺失值預(yù)設(shè)一些估計值,比如數(shù)值型特征喘沿,選擇其余數(shù)據(jù)的中位數(shù)或眾數(shù)作為當(dāng)前的估計值
- 然后闸度,根據(jù)估計的數(shù)值,建立隨機(jī)森林蚜印,把所有的數(shù)據(jù)放進(jìn)隨機(jī)森林里面跑一遍莺禁。記錄每一組數(shù)據(jù)在決策樹中一步一步分類的路徑.
- 判斷哪組數(shù)據(jù)和缺失數(shù)據(jù)路徑最相似,引入一個相似度矩陣窄赋,來記錄數(shù)據(jù)之間的相似度哟冬,比如有N組數(shù)據(jù)楼熄,相似度矩陣大小就是N*N
- 如果缺失值是類別變量,通過權(quán)重投票得到新估計值浩峡,如果是數(shù)值型變量可岂,通過加權(quán)平均得到新的估計值,如此迭代翰灾,直到得到穩(wěn)定的估計值缕粹。
其實(shí),該缺失值填補(bǔ)過程類似于推薦系統(tǒng)中采用協(xié)同過濾進(jìn)行評分預(yù)測纸淮,先計算缺失特征與其他特征的相似度平斩,再加權(quán)得到缺失值的估計,而隨機(jī)森林中計算相似度的方法(數(shù)據(jù)在決策樹中一步一步分類的路徑)乃其獨(dú)特之處咽块。
5. 什么是OOB绘面?隨機(jī)森林中OOB是如何計算的,它有什么優(yōu)缺點(diǎn)糜芳?
OOB:
上面我們提到飒货,構(gòu)建隨機(jī)森林的關(guān)鍵問題就是如何選擇最優(yōu)的m,要解決這個問題主要依據(jù)計算袋外錯誤率oob error(out-of-bag error)峭竣。
bagging方法中Bootstrap每次約有1/3的樣本不會出現(xiàn)在Bootstrap所采集的樣本集合中塘辅,當(dāng)然也就沒有參加決策樹的建立,把這1/3的數(shù)據(jù)稱為袋外數(shù)據(jù)oob(out of bag),它可以用于取代測試集誤差估計方法皆撩。
袋外數(shù)據(jù)(oob)誤差的計算方法如下:
- 對于已經(jīng)生成的隨機(jī)森林,用袋外數(shù)據(jù)測試其性能,假設(shè)袋外數(shù)據(jù)總數(shù)為O,用這O個袋外數(shù)據(jù)作為輸入,帶進(jìn)之前已經(jīng)生成的隨機(jī)森林分類器,分類器會給出O個數(shù)據(jù)相應(yīng)的分類
- 因為這O條數(shù)據(jù)的類型是已知的,則用正確的分類與隨機(jī)森林分類器的結(jié)果進(jìn)行比較,統(tǒng)計隨機(jī)森林分類器分類錯誤的數(shù)目,設(shè)為X,則袋外數(shù)據(jù)誤差大小=X/O
優(yōu)缺點(diǎn):
這已經(jīng)經(jīng)過證明是無偏估計的,所以在隨機(jī)森林算法中不需要再進(jìn)行交叉驗證或者單獨(dú)的測試集來獲取測試集誤差的無偏估計扣墩。
6. 隨機(jī)森林的過擬合問題
-
你已經(jīng)建了一個有10000棵樹的隨機(jī)森林模型。在得到0.00的訓(xùn)練誤差后扛吞,你非常高興呻惕。但是,驗證錯誤是34.23滥比。到底是怎么回事亚脆?你還沒有訓(xùn)練好你的模型嗎?
答:該模型過度擬合盲泛,因此濒持,為了避免這些情況,我們要用交叉驗證來調(diào)整樹的數(shù)量寺滚。
7. 代碼實(shí)現(xiàn)
作者:@mantchs
GitHub:https://github.com/NLP-LOVE/ML-NLP
歡迎大家加入討論柑营!共同完善此項目!qq群號:【541954936】