Python--随机森林模型
機器學習
- 概念
- Bagging算法
- Boosting算法
- 隨機森林模型的基本原理
- 隨機森林模型的代碼實現
大數據分析與機器學習
概念
?集成學習模型:將多個模型組合在一起,從而產生更強大的模型
?隨機森林模型:非常典型的集成學習模型
?集成模型簡介:
?集成學習模型使用一系列弱學習器(也稱為基礎模型或基模型)進行學習,并將各個弱學習器的結果進行整合,從而獲得比單個學習器更好的學習效果。
?集成學習模型的常見算法有Bagging算法和 Boosting算法兩種。
?Bagging算法的典型機器學習模型為隨機森林模型,而Boosting算法的典型機器學習模型則為AdaBoost、GBDT、XGBoost 和 LightGBM模型。
Bagging算法
Bagging的想法是采用類似于“民主投票”的方式,即每一個基礎模型都有一票,最終結果通過所有基礎模型投票,少數服從多數的原則產生預測結果。
原理:從原始訓練數據中(假設共有10000條數據),隨機有放回地抽取10000次數據構成一個新的數據集(因為是隨機有放回抽樣,所以可能出現某一條數據多次被抽中,也有可能某一條數據一次也沒有被抽中),每次使用一個訓練樣本訓練一個基礎模型。這樣進行有放回的隨機抽取n次后,訓練結束時我們就能獲得n個由不同的數據集訓練的基礎模型,也稱之為n個弱學習器,根據這n個弱學習器的結果,我們可以獲得一個更加準確合理的結果。
Boosting算法
?Boosting算法的本質是將弱學習器提升為強學習器,
?它和Bagging的區別在于,Bagging對待所有的基礎模型一視同仁。而Boosting則做到了對于基礎模型的“區別對待”
?通俗來講,Boosting算法注重“培養精英”和“重視錯誤”
-
“培養精英”,
即每一輪對于預測結果較為準確的基礎模型,會給予它一個較大的權重,表現不好的基礎模型則會降低它的權重。
這樣在最終預測時,“優秀模型”的權重是大的,相當于它可以投出多票,而**“一般模型”只能在投票時投出一票或不能投票**。 -
“重視錯誤”
即在每一輪訓練后改變訓練數據的權值或概率分布,通過提高那些在前一輪被基礎模型預測錯誤樣例的權值,減小前一輪預測正確樣例的權值,來使得分類器對誤分的數據有較高的重視程度,從而提升模型的整體效果。原理如圖:
隨機森林模型的基本原理
?隨機森林(Random Forest)是一種經典的Bagging模型,其弱學習器為決策樹模型。
?如下圖所示,隨機森林模型會在原始數據集中隨機抽樣,構成n個不同的樣本數據集,然后根據這些數據集搭建n個不同的決策樹模型,最后根據這些決策樹模型的平均值(針對回歸模型)或者投票(針對分類模型)情況來獲取最終結果。
?為了保證模型的泛化能力(或者說通用能力),隨機森林在建立每棵樹的時候,往往會遵循兩個基本原則:
- 數據隨機:隨機地從所有數據當中有放回地抽取數據作為其中一棵決策樹的數據進行訓練。
舉例來說,有1000個原始數據,有放回的抽取1000次,構成一組新的數據(因為是有放回抽取,有些數據可能被選中多次,有些數據可能不被選上),作為某一個決策樹的數據來進行模型的訓練。 - 特征隨機:如果每個樣本的特征維度為M,指定一個常數k<M,隨機地從M個特征中選取k個特征,在使用Python構造隨機森林模型時,默認取特征的個數k是M的平方根:√𝑀。
與單獨的決策樹模型對比,隨機森林模型由于集成了多個決策樹,其預測結果會更準確,且不容易造成擬合現象,泛化能力更強
隨機森林模型的代碼實現
?隨機森林和決策樹模型一樣,可以做分類分析,也可以做回歸分析:
- 隨機森林分類模型(RandomForestClassifier),隨機森林分類模型的基模型是分類決策樹模型
- 隨機森林回歸模型(RandomForestRegressor),隨機森林回歸模型的基模型則是回歸決策樹模型
總結
以上是生活随笔為你收集整理的Python--随机森林模型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL之进化篇
- 下一篇: python web scraping