本章涉及到的知識點清單:
1、集成學習
2、bagging模式
3、隨機森林的思想
4、CART算法
5、分類樹
6、回歸樹
7、數(shù)據(jù)樣本和feature的隨機采樣
8、決策樹節(jié)點的完全二分裂
9、隨機森林的構造步驟
10、案例一:隨機森林處理分類
11、案例二:隨機森林處理回歸
12、隨機森林的優(yōu)點和缺點
一、集成學習
集成學習通過訓練若干個弱學習器,然后將各個若學習器結果匯總,通過一定的結合策略計算最終結果,從而形成一個強學習器,即

每個單體學習器集成的算法是一個弱分類器,通常這些弱學習器集成的算法分為兩類:
(1)同質:所有弱學習器集成的算法屬于同種類型,比如決策樹集成
(2)異質:不同弱學習器集成的算法屬于不同類型
用的比較多的是同質學習器,而同質學習器按照單體學習器之間是否存在依賴關系可以分為兩類:
(1)如果單體學習器之間存在強依賴關系,則單體學習器需要串行生成,代表算法是boosting系列算法
(2)如果單體學習器之間不存在強依賴關系,則單體學習器可以并行生成,代表算法是bagging和隨機森林系列算法
目前,有三種常見的集成學習框架:bagging,boosting和stacking,隨機森林屬于bagging
二、bagging方法
bagging:從訓練集進行子抽樣,構成每個單體學習器需要的子數(shù)據(jù)集,最后對所有單體學習器預測的結果進行匯總決策,即

bagging有如下特點:
(1)從原始樣本集采取有放回式抽樣,抽樣的規(guī)模等于原始樣本集,則一些樣本可能會被多次重復抽到,而一些樣本可能不會被抽到
(2)采用均勻抽樣,即每個樣本的被抽取的權重相等
(3)一個子訓練集得到一個弱學習器,則K個子訓練集對應K個弱學習器
(4)所有弱學習器的預測結果一樣重要(權重相等)
(5)各個弱學習器之間互相獨立,即可并行生成若干弱學習器
(6)對于分類問題,將K個弱學習器的預測結果采取投票策略;對于回歸問題,將K個弱學習器的預測結果采取均值策略
三、隨機森林的思想
隨機森林是基于集成學習的思想,將多顆樹集成在一起的算法,它的基本單元是決策樹,且這些決策樹之間彼此獨立沒有關聯(lián)
隨機森林包含如下思想:
(1)數(shù)據(jù)樣本的隨機選取
(2)決策樹的構造
(3)待選feature的隨機選取
(4)森林的預測策略
四、CART算法
隨機森林的單元弱學習器是決策樹,決策樹分類兩類:分類樹和回歸樹
分類樹輸出的是預測樣本的類別,回歸樹輸出的是預測樣本的數(shù)值,而CART分裂算法可以構建分類樹,也可構建回歸樹
CART算法的流程為:
(1)先用不同的feature和分割值嘗試分裂出不同節(jié)點
(2)對于非葉子節(jié)點,采取二分策略分割當前數(shù)據(jù),
(3)采用不同的評分函數(shù)來量化當前分裂的效果,選取分數(shù)最高的feature來完成節(jié)點的真分裂
(4)直到分裂出葉子節(jié)點
CART算法有如下特點:
(1)CART算法對每個非葉子節(jié)點的判斷條件為:單feature的單個分割值
(2)CART算法對每個非葉子節(jié)點的判斷邏輯為:只判斷當前feature是否滿足當前的是非條件,答案只能為“是”或者“否”,則即時一個feature有多個取值,也只能把當前數(shù)據(jù)劃分為兩部分
(3)CART算法對每個非葉子節(jié)點的切割邏輯為:二分遞歸切割策略,?把當前樣本劃分為兩個子樣本,使得生成的非葉子節(jié)點都有兩個分支,因此CART算法構成的是一個結構簡潔的二叉樹
(4)CART算法的評分函數(shù)為:
a、回歸問題:總方差評分
b、分類問題:基尼系數(shù)評分
CART分裂算法對比ID3和C4.5算法如下

