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

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

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

1.? bagging的原理

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

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

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

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

    對于一個樣本,它在某一次含m個樣本的訓練集的隨機采樣中,每次被采集到的概率是1m1m。不被采集到的概率為1?1m1?1m。如果m次采樣都沒有被采集中的概率是(1?1m)m(1?1m)m。當mm→∞時,(1?1m)m1e?0.368(1?1m)m→1e?0.368。也就是說,在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)}D={(x,y1),(x2,y2),...(xm,ym)},弱學習器算法, 弱分類器迭代次數T。

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

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

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

      b)用采樣集DtDt訓練第t個弱學習器Gt(x)Gt(x)

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

3. 隨機森林算法

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

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

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

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

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

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

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

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

      b)用采樣集DtDt訓練第t個決策樹模型Gt(x)Gt(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個葉子節點,某個數據特征xx劃分到第一個決策樹的第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,原因同樣本采集,用少量的異常點檢測一般不需要這么大規模的決策樹。

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

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

?

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

c(m)=2ln(m?1)+ξ?2m?1m,ξc(m)=2ln?(m?1)+ξ?2m?1m,ξ為歐拉常數

?

    s(x,m)的取值范圍是[0,1],取值越接近于1,則是異常點的概率也越大。

5. 隨機森林小結

    RF的算法原理也終于講完了,作為一個可以高度并行化的算法,RF在大數據時候大有可為。 這里也對常規的隨機森林算法的優缺點做一個總結。

    RF的主要優點有:

    1) 訓練可以高度并行化,對于大數據時代的大樣本訓練速度有優勢。個人覺得這是的最主要的優點。

    2) 由于可以隨機選擇決策樹節點劃分特征,這樣在樣本特征維度很高的時候,仍然能高效的訓練模型。

    3) 在訓練后,可以給出各個特征對于輸出的重要性

    4) 由于采用了隨機采樣,訓練出的模型的方差小,泛化能力強。

    5) 相對于Boosting系列的Adaboost和GBDT, RF實現比較簡單。

    6) 對部分特征缺失不敏感。

    RF的主要缺點有:

    1)在某些噪音比較大的樣本集上,RF模型容易陷入過擬合。

    2) 取值劃分比較多的特征容易對RF的決策產生更大的影響,從而影響擬合的模型的效果。

轉載于:https://www.cnblogs.com/ldt-/p/10172057.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/395625.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/395625.shtml
英文地址,請注明出處:http://en.pswp.cn/news/395625.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

iOS:多線程技術GCD的使用

GCD的使用: 1.隊列的類型1.1 主隊列:mian queue,主線程隊列,負責更行UI的操作。是一個串行的隊列。1.2 系統默認的并行隊列:global queue,按優先級分類。1.3 自定義的隊列:可以創建串行隊列或者是并行的隊列2.任務2.1 …

java什么叫一致性,java-順序一致性易失性說明

我正在從Java Jpoint會議觀看視頻.我對以下來自Alexey Shipilev報告的幻燈片有疑問:打擾一下,請不要打擾我.實際上,作者說不可能將變量集設置為r1 1 (Y)r2 0 (x)r3 1 (x)r4 0 (Y)根據視頻,他暗示很明顯.有人可以澄清為什么JMM無法設置此值嗎?附言如果…

模塊制作標準說明

原則一&#xff1a;CSS定義越少越好原則二&#xff1a;進來用<ul><li>等簡單的HTML代碼結構原則三&#xff1a;命名盡可能用CSS偽類原則四&#xff1a;一個模塊CSS名稱不能超過三個需要改正的寫法&#xff1a; <div class"fenglei"><div class&…

【c++】string類的使用

目錄 一、標準庫中的string類 1、簡單介紹string類 2、string類的常用接口注意事項 2.1、string類對象的常用構造 2.2、string類對象的容量操作 2.3、string類對象的訪問及遍歷操作 2.4、string類對象的修改操作 二、string類的模擬實現 一、標準庫中的string類 1、簡…

拜托了

by Buddy Reno由Buddy Reno Git Please &#xff1a;如何在不做蠢事的情況下強行推動 (Git Please: how to force push without being a jerk) As the size of a dev team grows, so does the likelihood of someone doing a force push and overwriting someone else’s code…

性能測試類型

1.驗收性能測試 驗收性能測試&#xff08;Acceptance Performance Testing&#xff09;方法通過模擬生產運行的業務壓力量和使用場景組合&#xff0c;測試系統的性能是否滿足生產性的要求。通俗的說&#xff1a;在特定的運行條件下驗證系統的能力狀況。 &#xff08;1&#xff…

Java - 對象(object) 具體解釋

對象(object) 具體解釋 本文地址: http://blog.csdn.net/caroline_wendy/article/details/24059545 對象(object)的實例能夠是 物理對象(如 人, 車等實物) 或 邏輯對象(如 運動, 健康等); 對象是將狀態(數據) 和行為(功能) 組合在一起的軟件模塊. 類是描寫敘述一組相似對象共同…

kkt條件的matlab仿真,請教關于SVM中KKT條件的推導

