1. 程式人生 > >Bagging演算法 與 隨機森林演算法 原理

Bagging演算法 與 隨機森林演算法 原理

整合學習原理小結中,我們講到了整合學習有兩個流派,一個是boosting派系,它的特點是各個弱學習器之間有依賴關係。另一種是bagging流派,它的特點是各個弱學習器之間沒有依賴關係,可以並行擬合。本文就對整合學習中Bagging與隨機森林演算法做一個總結。

    隨機森林是整合學習中可以和梯度提升樹GBDT分庭抗禮的演算法,尤其是它可以很方便的並行訓練,在如今大資料大樣本的的時代很有誘惑力。

1.  bagging的原理

    在整合學習原理小結中,我們給Bagging畫了下面一張原理圖。

    從上圖可以看出,Bagging的弱學習器之間的確沒有boosting那樣的聯絡。它的特點在“隨機取樣”。那麼什麼是隨機取樣?

    隨機取樣(bootsrap)就是從我們的訓練集裡面採集固定個數的樣本,但是每採集一個樣本後,都將樣本放回。也就是說,之前採集到的樣本在放回後有可能繼續被採集到。對於我們的Bagging演算法,一般會隨機採集和訓練集樣本數m一樣個數的樣本。這樣得到的取樣集和訓練集樣本的個數相同,但是樣本內容不同。如果我們對有m個樣本訓練集做T次的隨機取樣,,則由於隨機性,T個取樣集各不相同。

    注意到這和GBDT的子取樣是不同的。GBDT的子取樣是無放回取樣,而Bagging的子取樣是放回取樣。

    對於一個樣本,它在某一次含m個樣本的訓練集的隨機取樣中,每次被採集到的概率是1m。不被採集到的概率為1

1m。如果m次取樣都沒有被採集中的概率是(11m)m。當m時,(11m)m1e0.368(1−1m)。也就是說,在bagging的每輪隨機取樣中,訓練集中大約有36.8%的資料沒有被取樣集採集中。自助取樣會改變資料的初始分佈導致引入估計偏差。

    對於這部分大約36.8%的沒有被取樣到的資料,我們常常稱之為袋外資料(Out Of Bag, 簡稱OOB)。這些資料沒有參與訓練集模型的擬合,因此可以用來檢測模型的泛化能力。

    bagging對於弱學習器沒有限制,這和Adaboost一樣。但是最常用的一般也是決策樹和神經網路。

    bagging的集合策略也比較簡單,對於分類問題,通常使用簡單投票法,得到最多票數的類別或者類別之一為最終的模型輸出。對於迴歸問題,通常使用簡單平均法,對T個弱學習器得到的迴歸結果進行算術平均得到最終的模型輸出。

    由於Bagging演算法每次都進行取樣來訓練模型,因此泛化能力很強,對於降低模型的方差很有作用。當然對於訓練集的擬合程度就會差一些,也就是模型的偏倚會大一些。

2.  bagging演算法流程

    上一節我們對bagging演算法的原理做了總結,這裡就對bagging演算法的流程做一個總結。相對於Boosting系列的Adaboost和GBDT,bagging演算法要簡單的多。

    輸入為樣本集D={(x,y1),(x2,y2),...(xm,ym  )},弱學習器演算法, 弱分類器迭代次數T。

    輸出為最終的強分類器f(x)

    1)對於t=1,2...,T:

      a)對訓練集進行第t次隨機取樣,共採集m次,得到包含m個樣本的取樣集Dm

      b)用取樣集Dm訓練第m個弱學習器Gm(x)

    2) 如果是分類演算法預測,則T個弱學習器投出最多票數的類別或者類別之一為最終類別。如果是迴歸演算法,T個弱學習器得到的迴歸結果進行算術平均得到的值為最終的模型輸出。