五、分類樹
對于分類樹,我們使用基尼系數(shù)來為節(jié)點的分裂效果評分
設:樣本集D總共有K個類別,表示屬于第k類的樣本子集,則D的基尼系數(shù)表達為:
從基尼系數(shù)的表達式可知,其反映了樣本中類別不一致的概率,即樣本的不純度。顯然基尼系數(shù)越小,樣本的不純度就越低
設集合A表示D中的所有feature,任意feature為:,a的特征值為:
定義a的切割點集合S為:
則根據(jù)特征a的某個切割點s,由CART算法將D二分為兩部分子集D1和D2,該邏輯的基尼系數(shù)評分表達為:
其中和
分別表示D1和D2的權重
則分類樹分裂的目標為:
用基尼系數(shù)評分,找出使得當前節(jié)點分裂效果最好的特征a*和分割點s*
翻譯為數(shù)學語言即:
六、回歸樹
對于分類樹,我們使用總方差R2來為節(jié)點的分裂效果評分
與上述分類樹同理,根據(jù)特征a的某個切割點s,由CART算法將D二分為兩部分子集D1和D2,該邏輯的R2評分表達為:
其中var表示樣本的方差
則回歸樹分裂的目標為:
用R2總方差評分,找出使得當前節(jié)點分裂效果最好的特征a*和分割點s*
翻譯為數(shù)學語言即:
七、數(shù)據(jù)樣本和feature的隨機采樣(bootstrap)
隨機森林對輸入的樣本集分別進行行、列的隨機采樣
行采樣:構造隨機子樣本,對數(shù)量為N的樣本,進行有放回式抽樣,得到可能會隨機重復的數(shù)量為N的子樣本
列采樣:構造隨機feature,對數(shù)量為M的特征,進行無放回式抽樣,得到m<M個隨機feature,一般取


數(shù)據(jù)(行)采樣和feature(列)采樣的使用場景為:
(1)數(shù)據(jù)采樣:構造決策樹之前
(2)feature采樣:構造決策樹的遞歸過程中,即每次非葉子節(jié)點的分裂
八、決策樹節(jié)點的完全二分裂
在遞歸構造決策樹的過程中,每個樹分支(非葉子節(jié)點)都要按照單個feature的分割點完成二分裂,直到該節(jié)點無法繼續(xù)分裂為止
停止繼續(xù)分裂的條件:在遞歸構造決策樹的過程中,當前樣本的類別均一致
九、隨機森林的構造步驟
通過以上知識點,我們可以歸納出隨機森林的構造步驟:
(1)采用有放回式隨機抽樣,抽選出K組訓練子集
(2)由每組訓練子集遞歸構造K顆決策樹
(3)對于決策樹的每一個節(jié)點,采用無放回式隨機抽樣feature全集,抽選出m個待選feature
(4)嘗試用所有待選feature來分裂節(jié)點,根據(jù)Gini或者R2評分函數(shù)給每次分裂效果量化評分,選擇出最佳的feature和切割點值
(5)決策樹根據(jù)發(fā)現(xiàn)的最佳feature和切割點值分裂節(jié)點,直到停止分裂
(6)每顆決策樹都都不用采用剪枝技術,每棵樹都能完整生長
(7)交叉驗證模型的預測能力,對于分類問題,采用投票策略對K顆決策樹的預測結果統(tǒng)計;對于回歸任務,采用K顆決策樹的預測結果求均值
十、案例一:隨機森林處理分類問題
我們采用bagging算法和Gini系數(shù)來構建隨機森林處理分類問題:






十一、案例二:隨機森林處理回歸問題
同理,我們用bagging算法和R2來構建隨機森林處理回歸問題:






十二、隨機森林的優(yōu)點和缺點
最后我們總結一下隨機森林模型的優(yōu)缺點
隨機森林模型的優(yōu)點有:
(1)隨機森林模型能解決分類與回歸兩種類型的問題,并在這兩個方面都有相當好的估計表現(xiàn)
(2)子數(shù)據(jù)集的構造采用有放回式抽樣,使得抽樣數(shù)據(jù)集有大約1/3的數(shù)據(jù)沒有被抽中去參加決策樹的構造,所以相對不容易出現(xiàn)over-fitting
(3)使樹節(jié)點每次分裂選擇的最佳feature和分割值,都由無放回式抽樣提供隨機feature候選列表,則訓練出的模型方差較小,泛化能力強
(4)模型訓練速度快,各弱學習器容易做成并行化方法
PS:簡單證明上述第(2)點
設任意一個樣本集采用有放回式抽樣n次,每次抽取互相獨立,即每個樣本被抽中的概率都為,則某個樣本在這n次都沒有被抽中的概率為P,翻譯為數(shù)學語言,即:
上式兩邊取對數(shù)得:
令,則:
化簡得:
上式e的冪部分取極限屬于型,使用洛必達法則得:
帶入解出P:
隨機森林模型的缺點有:
(1)在某些噪音比較大的樣本集上,模型容易陷入過擬合
(2)取值劃分比較多的特征容易對模型的決策產生更大的影響,從而影響擬合的模型的效果
案例代碼見:隨機森林的算法思想