
一、 什麼是內建學習
內建學習是通過建構并結合多個學習器來完成學習任務的一類算法。
根據個體學習器(基學習器)之間是否存在強依賴關系可将內建學習分為兩類:
- Boosting
個體學習器之間存在強依賴關系,必須串行生成的序列化方法。
2. Bagging
個體學習器之間不存在強依賴關系,可同時生成的并行化方法。
二、 Bagging和Boosting算法族介紹
1、Bagging(Bootstrap AGGregating, 裝袋)算法族介紹
Bagging 是一種個體學習器之間不存在強依賴關系,可同時生成的并行式內建學習方法。
(1)Bagging算法原理Bagging即套袋法,是一種采用自助采樣法(bootstrap)的內建學習算法。自助采樣法是一種有放回的抽樣方法,目的為了得到統計量的分布以及置信區間,其算法過程如下:
(a)從原始樣本集中抽取訓練集。每輪從原始樣本集中使用
Bootstraping的方法抽取n個訓練樣本(在訓練集中,有些樣本可能被多次抽取到,而有些樣本可能一次都沒有被抽中)。共進行k輪抽取,得到k個訓練集。(k個訓練集之間是互相獨立的)。
(b)每次使用一個訓練集得到一個模型,
k個訓練集共得到k個模型。(注:這裡并沒有具體的分類算法或回歸方法,我們可以根據具體問題采用不同的分類或回歸方法,如決策樹、感覺器等)。
(c)對分類問題:将上步得到的k個模型采用投票的方式得到分類結果,若分類預測時兩類獲得相同票數時,最簡單的方法是任選其一;對回歸問題,計算上述模型的均值作為最後的結果。(所有模型的重要性相同)
Bagging算法流程請參見圖1。
圖1 Bagging算法
(2)随機森林(Random Forest, RF)= Bagging + 決策樹圖2 随機森林與bagging的關系
随機森林(Random Forest,簡稱RF)是Bagging的一個擴充變體。RF在以決策樹為基學習器建構Bagging內建的基礎上,進一步在決策樹的訓練過程中引入了随機屬性選擇。
圖3 随機森林算法流程
構造随機森林的4個步驟:
(a)假如有N個樣本,則有放回的随機選擇N個樣本(每次随機選擇一個樣本,然後傳回繼續選擇)。這選擇好了的N個樣本用來訓練一個決策樹,作為決策樹根節點處的樣本。
(b)當每個樣本有M個屬性時,在決策樹的每個節點需要分裂時,随機從這M個屬性中選取出m個屬性,滿足條件m << M。然後從這m個屬性中采用某種政策(比如說資訊增益)來選擇1個屬性作為該節點的分裂屬性。
(c)決策樹形成過程中每個節點都要按照步驟2來分裂(很容易了解,如果下一次該節點選出來的那一個屬性是剛剛其父節點分裂時用過的屬性,則該節點已經達到了葉子節點,無須繼續分裂了)。一直到不能夠再分裂為止。注意整個決策樹形成過程中沒有進行剪枝。
(d)按照步驟a~c建立大量的決策樹,這樣就構成了随機森林了。
(3)舉例解釋随機森林例題:根據已有的訓練集已經生成了對應的随機森林,随機森林如何利用某一個人的年齡(Age)、性别(Gender)、教育情況(Highest Educational Qualification)、工作領域(Industry)以及住宅地(Residence)共5個字段來預測他的收入層次。
收入層次 :
Band 1: Below $40,000
Band 2: $40,000 – 150,000
Band 3: More than $150,000
随機森林中每一棵樹都可以看做是一棵CART(分類回歸樹),這裡假設森林中有5棵CART樹,總特征個數N=5,我們取m=1(這裡假設每個CART樹對應一個不同的特征)。
CART 1 : Variable Age我們要預測的某個人的資訊如下:
1. Age : 35 years ; 2. Gender : Male ; 3. Highest Educational Qualification : Diploma holder; 4. Industry : Manufacturing; 5. Residence : Metro.
根據這五棵CART樹的分類結果,我們可以針對這個人的資訊建立收入層次的分布情況:
結論:根據以上分析,這個人的收入層次70%是一等,大約24%為二等,6%為三等,是以最終認定該人屬于一等收入層次(小于$40,000)。
(4)代碼實作随機森林(使用sklearn實作)