隨機(jī)森林原理與Sklearn參數(shù)詳解

目錄


1、集成算法概述

2Sklearn中RandomForestClassifier重要參數(shù)詳解

3、Sklearn中RandomForestRegressor重要參數(shù)詳解

4、附錄

5、總結(jié)


1、集成算法概述:集成算法的目標(biāo)是多個評估器建模的結(jié)果,匯總后得到一個綜合結(jié)果,以此來獲取比單個模型更好的回歸或分類表現(xiàn)。多個模型集成成為的模型叫集成評估器,單個模型叫基評估器。通常說有三種集成算法:裝袋法(Bagging)、提升法(Boosting)和stacking。裝袋法的基本思想是構(gòu)建多個相互獨(dú)立的基評估器,然后通過預(yù)測平均或多數(shù)表決原則來決定集成評估器的結(jié)果。裝袋法的典型代表就是隨機(jī)森林(RandomForest)。


2、RandomForestClassifier重要參數(shù):

n_estimators:integer, optional (default=100),森林中基評估器的數(shù)量,即樹的數(shù)量。n_estimators越大模型效果越好,但達(dá)到一定程度時,精確性趨于穩(wěn)定。n_estimators越大模型的計(jì)算量越大,需要的內(nèi)存也越大。

random_state:int, RandomState instance or None, optional (default=None),控制樹的生成模式。在DecisionTreeClassifier中random_state生成隨機(jī)的一棵樹,這里的參數(shù)控制的是隨機(jī)生成一片森林模式。用袋裝法集成時,基分類器應(yīng)當(dāng)是相互獨(dú)立的,是不同的。

bootstrap:boolean, optional (default=True),要讓基分類器盡量都不一樣,一種方式是使用不同的訓(xùn)練數(shù)據(jù)集來訓(xùn)練不同的樹。而裝袋法采用的是有放回采樣法,來確保每棵樹的隨機(jī)性。booststrap就是用來控制抽樣技術(shù)的參數(shù)。

oob_score:bool (default=False),是否啟用袋外數(shù)據(jù)做測試。有放回采樣策略中,自助數(shù)據(jù)集平均包含63%的原始數(shù)據(jù)被抽中(每個樣本從原始數(shù)據(jù)抽中到自助集的概率為:1-(1-\frac{1}{n} )^n=63%左右),也就是說袋外數(shù)據(jù)(out of bag data? 簡稱oob數(shù)據(jù))大致占37%。在使用隨機(jī)森林時,我們可以不劃分測試和訓(xùn)練集,只要開啟袋外數(shù)據(jù)支持,就可以用袋外數(shù)據(jù)測試我們的模型。然后這并不絕對,如果n足夠大,則沒有數(shù)據(jù)落入袋外,自然無法使用oob數(shù)據(jù)來測試模型了。如果需要用袋外數(shù)據(jù)做測試,則設(shè)置該參數(shù)為True,實(shí)例化并訓(xùn)練模型完成后,可以通過oob_score_來查看真是落入袋外的數(shù)據(jù)量。

重要屬性與接口:

除了estimators_和oob_socre_這兩個屬性外,作為樹模型也有feature_importances這個屬性。

常用的接口主要有:apply,fit,predict和score。除此之外,還需要注意隨機(jī)森林的predict_proba接口,該接口返回預(yù)測數(shù)據(jù)的被分到每一類標(biāo)簽的概率。如果是二分類,則predict_proba返回的數(shù)值大于0.5時被劃分為1,否則為0。(在sklearn的隨機(jī)森林中predict_proba返回每棵樹的概率,然后取平均概率,從而根據(jù)概率值是否大于0.5劃分為1,否則為0,來決定樣本分類的)

Bagging要求基分類器相互獨(dú)立,袋裝法另一個必要條件是:基分類器的誤差率要小于0.5,即準(zhǔn)確率大于0.5,集成效果才好于基分類器。所以使用隨機(jī)森林前,先要觀察各基分類器是否都有至少50%的預(yù)測正確率。


3、RandomForestRegressor重要參數(shù):

criterion:string, optional (default=”mse”)

1、輸入“mse”使用均方誤差mean squared err(MSE),父節(jié)點(diǎn)和子節(jié)點(diǎn)之間的均方誤差的差額將被用來作為特征選擇的標(biāo)準(zhǔn),這種方法通過使用葉子節(jié)點(diǎn)的均值來最小化L2損失。

2、輸入“friedman_mse”使用費(fèi)爾德曼均方誤差,這種指標(biāo)使用費(fèi)爾德曼針對潛在分枝中的問題改進(jìn)后的均方誤差。

3、輸入“mae”使用絕對平均誤差MAE(mean absolute error),這種指標(biāo)使用葉節(jié)點(diǎn)的中值來最小化L1損失。

MSE=\frac{1}{N} \sum_{i=1}^N(f_{i}-y_{i}  ) ^2 ,

其中N是樣本數(shù)量,i是每一個數(shù)據(jù)樣本,fi是模型回歸出的數(shù)值,yi是樣本點(diǎn)i實(shí)際的數(shù)值標(biāo)簽。因此MSE的本質(zhì)是回歸值與真實(shí)值的差異。在回歸樹中,MSE不僅是最優(yōu)的分枝指標(biāo),也是最常用的衡量回歸樹回歸質(zhì)量的指標(biāo)。

回歸樹接口:

score:返回的是R平方,并不是MSE。R平方定義如下:

R^2=1-\frac{u}{v}  ,u= \sum_{i=1}^N(f_{i}-y_{i}  ) ^2,v =\sum_{i=1}^N(y_{i}-\hat{y}  )^2 ,

其中u是殘差平方和(MSE*N),v是總平方和,N是樣本數(shù)量,i是每個樣本,fi是模型回歸出的值,yi是樣本點(diǎn)i的實(shí)際數(shù)值標(biāo)簽。y帽是真實(shí)數(shù)值標(biāo)簽的平均數(shù)。

R2可以為正也可以為負(fù),當(dāng)殘差平方和遠(yuǎn)遠(yuǎn)大于模型總平方和時,模型非常糟糕,R2為負(fù);但MSE永遠(yuǎn)為正。但Sklearn當(dāng)中使用均方誤差作為評判標(biāo)準(zhǔn)時,卻是計(jì)算“負(fù)均方誤差”(neg_mean_squared_error)以負(fù)數(shù)表示。其實(shí)就是MSE前加了個負(fù)號。


4、附錄

參數(shù)列表

part_1
part_2
part_3

屬性列表

properties

接口列表

interface

5、總結(jié):本文詳細(xì)介紹了集成學(xué)習(xí)中Bagging的典型代表隨機(jī)森林的工作原理,同時對sklearn中RandomForestClassifier和RandomForestRegressor核心參數(shù)、屬性、接口進(jìn)行了介紹。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容