簡單粗暴理解與實現機器學習之集成學習(二):Bagging集成原理、隨機森林構造過程、 隨機森林api介紹、隨機森林預測案例、bagging集成優點

集成學習

學習目標

  • 瞭解集成學習中主要解決的兩個核心任務
  • 知道bagging集成原理
  • 知道隨機森林決策樹的建立過程
  • 知道爲什麼需要隨機有放回(Bootstrap)的抽樣
  • 應用RandomForestClassifie實現隨機森林算法
  • 知道boosting集成原理
  • 知道bagging和boosting的區別
  • 瞭解gbdt實現過程
    在這裏插入圖片描述

5.2 Bagging

1 Bagging集成原理

目標:把下面的圈和方塊進行分類

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-pUrnHP6u-1583250387272)(../images/bagging1.png)]

實現過程:

1.採樣不同數據集

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-WZBTlQwQ-1583250387273)(../images/bagging2.png)]

2.訓練分類器

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-BXmawttL-1583250387274)(../images/bagging3.png)]

3.平權投票,獲取最終結果

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-h7oUUBBw-1583250387274)(../images/bagging4.png)]

4.主要實現過程小結

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-JAYDopee-1583250387274)(../images/bagging5.png)]

2 隨機森林構造過程

在機器學習中,隨機森林是一個包含多個決策樹的分類器,並且其輸出的類別是由個別樹輸出的類別的衆數而定。

隨機森林 = Bagging + 決策樹

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-XT2sHPlQ-1583250387275)(../images/tf1.png)]

例如, 如果你訓練了5個樹, 其中有4個樹的結果是True, 1個樹的結果是False, 那麼最終投票結果就是True

隨機森林夠造過程中的關鍵步驟(用N來表示訓練用例(樣本)的個數,M表示特徵數目):

1)一次隨機選出一個樣本,有放回的抽樣,重複N次(有可能出現重複的樣本)

2) 隨機去選出m個特徵, m <<M,建立決策樹

  • 思考

    • 1.爲什麼要隨機抽樣訓練集?

      如果不進行隨機抽樣,每棵樹的訓練集都一樣,那麼最終訓練出的樹分類結果也是完全一樣的

    • 2.爲什麼要有放回地抽樣?

      如果不是有放回的抽樣,那麼每棵樹的訓練樣本都是不同的,都是沒有交集的,這樣每棵樹都是“有偏的”,都是絕對“片面的”(當然這樣說可能不對),也就是說每棵樹訓練出來都是有很大的差異的;而隨機森林最後分類取決於多棵樹(弱分類器)的投票表決。

3 隨機森林api介紹

  • sklearn.ensemble.RandomForestClassifier(n_estimators=10, criterion=’gini’, max_depth=None, bootstrap=True, random_state=None, min_samples_split=2)
    • n_estimators:integer,optional(default = 10)森林裏的樹木數量120,200,300,500,800,1200
    • Criterion:string,可選(default =“gini”)分割特徵的測量方法
    • max_depth:integer或None,可選(默認=無)樹的最大深度 5,8,15,25,30
    • max_features="auto”,每個決策樹的最大特徵數量
      • If “auto”, then max_features=sqrt(n_features).
      • If “sqrt”, then max_features=sqrt(n_features)(same as “auto”).
      • If “log2”, then max_features=log2(n_features).
      • If None, then max_features=n_features.
    • bootstrap:boolean,optional(default = True)是否在構建樹時使用放回抽樣
    • min_samples_split:節點劃分最少樣本數
    • min_samples_leaf:葉子節點的最小樣本數
  • 超參數:n_estimator, max_depth, min_samples_split,min_samples_leaf

4 隨機森林預測案例

  • 實例化隨機森林
# 隨機森林去進行預測
rf = RandomForestClassifier()
  • 定義超參數的選擇列表
param = {"n_estimators": [120,200,300,500,800,1200], "max_depth": [5, 8, 15, 25, 30]}
  • 使用GridSearchCV進行網格搜索
# 超參數調優
gc = GridSearchCV(rf, param_grid=param, cv=2)

gc.fit(x_train, y_train)

print("隨機森林預測的準確率爲:", gc.score(x_test, y_test))

注意

  • 隨機森林的建立過程
  • 樹的深度、樹的個數等需要進行超參數調優

5 bagging集成優點

Bagging + 決策樹/線性迴歸/邏輯迴歸/深度學習… = bagging集成學習方法

經過上面方式組成的集成學習方法:

  1. 均可在原有算法上提高約2%左右的泛化正確率
  2. 簡單, 方便, 通用
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章