3. 隨機森林演算法

    理解了bagging演算法,隨機森林(Random Forest,以下簡稱RF)就好理解了。它是Bagging演算法的進化版,也就是說,它的思想仍然是bagging,但是進行了獨有的改進。我們現在就來看看RF演算法改進了什麼。   

    首先,RF使用了CART決策樹作為弱學習器,這讓我們想到了梯度提升樹GBDT。第二,在使用決策樹的基礎上,RF對決策樹的建立做了改進,對於普通的決策樹,我們會在節點上所有的n個樣本特徵中選擇一個最優的特徵來做決策樹的左右子樹劃分,但是RF通過隨機選擇節點上的一部分樣本特徵,這個數字小於n,假設為nsub,然後在這些隨機選擇的nsub個樣本特徵中,選擇一個最優的特徵來做決策樹的左右子樹劃分。這樣進一步增強了模型的泛化能力。    

    如果nsub=n,則此時RF的CART決策樹和普通的CART決策樹沒有區別。nsub越小,則模型越健壯,當然此時對於訓練集的擬合程度會變差。也就是說nsub越小,模型的方差會減小,但是偏倚會增大。在實際案例中,一般會通過交叉驗證調參獲取一個合適的nsub的值

    除了上面兩點,RF和普通的bagging演算法沒有什麼不同, 下面簡單總結下RF的演算法。

    輸入為樣本集D={(x,y1),(x2,y2),...(xm,ym)},弱分類器迭代次數T。

    輸出為最終的強分類器f(x)

    1)對於t=1,2...,T:

      a)對訓練集進行第t次隨機取樣,共採集m次,得到包含m個樣本的取樣集Dm

      b)用取樣集Dm訓練第m個決策樹模型Gm(x),在訓練決策樹模型的節點的時候, 在節點上所有的樣本特徵中選擇一部分樣本特徵, 在這些隨機選擇的部分樣本特徵中選擇一個最優的特徵來做決策樹的左右子樹劃分

    2) 如果是分類演算法預測,則T個弱學習器投出最多票數的類別或者類別之一為最終類別。如果是迴歸演算法,T個弱學習器得到的迴歸結果進行算術平均得到的值為最終的模型輸出。

4. 隨機森林的推廣

    由於RF在實際應用中的良好特性,基於RF,有很多變種演算法,應用也很廣泛,不光可以用於分類迴歸,還可以用於特徵轉換,異常點檢測等。下面對於這些RF家族的演算法中有代表性的做一個總結。

 4.1 extra trees

    extra trees是RF的一個變種, 原理幾乎和RF一模一樣,僅有區別有:

    1) 對於每個決策樹的訓練集,RF採用的是隨機取樣bootstrap來選擇取樣集作為每個決策樹的訓練集,而extra trees一般不採用隨機取樣,即每個決策樹採用原始訓練集

    2) 在選定了劃分特徵後,RF的決策樹會基於資訊增益,基尼係數,均方差之類的原則,選擇一個最優的特徵值劃分點,這和傳統的決策樹相同。但是extra trees比較的激進,他會隨機的選擇一個特徵值來劃分決策樹

    從第二點可以看出,由於隨機選擇了特徵值的劃分點位,而不是最優點位,這樣會導致生成的決策樹的規模一般會大於RF所生成的決策樹。也就是說,模型的方差相對於RF進一步減少,但是偏倚相對於RF進一步增大。在某些時候,extra trees的泛化能力比RF更好

4.2 Totally Random Trees Embedding

    Totally Random Trees Embedding(以下簡稱 TRTE)是一種非監督學習的資料轉化方法。它將低維的資料集對映到高維,從而讓對映到高維的資料更好的運用於分類迴歸模型。我們知道,在支援向量機中運用了核方法來將低維的資料集對映到高維,此處TRTE提供了另外一種方法。

    TRTE在資料轉化的過程也使用了類似於RF的方法,建立T個決策樹來擬合數據。當決策樹建立完畢以後,資料集裡的每個資料在T個決策樹中葉子節點的位置也定下來了。比如我們有3顆決策樹,每個決策樹有5個葉子節點,某個資料特徵x劃分到第一個決策樹的第2個葉子節點,第二個決策樹的第3個葉子節點,第三個決策樹的第5個葉子節點。則x對映後的特徵編碼為(0,1,0,0,0,     0,0,1,0,0,     0,0,0,0,1), 有15維的高維特徵。這裡特徵維度之間加上空格是為了強調三顆決策樹各自的子編碼。

    對映到高維特徵後,可以繼續使用監督學習的各種分類迴歸演算法了。

