sklearn 随机森林_初识随机森林及sklearn实现
生活随笔
收集整理的這篇文章主要介紹了
sklearn 随机森林_初识随机森林及sklearn实现
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1、隨機森林簡介
(1)相關概念介紹:集成學習(Ensemble)、自助法(bootstrap)、自助抽樣集成(bagging)
- 集成學習:組合多個弱監督模型得到一個更全全面的強監督模型,增強整體的泛化性能。也就是說,即便某一個弱分類器得到了錯誤的預測,其他的弱分類器也可以將錯誤糾正回來。
- 自助法(bootstrap):從樣本自身中再生成很多可用的同等規模的新樣本,使模型具有更穩定的抗過擬合能力。實際上是一個有放回抽樣問題,假設我們有大小為N的樣本,我們利用放回抽樣,從中得到m個大小為N的樣本用來訓練。
- 自助抽樣集成(bagging):將訓練集分成m個新的訓練集,然后在每個新訓練集上構建一個模型,利用集成學習的思想獎m個模型進行整合,最終得到預測模型。整合機制對于分類問題選擇Majority Voting(多數投票規則),對于回歸問題選擇平均值(各弱監督模型的均值)。
(2)隨機森林簡述:是一種以決策樹為基分類器的集成算法,通過組合多棵獨立的決策樹后根據投票或取均值的方式得到最終預測結果的機器學習方法,往往比單棵樹具有更高的準確率和更強的穩定性。更具體一點,隨機森林實際上是將決策樹用于bagging中的模型,首先,用bootstrap方法生成m個訓練集,然后,對于每個訓練集,構造一顆決策樹,即生成了m個決策樹,最后利用bagging中集成學習的思想,生成新的預測模型。(決策樹介紹參見:https://zhuanlan.zhihu.com/p/149832596)
2、隨機森林實現
隨機森林模型的搭建和決策樹模型基本一致,包括數據導入、預處理、模型搭建、訓練、結果展示。但隨機森林很重要的一步是超參數調優,結合Otto商品分類案例,對于超參數和調優方法進行介紹,參考:https://blog.csdn.net/weixin_38664232/article/details/87872929。
(1)模型的構建
import pandas as pd import numpy as np from sklearn.ensemble import RandomForestClassifier #隨機森林分類模型 from sklearn.model_selection import GridSearchCV #進行超參數調優 from sklearn.model_selection import cross_val_score #進行交叉驗證 #省略了數據的導入模塊,只列出部分重點代碼 RF1 = RandomForestClassifier() #創建隨機森林分類器 loss=cross_val_score(RF1,X_train,y_train,cv=3,score='neg_log_loss') #進行交叉驗證(2)超參數調優
需要調優的參數有:
- Bagging參數:樹的數目n_estimators
- 與決策樹相關的超參數:max_features(最大特征數目)、max_depth(樹的深度)或max_leaf_nodes(葉子節點的數目)、min_samples_leaf(葉子節點的最小樣本數)、min_samples_split(中間節點的最小樣本數)、min_weight_fraction_leaf(葉子節點的樣本權重占總權重的比例)
調優中注意事項:
- 與決策樹max_features通常越大越好不同,隨機森林中的max_features通常較小,每個基學習器之間的性慣性更小,集成模型的性能可能反而會更好。
- max_leaf_nodes和max_depth類似,調試其中任意一個就好。
- min_samples_split和min_samples_leaf通常也有關系,調試其中任意一個就好。
- min_weight_fraction_leaf:由于本任務我們對類別/樣本沒有設置,顧無需調整。
(3)隨機森林總結
- 優點:有較好的抗過擬合能力;預測結果較穩定;可用來解決分類和回歸問題。
- 缺點:當訓練數據中存在噪音,也會出現過擬合情況;復雜性高,訓練時間較長。
- 改進:對輸入數據進行預處理,針對訓練時間長問題,可以考慮降維算法對原始特征進行降維處理;針對數據存在噪音問題,可以進行原始數據濾波等相關處理。
參考文獻:
《機器學習》、博客《隨機森林案例--Otto商品分類》
《機器學習 周志華 人工智能入門教程 西瓜書機器學習入門中文教科書 人工智能深度學習框》【摘要 書評 試讀】- 京東圖書?item.jd.com隨機森林案例--Otto商品分類_fly_Xiaoma的博客-CSDN博客_隨機森林案例?blog.csdn.net總結
以上是生活随笔為你收集整理的sklearn 随机森林_初识随机森林及sklearn实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: git 获取最新代码_常用命令之git操
- 下一篇: 动态代理的两种方式_动态代理是基于什么原