目錄
1、集成算法概述
2、Sklearn中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ù)抽中到自助集的概率為:=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損失。
,
其中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平方定義如下:
,
,
,
其中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ù)列表



屬性列表

接口列表

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