隨機森林(Random Forest,RF)
1、定義
隨機森林指的是利用多棵樹對樣本進行訓練並預測的一種分類器
隨機森林顧名思義,是用隨機的方式建立一個森林,森林裏面有很多的決策樹組成,隨機森林的每一棵決策樹之間是沒有關聯的。在得到森林之後,當有一個新的輸入樣本進入的時候,就讓森林中的每一棵決策樹分別進行一下判斷,看看這個樣本應該屬於哪一類(對於分類算法),然後看看哪一類被選擇最多,就預測這個樣本爲那一類。
bagging算法
bagging是一種用來提高學習算法準確度的方法,這種方法通過構造一個預測函數系列,然後以一定的方式將它們組合成一個預測函數
1、從原始樣本集中使用Bootstraping(自助採樣法)隨機抽取n個訓練樣本
2、根據這n個訓練樣本訓練出一個基學習器(模型)
3、將這個n個訓練樣本放回原始樣本集
4、重複1、2、3步 得到m個基學習器(模型)
5、再將這m個基學習器結合
Bagging + 決策樹 = 隨機森林
隨機森林的構造方法(與Bagging過程相似)
1、從原始樣本集中使用Bootstraping(自助採樣法)隨機抽取n個樣本組成一個訓練樣本集
2、根據這個 訓練樣本集訓練出一個n_tree決策樹模型
3、將這n個樣本組成的訓練樣本集 放回原始樣本集
4、重複1、2、3步 得到m個n_tree決策樹模型
5、將這m個n_tree決策樹組成隨機森林
對於單棵樹的訓練
1、假設訓練樣本特徵的個數爲x,那麼每次分裂時根據信息增益/信息增益比/基尼指數選擇最好的特徵進行分裂
2、每棵樹都一直這樣分裂下去,直到該節點的所有訓練樣例都屬於同一類。或者達到我們的限制。
2、優缺點
優點:(https://www.csdn.net/article/2015-09-25/2825795)
§ 簡單,容易實現,計算開銷小但是性能強大具有極高的準確率
§ 隨機性的引入,使得隨機森林不容易過擬合、有很好的抗噪聲能力
§ 能處理很高維度的數據,並且不用做特徵選擇
§ 既能處理離散型數據,也能處理連續型數據,數據集無需規範化
§ 容易實現並行化,訓練速度快,可以得到變量重要性排序
缺點:
§ 隨機森林在解決迴歸問題時並沒有像它在分類中表現的那麼好,這是因爲它並不能給出一個連續型的輸出。
§ 當進行迴歸時,隨機森林不能夠作出超越訓練集數據範圍的預測,這可能導致在對某些還有特定噪聲的數據進行建模時出現過度擬合。
§ 隨機森林模型還有許多不好解釋的地方,給人的感覺像是一個黑盒子——你幾乎無法控制模型內部的運行,只能在不同的參數和隨機種子之間進行嘗試
§ 當隨機森林中的決策樹個數很多時,訓練時需要的空間和時間會較大
3、應用場景
隨機森林方法被證明對大規模數據集和存在大量且有時不相關特徵的項(item)來說很有用
因爲不需要很多參數調整就可以達到不錯的效果,基本上不知道用什麼方法的時候都可以先試一下隨機森林。
§ 戶流失分析
§ 風險評估
-end-
===彩蛋 ===
Boosting算法:
Boosting是一族可將弱學習器提升爲強學習器的算法
1、從初始訓練集訓練出一個基學習器(模型)
2、根據基學習器的表現對訓練樣本分佈進行調整,使得先前基學習器做錯的訓練樣本在後續受到更多的關注
3、然後基於調整後的樣本分佈來訓練下一個基學習器
4、重複123步,直至基學習器數目達到事先指定的值m,最終將這m個基學習器進行加權結合
bagging算法
bagging是一種用來提高學習算法準確度的方法,這種方法通過構造一個預測函數系列,然後以一定的方式將它們組合成一個預測函數
1、從原始樣本集中使用Bootstraping(自助採樣法)隨機抽取n個訓練樣本
2、根據這n個訓練樣本訓練出一個基學習器(模型)
3、將這個n個訓練樣本放回原始樣本集
4、重複1、2、3步 得到m個基學習器(模型)
5、再將這m個基學習器結合
boosting算法與Bagging算法的區別
| boosting算法 | Bagging算法 |
樣本抽取方式 | 每一輪的訓練集是不變的,改變的只是每一個樣本的權重 | 隨機有放回的抽樣 |
樣本權重 | 根據錯誤率調整樣本權重,錯誤率越大的樣本權重越大
| 均勻取樣,每個樣本權重相等 |
預測函數 | 誤差越小的預測函數其權重越大 | 所有的預測函數的權重相等 |
並行計算 | 各個預測函數必須按順序迭代生成 | 各個預測函數可以並行生成 |