6. 整合學習&隨機森林
1. 整合學習
- 思想:基於不同演算法,算出不同的結果,對每一個值投票選擇多數的那個作為結果,比如對一個值預測三種演算法分別為:0,1,0,此時選擇0作為預測結果
1. hard voting
: 少數服從多數,
from sklearn.ensemble import VotingClassifier
from sklearn.svm import SVC
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
voting_clf = VotingClassifier(
estimators=[
('logic', LogisticRegression()),
('svm', SVC()),
('dtc', DecisionTreeClassifier())
],
voting='hard'
)
voting_clf.fit(x_train, y_train)
voting_clf.score(x_test, y_test)
2. soft voting
:考慮權重、概率相加:
要求每一個模型都能估計概率 predict_proba
SVC中的probability
from sklearn.ensemble import VotingClassifier
voting_soft = VotingClassifier(
estimators=[
('logic', LogisticRegression()),
('svm', SVC(probability=True)), # 對於SVM需要開啟probability概率
('dt', DecisionTreeClassifier(random_state=666))
],
voting='soft'
)
voting_soft.fit(x_train, y_train)
voting_soft.score(x_test, y_test)
3. 子模型
- 雖然機器學習方法很多,但是投票角度還是較少,需要更多的子模型,子模型準確率不需要太高,但是子模型之間不能一致,需要有差異性
- 建立差異性:每個子模型是同一種模型的對不同樣本資料處理,比如500個樣本,每一個子模型隨機(放回
Bagging
或不放回Pasting
)抽取100個,
from sklearn.ensemble import BaggingClassifier
from sklearn.tree import DecisionTreeClassifier
# 使用bagging建立子模型,傳入模型方法,n_estimators為子模型個數,隨機抽取的樣本數量max_samples,放回的隨機抽取為bootstrap=True, 使用n_jobs平行計算各個隨機抽樣
bagging_clf = BaggingClassifier(DecisionTreeClassifier(), n_estimators=500, max_samples=100, bootstrap=True, n_jobs=-1)
bagging_clf.fit(x_train, y_train)
bagging_clf.score(x_test, y_test)
- 但是對於放回的隨機抽樣,平均大約有37%的樣本沒有被取到,不單獨劃分測試資料集,直接使用剩下的沒有取到的37%樣本作為測試資料集,
oob_score=True
bagging_clf3 = BaggingClassifier( DecisionTreeClassifier(), n_estimators=500, max_samples=100, bootstrap=True, oob_score=True )
bagging_clf3.fit(x, y)
bagging_clf3.oob_score_
- 針對Bagging的深入:針對特徵隨機取樣:max_features=10(最多的特徵隨機取樣), bootstrap_features=True 特徵也是放回取樣
2. 隨機森林和Extra-Trees
- 隨機森林:在決策樹節點劃分上,隨機生成多個樹
from sklearn.ensemble import RandomForestClassifier
rf_clf = RandomForestClassifier(n_estimators=500, bootstrap=True, oob_score=True, n_jobs=-1)
rf_clf.fit(x, y)
rf_clf.oob_score_
- Extra-Trees: 決策樹在節點劃分上,使用隨機的特徵和隨機的閾值,提供了額外的隨機性,抑制過擬合,但增加了bias,具有更快的訓練速度
from sklearn.ensemble import ExtraTreesClassifier
et_clf = ExtraTreesClassifier(n_estimators=500, bootstrap=True, oob_score=True, n_jobs=-1,max_leaf_nodes=16)
et_clf.fit(x, y)
et_clf.oob_score_
3. Boosting
整合多個模型,每一個模型都在增強Boosting整體的效果
Ada Boosting
每一輪都是對上一輪沒有擬合好的資料賦值較高權重,使得在當前輪能夠擬合上一輪沒有擬合好的資料,不斷的整合
- Gradient Boosting
每一次訓練都針對上次產生錯誤的資料子集訓練
from sklearn.ensemble import GradientBoostingClassifier
gb_clf = GradientBoostingClassifier(n_estimators=500)
gb_clf.fit(x_train, y_train)
gb_clf.score(x_test, y_test)
- 使用Boosting解決迴歸問題
from sklearn.ensemble import AdaBoostRegressor
from sklearn.ensemble import GradientBoostingRegressor
相關文章
- 【機器學習】整合學習——Bagging與隨機森林機器學習隨機森林
- 隨機森林和機器學習隨機森林機器學習
- 01整合學習-概述、Bagging-隨機森林、袋外錯誤率隨機森林
- 【機器學習】--決策樹和隨機森林機器學習隨機森林
- 隨機森林n_estimators 學習曲線隨機森林
- R資料分析:整合學習方法之隨機生存森林的原理和做法,例項解析隨機
- 隨機森林演算法隨機森林演算法
- 隨機森林的祕密隨機森林
- R:microtable包隨機森林隨機森林
- 隨機森林、EM、HMM、LDA隨機森林HMMLDA
- ENVI新機器學習:隨機森林遙感分類工具操作手冊機器學習隨機森林
- 隨機森林演算法梳理隨機森林演算法
- 決策樹和隨機森林隨機森林
- 機器學習演算法系列(十八)-隨機森林演算法(Random Forest Algorithm)機器學習演算法隨機森林randomRESTGo
- 【小白學AI】隨機森林 全解 (從bagging到variance)AI隨機森林
- 機器學習(五):通俗易懂決策樹與隨機森林及程式碼實踐機器學習隨機森林
- 機器學習-整合學習機器學習
- 一句話總結隨機森林隨機森林
- Bagging(Bootstrap aggregating)、隨機森林(random forests)、AdaBoostboot隨機森林randomREST
- 隨機森林R語言預測工具隨機森林R語言
- 隨機森林演算法深入淺出隨機森林演算法
- 機器學習-整合學習LightGBM機器學習
- 大白話5分鐘帶你走進人工智慧-第二十八節整合學習之隨機森林概念介紹(1)人工智慧隨機森林
- 隨機學習簡介隨機
- 【火爐煉AI】機器學習007-用隨機森林構建共享單車需求預測模型AI機器學習隨機森林模型
- 聊聊基於Alink庫的隨機森林模型隨機森林模型
- 隨機森林演算法原理與Python實現隨機森林演算法Python
- 隨機森林VS神經網路:哪個更好?隨機森林神經網路
- 機器學習基礎——整合學習1機器學習
- 【火爐煉AI】機器學習051-視覺詞袋模型+極端隨機森林建立影象分類器AI機器學習視覺模型隨機森林
- 機器學習第一步,這是一篇手把手的隨機森林入門實戰機器學習隨機森林
- 【火爐煉AI】機器學習051-視覺詞袋模型+極端隨機森林建立影像分類器AI機器學習視覺模型隨機森林
- 機器學習整合學習—Apple的學習筆記機器學習APP筆記
- 【Python機器學習實戰】決策樹與整合學習(三)——整合學習(1)Python機器學習
- Bagging與隨機森林(RF)演算法原理總結隨機森林演算法
- 機器學習之隨機梯度下降法機器學習隨機梯度
- 【Python機器學習實戰】決策樹與整合學習(四)——整合學習(2)GBDTPython機器學習
- 【python3】基於隨機森林的氣溫預測Python隨機森林