KKT條件第一項是說最優點必須滿足所有等式及不等式限制條件&#xff0c;也就是說最優點必須是一個可行解&#xff0c;這一點自然是毋庸置疑的。第二項表明在最優點 x*&#xff0c; ?f 必須是 ?hj 和 ?gk 的線性組合&#xff0c;和都叫作拉格朗日乘子。所不同的是不等式限制條…

公共wifi做家用_如何在公共網絡上獲得免費的wifi

公共wifi做家用by Kyle McDonald凱爾麥克唐納(Kyle McDonald) 如何在公共網絡上獲得免費的wifi (How to get free wifi on public networks) This short tutorial describes a few methods for gaining access to the internet, a basic human right, from public wireless ne…

python學習之旅

一、入門 1.Python 面向對象編程 2.jquery入門 3.HTMLCSS基礎入門 4.Javascript初步 5.Python語言編程基礎 二、初級階段 1.Git 與 GitHub 2.Python 爬蟲基礎 3.django進階 4.django項目部署 5.ajax入門 6.django基礎 7.Mysql基礎 三、中級階段 1.Linux基礎 2.Python :socket a…

c/c++ 重載運算符 函數調用運算符

重載運算符 函數調用運算符 把一個類的對象a&#xff0c;當成函數來使用&#xff0c;比如a()&#xff0c;所以需要重載operator()方法。重載了函數調用運算符的類的對象&#xff0c;就是函數對象了。 還有什么是函數對象呢&#xff1f;&#xff1f;&#xff1f; lambda是函數對…

matlab 萬能,matlab 萬能實用的線性曲線擬合方法

在科學計算和工程應用中&#xff0c;經常會遇到需要擬合一系列的離散數據&#xff0c;最近找了很多相關的文章方法&#xff0c;在這里進行總結一下其中最完整、幾乎能解決所有離散參數線性擬合的方法第一步&#xff1a;得到散點數據根據你的實際問題得到一系列的散點例如&#…

socket websocket

1.websocket客戶端 websocket允許通過JavaScript建立與遠程服務器的連接&#xff0c;從而實現客戶端與服務器間雙向的通信。在websocket中有兩個方法&#xff1a;      1、send() 向遠程服務器發送數據    2、close() 關閉該websocket鏈接  websocket同時還定義了幾…

javascript原型_JavaScript的原型:古怪,但這是它的工作原理

javascript原型by Pranav Jindal通過普拉納夫金達爾 JavaScript的原型&#xff1a;古怪&#xff0c;但這是它的工作原理 (Prototype in JavaScript: it’s quirky, but here’s how it works) The following four lines are enough to confuse most JavaScript developers:以下…

mysql函數之SUBSTRING_INDEX(str,/,-1)

SUBSTRING_INDEX的用法&#xff1a; ?SUBSTRING_INDEX(str,delim,count) 在定界符 delim 以及count 出現前&#xff0c;從字符串str返回自字符串。若count為正值,則返回最終定界符(從左邊開始) 若為-1則是從后往前截取 SELECT substring_index(Hn_P00001, P, -1) -- 結果是…

mysql8.0主從配置,MySQL 8.0主從服務器(Master-Slave)配置

一、介紹MySQL 主從復制的方式有多種&#xff0c;本文主要演示基于基于日志(binlog)的主從復制方式。MySQL 主從復制(也稱 A/B 復制) 的原理&#xff1a;Master將數據改變記錄到二進制日志(binary log)中&#xff0c;也就是配置文件log-bin指定的文件&#xff0c; 這些記錄叫做…

第十二章 Shell腳本編寫及常見面試題(三)

本章目錄&#xff1a;12.21 FTP下載文件#!/bin/bash if [ $# -ne 1 ]; thenecho "Usage: $0 filename" fi dir$(dirname $1) file$(basename $1) ftp -n -v << EOF # -n 自動登錄 open 192.168.1.10 user admin adminpass binary # 設置ftp傳輸模式為二進制…

亞馬遜面試有幾輪_經過幾個月的Google面試準備,我被亞馬遜錄用

亞馬遜面試有幾輪by Googley as Heck由Googley飾演Heck 經過幾個月的Google面試準備&#xff0c;我被亞馬遜錄用 (After months of preparing for the Google interview, I got hired by Amazon) As you may know, the last 11 months have been very difficult for me. As a …

省選前的考試記錄

日拱一卒功不唐捐 什么沙雕玩意兒 2018.12.24 T1 如果對 \(A\) 數組求出來高度遞減的單調棧的話&#xff0c;會發現只有單調棧里的元素是有用的。因為如果有 \(A[i]<A[j] \And i<j\)&#xff0c;那電梯就可以在帶 \(j\) 上樓的時候順便把 \(i\) 帶上并不會影響結果。所以…

軟件工程課設-----日程管理系統

這學期進行了軟件工程課設&#xff0c;題目是&#xff1a;日程管理系統&#xff08;JavaWeb&#xff09;&#xff0c;為期3周。這三周只有前兩天是企業老師講解是企業老師講解相關的基礎知識(老師講的水平實在是不可恭維。。。。。。)。 多的不多說。直接進行對相關項目的介紹。…