图解机器学习算法(7) | 随机森林分类模型详解(机器学习通关指南·完结)
- 作者:韓信子@ShowMeAI
- 教程地址:https://www.showmeai.tech/tutorials/34
- 本文地址:https://www.showmeai.tech/article-detail/191
- 聲明:版權所有,轉載請聯系平臺與作者并注明出處
引言
隨機森林是一種由決策樹構成的(并行)集成算法,屬于Bagging類型,通過組合多個弱分類器,最終結果通過投票或取均值,使得整體模型的結果具有較高的精確度和泛化性能,同時也有很好的穩定性,廣泛應用在各種業務場景中。
隨機森林有如此優良的表現,主要歸功于「隨機」和「森林」,一個使它具有抗過擬合能力,一個使它更加精準。我們會在下文中做更詳細的展開講解。
(本篇部分內容涉及到機器學習基礎知識、決策樹、回歸樹算法,沒有先序知識儲備的寶寶可以查看ShowMeAI的文章 圖解機器學習 | 機器學習基礎知識、決策樹模型詳解 及 回歸樹模型詳解)。
1.集成學習
1)集成學習
學習隨機森林,我們需要先了解一些概念,比如第1個大家要了解的概念是集成學習(ensemble learning):
對于訓練數據集,我們訓練一系列「個體學習器」,再通過「結合策略」將它們集成起來,形成一個更強的學習器,這就是「集成學習」在做的事情,內核思想類似「三個臭皮匠,頂個諸葛亮」。
2)個體學習器
個體學習器是相對于集成學習來說的,其實我們在之前了解到的很多模型,比如C4.5決策樹算法、邏輯回歸算法、樸素貝葉斯算法等,都是個體學習器。
-
若集成中只包含同種類型的個體學習器,叫做「同質」集成,個體學習器稱作「基學習器」。例如隨機森林中全是決策樹集成。
-
若集成中包含不同類型的個體學習器,叫做「異質」集成,個體學習器稱作「組件學習器」。例如同時包含決策樹和神經網絡進行集成。
個體學習器代表的是單個學習器,集成學習代表的是多個學習器的結合。
3)集成學習核心問題
(1)使用什么樣的個體學習器?
- 個體學習器不能太「弱」,需要有一定的準確性。
- 個體學習器之間要具有「多樣性」,即存在差異性。
(2)如何選擇合適的結合策略構建強學習器?
- 并行組合方式,例如隨機森林。
- 傳統組合方式,例如boosting樹模型。
2.Bagging
我們在這里講到的隨機森林是并行集成模型,而Bagging是并行式集成學習方法最著名的代表。
1)Bootstrap Sampling
要理解bagging,首先要了解自助采樣法(Bootstrap Sampling):
-
給定包含 mmm 個樣本的數據集,我們先隨機取出一個樣本放入采樣集中,再把該樣本放回初始數據集,使得下次采樣時該樣本仍有可能被選中。
-
上述過程重復 mmm 輪,我們得到 mmm 個樣本的采樣集,初始訓練集中有的樣本在采樣集中多次出現,有的則從未出現,約63.2%的樣本出現在采樣集中,而未出現的約36.8%的樣本可用作驗證集來對后續的泛化性能進行「包外估計」。
2)Bagging
Bagging是Bootstrap aggregating的縮寫,是在Boostrap Sampling基礎上構建的,上述的采樣過程我們可以重復 TTT 次,采樣出 TTT 個含 mmm 個訓練樣本的采樣集,然后基于每個采樣集訓練出一個基學習器,然后將這些基學習器進行結合。
在對預測輸出進行結合時,Bagging通常對分類任務使用簡單投票法,對回歸任務使用簡單平均法,這就是Bagging的基本流程。
從「偏差-方差分解」的角度看,Bagging主要關注降低方差,因此它在不剪枝的決策樹、神經網絡等易受到樣本擾動的學習器上效用更明顯。
3.隨機森林算法
1)隨機森林算法介紹
Random Forest(隨機森林,簡稱RF)是一種基于樹模型的Bagging的優化版本。核心思想依舊是Bagging,但是做了一些獨特的改進——RF使用了CART決策樹作為基學習器。具體過程如下:
-
輸入為樣本集 D={(x,y1),(x2,y2),…,(xm,ym)}D=\left\{\left(x, y_{1}\right),\left(x_{2}, y_{2}\right), \ldots,\left(x_{m}, y_{m}\right)\right\}D={(x,y1?),(x2?,y2?),…,(xm?,ym?)}
-
對于 t=1,2,...,Tt=1,2,...,Tt=1,2,...,T:
- 對訓練集進行第 ttt 次隨機采樣,共采集 mmm 次,得到包含 mmm 個樣本的采樣集 DTD_TDT?。
- 用采樣集 DTD_TDT? 訓練第 TTT 個決策樹模型 GT(x)G_{T} (x)GT?(x) ,在訓練決策樹模型的節點的時候,在節點上所有的樣本特征中選擇一部分樣本特征,在這些隨機選擇的部分樣本特征中選擇一個最優的特征來做決策樹的左右子樹劃分。
-
分類場景,則 TTT 個基模型(決策樹)投出最多票數的類別為最終類別。
2)隨機森林核心特點
隨機森林核心點是「隨機」和「森林」,也是給它帶來良好性能的最大支撐。
「隨機」主要體現在兩個方面:
-
樣本擾動:直接基于自助采樣法(Bootstrap Sampling),使得初始訓練集中約63.2%的樣本出現在一個采樣集中。并帶來數據集的差異化。
-
屬性擾動:在隨機森林中,對基決策樹的每個結點,先在該結點的特征屬性集合中隨機選擇k個屬性,然后再從這k個屬性中選擇一個最優屬性進行劃分。這一重隨機性也會帶來基模型的差異性。
「集成」體現在:根據多個(差異化)采樣集,訓練得到多個(差異化)決策樹,采用簡單投票或者平均法來提高模型穩定性和泛化能力。
3)隨機森林決策邊界可視化
下面是對于同一份數據集(iris數據集),我們使用決策樹和不同樹棵樹的隨機森林做分類的結果,我們對其決策邊界做了可視化。
可以很明顯地看到,隨著隨機森林中決策樹數量的增多,模型的泛化能力逐漸增強,決策邊界越來越趨于平滑(受到噪聲點的影響越來越小)。
4)隨機森林算法優點
下面我們來總結一下隨機森林的優缺點:
(1)隨機森林優點
- 對于高維(特征很多)稠密型的數據適用,不用降維,無需做特征選擇。
- 構建隨機森林模型的過程,亦可幫助判斷特征的重要程度。
- 可以借助模型構建組合特征。
- 并行集成,有效控制過擬合。
- 工程實現并行簡單,訓練速度快。
- 對于不平衡的數據集友好,可以平衡誤差。
- 對于特征確實魯棒性強,可以維持不錯的準確度。
(2)隨機森林缺點
- 在噪聲過大的分類和回歸數據集上還是可能會過擬合。
- 相比單一決策樹,因其隨機性,模型解釋會更復雜一些。
4.影響隨機森林的參數與調優
上面我們已經系統了解了隨機森林的原理與機制,下面我們一起來看看工程應用實踐中的一些重點,比如隨機森林模型有眾多可調參數,它們有什么影響,又如何調優。
1)核心影響參數
(1)生成單顆決策樹時的特征數(max_features)
-
增加max_features一般能提高單個決策樹模型的性能,但降低了樹和樹之間的差異性,且可能降低算法的速度。
-
太小的max_features會影響單顆樹的性能,進而影響整體的集成效果。
-
需要適當地平衡和選擇最佳的max_features。
(2)決策樹的棵樹(n_estimators)
-
較多的子樹可以讓模型有更好的穩定性和泛化能力,但同時讓模型的學習速度變慢。
-
我們會在計算資源能支撐的情況下,選擇稍大的子樹棵樹。
(3)樹深(max_depth)
-
太大的樹深,因為每顆子樹都過度學習,可能會有過擬合問題。
-
如果模型樣本量多特征多,我們會限制最大樹深,提高模型的泛化能力。
2)參數調優
(1)RF劃分時考慮的最大特征數(max_features)
- 總數的百分比,常見的選擇區間是[0.5, 0.9]。
(2)決策樹的棵樹(n_estimators)
- 可能會設置為>50的取值,可根據計算資源調整。
(3)決策樹最大深度(max_depth)
- 常見的選擇在4-12之間。
(4)內部節點再劃分所需最小樣本數(min_samples_split)
-
如果樣本量不大,不需要調整這個值。
-
如果樣本量數量級非常大,我們可能會設置這個值為16,32,64等。
(5)葉子節點最少樣本數(min_samples_leaf)
- 為了提高泛化能力,我們可能會設置這個值>1。
更多監督學習的算法模型總結可以查看ShowMeAI的文章 AI知識技能速查 | 機器學習-監督學習。
視頻教程
可以點擊 B站 查看視頻的【雙語字幕】版本
【雙語字幕+資料下載】MIT 6.036 | 機器學習導論(2020·完整版)
雙語字幕+資料下載】MIT 6.036 | 機器學習導論(2020·完整版)
https://www.bilibili.com/video/BV1y44y187wN?p=12
ShowMeAI圖解機器學習算法系列(完整版)
- ShowMeAI 圖解機器學習算法(1) | 機器學習基礎知識
- ShowMeAI 圖解機器學習算法(2) | 模型評估方法與準則
- ShowMeAI 圖解機器學習算法(3) | KNN算法及其應用
- ShowMeAI 圖解機器學習算法(4) | 邏輯回歸算法詳解
- ShowMeAI 圖解機器學習算法(5) | 樸素貝葉斯算法詳解
- ShowMeAI 圖解機器學習算法(6) | 決策樹模型詳解
- ShowMeAI 圖解機器學習算法(7) | 隨機森林分類模型詳解
- ShowMeAI 圖解機器學習算法(8) | 回歸樹模型詳解
- ShowMeAI 圖解機器學習算法(9) | GBDT模型詳解
- ShowMeAI 圖解機器學習算法(10) | XGBoost模型最全解析
- ShowMeAI 圖解機器學習算法(11) | LightGBM模型詳解
- ShowMeAI 圖解機器學習算法(12) | 支持向量機模型詳解
- ShowMeAI 圖解機器學習算法(13) | 聚類算法詳解
- ShowMeAI 圖解機器學習算法(14) | PCA降維算法詳解
ShowMeAI系列教程精選推薦
- 大廠技術實現:推薦與廣告計算解決方案
- 大廠技術實現:計算機視覺解決方案
- 大廠技術實現:自然語言處理行業解決方案
- 圖解Python編程:從入門到精通系列教程
- 圖解數據分析:從入門到精通系列教程
- 圖解AI數學基礎:從入門到精通系列教程
- 圖解大數據技術:從入門到精通系列教程
- 圖解機器學習算法:從入門到精通系列教程
- 機器學習實戰:手把手教你玩轉機器學習系列
- 深度學習教程:吳恩達專項課程 · 全套筆記解讀
- 自然語言處理教程:斯坦福CS224n課程 · 課程帶學與全套筆記解讀
- 深度學習與計算機視覺教程:斯坦福CS231n · 全套筆記解讀
總結
以上是生活随笔為你收集整理的图解机器学习算法(7) | 随机森林分类模型详解(机器学习通关指南·完结)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 移动视频技术
- 下一篇: [ECMAScript] module、