隨機森林演算法梳理

2022-04-29 12:03:17 字數 3123 閱讀 1161

1.整合學習的概念

整合學習通過構建並結合多個學習器來完成學習任務,有時也被成為多分類器系統,基於委員會的學習。整合學習是通過將多個學習器進行結合,常可獲得比單一學習器顯著優越的泛化的效能。如何去提高整合學習的效能,最好是個體學習器應該「好而不同」,即個體學習器要有一定準確性,不能太壞,也不能太好。

否則整合可能導致結果變好,不變,或者變壞。

2.個體學習的概念

個體學習器通過由乙個現有的學習演算法從訓練資料產生,例如決策樹,神經網路等,此時整合中只包含同種型別的個體學習器。比如說「決策樹整合」全是決策樹,「神經網路整合」全是神經網路,這樣的整合是「同質」的。同質中的個體學習器稱「基學習器」,相應的學習演算法叫「基學習演算法」。

3.boosting 和 bagging

目前整合學習的方法可分為兩大類:

boosting 個體學習器存在強依賴關係,必須序列生成的序列化方法。

代表是adaboots演算法,簡單理解就是基學習器的線性組合。

bagging 個體學習器之間沒有強依賴的關係,可同時生成的並行化的方法。

bagging的實現是取樣出t個含m個訓練集的取樣集,然後基於每個取樣集訓練出乙個基學習器,再將這些學習器結合。如果是分類任務則使用投票法,如果是回歸問題就採用簡單平均法。

4.結合策略(平均法,投票法,學習法)

簡單平均法則是wi = 1/t

投票法絕對多數投票法,某標記超過半數,則**為改標記,否則拒絕**。

相對多數投票法,**為最多的標記,如果平票,則隨機乙個。

加權投票法,再分類器中新增權重,再做相對多數投票法。

學習法通過另乙個學習器來來進行結合

5.隨機森林的思想

rf在以決策樹為基礎器構建bagging整合的基礎上,既已不在決策樹的訓練過程中引入了隨機屬性的選擇。傳統的決策樹在選擇劃分屬性是在當前結合的屬性集合中選擇乙個最優的,而在rf中,對於基決策樹的每個節點,先從該節點的屬性集合中隨機選擇乙個包含k個屬性的子集,然後再從這個子集中選擇乙個最優的使用者劃分。這裡k控制了隨機性的引入程度。

6.隨機森林的推廣

extremely randomized trees

isolation forest

7.隨機森林的優缺點

優點:隨著個體學習器的增加,rf通常會收斂到更低的泛化唔錯。隨機森林的效果常優於bagging,因為bagging是確定性的決策樹,而在劃分屬性屬性時要對節點的所有屬性進行考察,而rf使用「隨機性」,只考慮乙個屬性的子集。

缺點:起始效能較差,特別是在整合中只包含乙個基學習器時候。

8.sklearn引數

class sklearn.ensemble.randomforestclassifier(n_estimators=10, crite-rion=』gini』, max_depth=none,  

min_samples_split=2, min_samples_leaf=1,

min_weight_fraction_leaf=0.0,

max_features=』auto』,

max_leaf_nodes=none, bootstrap=true,

oob_score=false, n_jobs=1, ran-dom_state=none, verbose=0,

warm_start=false, class_weight=none)

n_estimators :是森林裡樹的數量,通常數量越大,效果越好,但是計算時間也會隨之增加。 此外要注意,當樹的數量超過乙個臨界值之後,演算法的效果並不會很顯著地變好。

criterion: 」gini」 or 「entropy」(default=」gini」)是計算屬性的gini(基尼不純度)還是entropy(資訊增益),來選擇最合適的節點。

max_depth: (default=none)設定樹的最大深度,預設為none,這樣建樹時,會使每乙個葉節點只有乙個類別,或是達到min_samples_split。

min_samples_split:根據屬性劃分節點時,每個劃分最少的樣本數。

min_samples_leaf:葉子節點最少的樣本數。

min_weight_fraction_leaf: (default=0) 葉子節點所需要的最小權值

max_features: 是分割節點時考慮的特徵的隨機子集的大小。 這個值越低,方差減小得越多,但是偏差的增大也越多。

當為整數時,即最大特徵數;當為小數時,訓練集特徵數*小數;

if 「auto」, then max_features=sqrt(n_features).

if 「sqrt」, thenmax_features=sqrt(n_features).

if 「log2」, thenmax_features=log2(n_features).

if none, then max_features=n_features.

max_leaf_nodes: (default=none)葉子樹的最大樣本數。

bootstrap=true:是否有放回的取樣。

oob_score=false:oob(out of band,帶外)資料,即:在某次決策樹訓練中沒有被bootstrap選中的資料。多單個模型的引數訓練,我們知道可以用cross validation(cv)來進行,但是特別消耗時間,而且對於隨機森林這種情況也沒有大的必要,所以就用這個資料對決策樹模型進行驗證,算是乙個簡單的交叉驗證。效能消耗小,但是效果不錯。  

n_jobs=1:並行job個數。這個在ensemble演算法中非常重要,尤其是bagging(而非boosting,因為boosting的每次迭代之間有影響,所以很難進行並行化),因為可以並行從而提高效能。1=不並行;n:n個並行;-1:cpu有多少core,就啟動多少job。

random_state : int, randomstate instance or none, optional (default=none) 整數,randomstate例項,或者為none,可選(預設值為none)

verbose : int, optional (default=0) 整數,可選的(預設值為0)

warm_start=false:熱啟動,決定是否使用上次呼叫該類的結果然後增加新的。  

class_weight=none:各個label的權重。  

引數參考: 

9.應用場景

分類回歸

隨機森林演算法梳理

構建並結合多個學習器來完成學習任務,有時也被稱為多分類器系統 multi classifier system 基於委員會的學習 cjommottee based learning 根據個體學習器的生成方式分為 個體學習器間存在強依賴關係 必須序列生成的序列方法。如 boosting 個體學習器間不存...

隨機森林演算法梳理

整合學習通過構建並結合多個學習器來完成學習任務。即先產生一組個體學習器,再用某種策略將它們結合起來。整合學習通過將多個學習器進行結合,常可獲得比單一學習器顯著優越的泛化效能。根據個體學習器的生成方式,目前整合學習方法大致可分為兩大類 即個體學習器間存在強依賴關係 必須序列化生成的序列化方法,以及個體...

隨機森林演算法梳理

隨機森林演算法梳理 整合學習,由多個基學習器組成,核心在於各學習器的多樣性和準確性。大致分為blending bagging boosting。bagging演算法是通過bootstrap重取樣生成了多棵決策樹,然後根據投票 分類 或求平均 回歸 來給出最終輸出值,側重於減小方差 如果xi方差為xi...