4.3 Isolation Forest

    Isolation Forest(以下簡稱IForest)是一種異常點檢測的方法。它也使用了類似於RF的方法來檢測異常點。

    對於在T個決策樹的樣本集,IForest也會對訓練集進行隨機取樣,但是取樣個數不需要和RF一樣,對於RF,需要取樣到取樣集樣本個數等於訓練集個數。但是IForest不需要取樣這麼多,一般來說,取樣個數要遠遠小於訓練集個數?為什麼呢?因為我們的目的是異常點檢測,只需要部分的樣本我們一般就可以將異常點區別出來了。

    對於每一個決策樹的建立, IForest採用隨機選擇一個劃分特徵,對劃分特徵隨機選擇一個劃分閾值。這點也和RF不同。

    另外,IForest一般會選擇一個比較小的最大決策樹深度max_depth,原因同樣本採集,用少量的異常點檢測一般不需要這麼大規模的決策樹。

    對於異常點的判斷,則是將測試樣本點x擬合到T顆決策樹。計算在每顆決策樹上該樣本的葉子節點的深度ht(x)。,從而可以計算出平均高度h(x)。此時我們用下面的公式計算樣本點x的異常概率:

s(x,m)=2h(x)c(m)

    其中,m為樣本個數。c(m)的表示式為:

相關推薦

Bagging演算法 隨機森林演算法 原理

在整合學習原理小結中,我們講到了整合學習有兩個流派,一個是boosting派系,它的特點是各個弱學習器之間有依賴關係。另一種是bagging流派,它的特點是各個弱學習器之間沒有依賴關係,可以並行擬合。本文就對整合學習中Bagging與隨機森林演算法做一個總結。     

Bagging隨機森林演算法原理小結

 在整合學習原理小結中,我們講到了整合學習有兩個流派,一個是boosting派系,它的特點是各個弱學習器之間有依賴關係。另一種是bagging流派,它的特點是各個弱學習器之間沒有依賴關係,可以並行擬合。本文就對整合學習中Bagging與隨機森林演算法做一個總結。     隨機森林是整合學習中可以和

機器學習之Bagging 隨機森林演算法

在整合學習裡面,有兩種流派,一個是 boosting 流派,它的特點是對於各個學習器之間有著相互依賴的關係 (比如說在某一次演算法結束後,分類錯誤的樣本會增大比例,以引起下一次的訓練時候的關注度),另一種是bagging 流派,它的特點是各個學習器之間沒有任何的

機器學習——Bagging隨機森林演算法及其變種

Bagging演算法:    凡解:給定M個數據集,有放回的隨機抽取M個數據,假設如此抽取3組,3組資料一定是有重複的,所以先去重。去重後得到3組資料,每組資料量分別是s1,s2,s3,然後三組分別訓練組合成一個強模型。如下圖:    隨機森林演算法:   一般用於大規模資料

《web安全之機器學習入門》第6章決策樹隨機森林演算法

決策樹識別pop3埠掃描(原書中識別暴力破解,實際上pop3協議的並沒有guess_passwd型別的資料,所以改為識別port_sweep.):待分析資料集:KDD-99資料集,連結:http://kdd.ics.uci.edu/databases/kddcup99/kdd

通俗易懂--決策樹演算法隨機森林演算法講解(演算法+案例)

1.決策樹 1.1從LR到決策樹 相信大家都做過用LR來進行分類,總結一下LR模型的優缺點: 優點 適合需要得到一個分類概率的場景。 實現效率較高。 很好處理線性特徵。 缺點 當特徵空間很大時,邏輯迴歸的效能不是很好。 不能很好地處理大量多類特徵。

機器學習十大演算法---8. 隨機森林演算法

在學習隨機森林之前我們想你學習以下整合學習(ensemble)的內容。--隨機森林簡介隨機森林顧名思義,是用隨機的方式建立一個森林,森林裡面有很多的決策樹組成,隨機森林的每一棵決策樹之間是沒有關聯的。在

Bagging隨機森林(RF)演算法原理總結

### Bagging與隨機森林演算法原理總結 在整合學習原理小結中,我們學習到了兩個流派,一個是Boosting,它的特點是各個弱學習器之間存在依賴和關係,另一個是Bagging,它的特點是各個弱學習器之間沒有依賴關係,可以並行擬合,本文就對整合學習中的Bagging和隨機森林做一個總結。 隨機森林是整合

