介紹
隨機森林(Random Forest)是集成學習的代表作,同時又是以bagging爲基礎的加法模型。隨機森林在以決策樹爲基學習器構建bagging的基礎上,進一步在決策樹的訓練過程中引入了隨機屬性的選擇。
集成學習
集成學習(Ensemble Learning)通過構建多個弱分類器組合成一個強分類器來完成學習任務,幾種機器學習技術組合成一個預測模型的元算法,以達到減小方差(bagging)、偏差(boosting)或改進預測(stacking)的效果。這裏介紹前兩種集成方法。
Bagging (bootstrap aggregating,裝袋)
Bagging即套袋法,先說一下bootstrap,bootstrap也稱爲自助法,它是一種有放回的抽樣方法,目的爲了得到統計量的分佈以及置信區間,其算法過程如下:
1. 從原始樣本集中抽取訓練集。每輪從原始樣本集中使用Bootstraping的方法抽取n個訓練樣本
(在訓練集中,有些樣本可能被多次抽取到,而有些樣本可能一次都沒有被抽中)。共進行k輪抽取,
得到k個訓練集。(k個訓練集之間是相互獨立的)
2. 每次使用一個訓練集得到一個模型,k個訓練集共得到k個模型。
3. 對分類問題:將上步得到的k個模型採用投票的方式得到分類結果;對迴歸問題,
計算上述模型的均值作爲最後的結果。
Bagging採用的採樣方法是有放回的抽樣方法,那麼樣本在k次採樣中始終不會被採到的概率爲,取極限後可得樣本有的概率未出現在採樣數據集中。
Bagging方法有以下特點:
- Bagging通過降低基分類器的方差,改善了泛化誤差。
- 其性能依賴於基分類器的穩定性;如果基分類器不穩定,bagging有助於降低訓練數據的隨機波動導致的誤差;如果穩定,則集成分類器的誤差主要由基分類器的偏倚引起。
- bagging並不側重於訓練數據集中的任何特定實例,每個樣本被選擇的概率相同。
最具代表性的方法,隨機森林。
Boosting
與Bagging不同,boosting選用的是所有的樣本。但是每個樣本的權重在每次訓練出基分類器時候不一樣:本次訓練會提升上次分類錯誤的樣本的權重,減小前一輪分類正確的樣本的權值。最後通過加法模型將弱分類器進行線性組合。
最具代表性的方法,AdaBoost。
隨機森林
字面理解,很多棵決策樹通過bagging組成一片森林。隨機森林的每一棵決策樹還引入了隨機屬性選擇,假設訓練樣本一共有個屬性,那麼每棵決策樹會從所有的屬性集合中隨機選擇包含個屬性的子集。然後再按照決策樹的屬性選擇方式(信息增益熵、信息增益比)選擇最優屬性來構建決策樹。生成棵決策樹以後,採用投票法來預測最終結果。
AdaBoost
AdaBoost (Adaptive Boosting) 實現了boosting策略,並且將弱分類器採用加權多數表決的組合方式。首先學習一個弱分類器,
對所有未分類正確的樣本求得分類誤差率,初始的所有的樣本等概率。
計算基分類器的係數:
然後求得每個樣本的權值:
這裏可以進行將簡化:如果分類正確,爲;分類錯誤,爲。由此可見,分類錯誤的樣本的權值變大。其中,爲歸一化因子,
對求得的基分類器線性求和,得到最終的分類器:
Reference
1、統計學習方法,李航
2、機器學習,周志華
3、https://www.cnblogs.com/zongfa/p/9304353.html