整合學習方法之隨機森林
阿新 • • 發佈:2020-12-20
1、 什麼是整合學習方法
整合學習通過建立幾個模型組合的來解決單一預測問題。它的工作原理是生成多個分類器/模型,各自獨立地學習和作出預測。這些預測最後結合成組合預測,因此優於任何一個單分類的做出預測。
2、 什麼是隨機森林
在機器學習中,隨機森林是一個包含多個決策樹的分類器,並且其輸出的類別是由個別樹輸出的類別的眾數而定。
例如, 如果你訓練了5個樹, 其中有4個樹的結果是True, 1個數的結果是False, 那麼最終投票結果就是True
3、 隨機森林原理過程
學習演算法根據下列演算法而建造每棵樹:
- 用N來表示訓練用例(樣本)的個數,M表示特徵數目。
- 1、一次隨機選出一個樣本,重複N次, (有可能出現重複的樣本)
- 2、隨機去選出m個特徵, m <<M,建立決策樹
- 採取bootstrap抽樣
3.1 為什麼採用BootStrap抽樣
- 為什麼要隨機抽樣訓練集?
- 如果不進行隨機抽樣,每棵樹的訓練集都一樣,那麼最終訓練出的樹分類結果也是完全一樣的
- 為什麼要有放回地抽樣?
- 如果不是有放回的抽樣,那麼每棵樹的訓練樣本都是不同的,都是沒有交集的,這樣每棵樹都是“有偏的”,都是絕對“片面的”(當然這樣說可能不對),也就是說每棵樹訓練出來都是有很大的差異的;而隨機森林最後分類取決於多棵樹(弱分類器)的投票表決。
3.2 API
-
class 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
- criteria: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
.
- If "auto", then
- bootstrap:boolean,optional(default = True)是否在構建樹時使用放回抽樣
- min_samples_split:節點劃分最少樣本數
- min_samples_leaf:葉子節點的最小樣本數
-
超引數:n_estimator, max_depth, min_samples_split,min_samples_leaf
3.3 程式碼
# 隨機森林去進行預測
rf = RandomForestClassifier()
param = {"n_estimators": [120,200,300,500,800,1200], "max_depth": [5, 8, 15, 25, 30]}
# 超引數調優
gc = GridSearchCV(rf, param_grid=param, cv=2)
gc.fit(x_train, y_train)
print("隨機森林預測的準確率為:", gc.score(x_test, y_test))
4、總結
- 在當前所有演算法中,具有極好的準確率
- 能夠有效地執行在大資料集上,處理具有高維特徵的輸入樣本,而且不需要降維
- 能夠評估各個特徵在分類問題上的重要性
提問
1、估計器的工作流程是什麼?
答案:
第一步: 例項化估計器
第二步: 呼叫估計器的fit函式, 用訓練集的特徵值和目標值訓練
第三步: 呼叫預測函式predict, 用測試集的特徵值預測
2、決策樹的劃分依據是什麼?(課程介紹的主要方法)
答案: 更具資訊增益最大的屬性劃分.