隨機森林 演算法原理詳解實現步驟

#include <cv.h> // opencv general include file #include <ml.h> // opencv machine learning include file #include <stdio.h>

整合學習中boosting、bagging隨機森林演算法的介紹

整合學習的概念 定義:整合學習通過構建並結合多個學習器來完成學習任務。 分類:只包含同種型別的個體學習器,這樣的整合是“同質”的,例如都是神經網路或者決策樹;包含不同型別的個體學習器,這樣的整合是“異質”的,例如同時包括神經網路和決策樹。 作用:整合學習通過將多個學習器

隨機森林演算法原理小結

來自:https://www.cnblogs.com/pinard/p/6156009.html 整合學習有兩個流派,一個是boosting,特點是各個弱學習器之間有依賴關係;一個是bagging,特點是各個弱學習器之間沒依賴關係,可以並行擬合。 1.  bagging的原理 在整合學習原理總

Spark 隨機森林演算法原理、原始碼分析及案例實戰

圖 1. Spark 與其它大資料處理工具的活躍程度比較 回頁首 環境要求 作業系統:Linux,本文采用的 Ubuntu 10.04,大家可以根據自己的喜好使用自己擅長的 Linux 發行版Java 與 Scala 版本:Scala 2.10.4,Java 1.7Spar

機器學習——隨機森林演算法randomForest——原理及python實現

參考: http://blog.csdn.net/nieson2012/article/details/51279332 http://www.cnblogs.com/wentingtu/archive/2011/12/22/2297405.html http://www.

RF Algorithm(隨機森林演算法)歐氏距離

原文出處:https://cwiki.apache.org/MAHOUT/random-forests.html  以下程式碼均為虛擬碼 Random Forests source : [3] LearnUnprunedTree(X,Y) Input: X a mat

RandomForest 隨機森林演算法模型引數的調優

> **公號:碼農充電站pro** > **主頁:** 本篇文章來介紹**隨機森林**(*RandomForest*)演算法。 ### 1,整合演算法之 bagging 演算法 在前邊的文章《[AdaBoost 演算法-分析波士頓房價資料集](https://www.cnblogs.com/codesh

學習筆記(六):使用隨機森林演算法檢測FTP暴力破解

1.資料蒐集:         載入ADFA-LD中正常資料         定義遍歷目錄下檔案         從攻擊資料中篩選出和FTP暴力破解有關的資料 &n

R語言︱決策樹族——隨機森林演算法

筆者寄語:有一篇《有監督學習選擇深度學習還是隨機森林或支援向量機?》(作者Bio:SebastianRaschka)中提到,在日常機器學習工作或學習中,當我們遇到有監督學習相關問題時,不妨考慮下先用簡單的假設空間(簡單模型集合),例如線性模型邏輯迴歸。若效果不好,也即並沒達到你的預期或評判效果基

機器學習——決策樹和隨機森林演算法

認識決策樹 決策樹思想的來源非常樸素,程式設計中的條件分支結構就是if-then結構,最早的決策樹就是利用這類結構分割資料的一種分類學習方法。 下面以一個問題引出決策樹的思想 這個問題用圖來表示就是這樣: 為什麼先把年齡放在第一個呢,下面就是一個概念:資訊熵 資訊熵

隨機森林演算法隨筆

主要用於分類。 通過自助法重取樣技術( 是一種從給定訓練集中有放回的均勻抽樣,也就是說,每當選中一個樣本,它等可能地被再次選中並被再次新增到訓練集中),從原始訓練樣本集N中又放回的重複隨機抽取K個樣本生成心得訓練樣本集合,然後根據自主樣本集生成K個分類樹組成隨機森林,新資料的分類結果按分類樹投票

梯度上升演算法隨機梯度上升演算法的實現

1. 引言 上一篇日誌中,我們最終推匯出了計算最優係數的公式。 Logistic 迴歸數學公式推導 本文,我們就利用上一篇文章中計算出的公式來實現模型的訓練和資料的分類。 2. 通過 python 實現 logistic 演