1. 程式人生 > >決策樹、Bagging、隨機森林、Boosting、AdaBoost、GBDT、XGBoost

決策樹、Bagging、隨機森林、Boosting、AdaBoost、GBDT、XGBoost

1、決策樹 

一、決策樹的優點和缺點

    優點:

  1. 決策樹演算法中學習簡單的決策規則建立決策樹模型的過程非常容易理解,
  2. 決策樹模型可以視覺化,非常直觀
  3. 應用範圍廣,可用於分類和迴歸,而且非常容易做多類別的分類
  4. 能夠處理數值型和連續的樣本特徵

    缺點:

  1. 很容易在訓練資料中生成複雜的樹結構,造成過擬合(overfitting)。剪枝可以緩解過擬合的負作用,常用方法是限制樹的高度、葉子節點中的最少樣本數量。
  2. 學習一棵最優的決策樹被認為是NP-Complete問題。實際中的決策樹是基於啟發式的貪心演算法建立的,這種演算法不能保證建立全域性最優的決策樹。Random Forest 引入隨機能緩解這個問題

分裂屬性分為三種不同的情況:

     1、屬性是離散值且不要求生成二叉決策樹。此時用屬性的每一個劃分作為一個分支。

     2、屬性是離散值且要求生成二叉決策樹。此時使用屬性劃分的一個子集進行測試,按照“屬於此子集”和“不屬於此子集”分成兩個分支。

     3、屬性是連續值。此時確定一個值作為分裂點split_point,按照>split_point和<=split_point生成兩個分支。

屬性選擇度量演算法有很多,一般使用自頂向下遞迴分治法,並採用不回溯的貪心策略。這裡介紹ID3C4.5兩種常用演算法。

1.1、ID3演算法

先介紹幾個概念,摘錄自知乎:

熵:表示隨機變數的不確定性。

條件熵:在一個條件下,隨機變數的不確定性。

資訊增益:熵 - 條件熵(在一個條件下,資訊不確定性減少的程度!)

從資訊理論知識中我們知道,期望資訊越小(條件熵),資訊增益(熵減去條件熵)越大,從而純度越高。所以ID3演算法的核心思想就是以——資訊增益——度量屬性選擇,選擇分裂後資訊增益最大的屬性進行分裂。下面先定義幾個要用到的概念。

設D為用類別(公式中m為類別的總數)對訓練元組進行的劃分(劃分為m個類),則D的(entropy)表示為:

      

其中pi表示第i個類別在整個訓練元組中出現的概率,m表示類別的總數,可以用屬於此類別元素的數量除以訓練元組元素總數量作為估計。熵的實際意義表示是D中元組的類標號所需要的平均資訊量。

現在我們假設將訓練元組D按特徵屬性A進行劃分,則A對D劃分的期望資訊為(即條件熵,在特徵屬性A分類的基礎上):

      

      Dj表示按特徵屬性A的一個分類,v表示特徵屬性A取值的種類個數。

     資訊增益即為兩者的差值:

      

1.2、C4.5演算法

ID3採用的資訊增益度量存在一個缺點,它一般會優先選擇有較多屬性值的Feature,因為屬性值多的Feature會有相對較大的資訊增益?(資訊增益反映的給定一個條件以後不確定性減少的程度,必然是分得越細的資料集確定性更高,也就是條件熵越小,資訊增益越大).為了避免這個不足C4.5中是用資訊增益比率(gain ratio)來作為選擇分支的準則。資訊增益比率通過引入一個被稱作分裂資訊(Split information)的項來懲罰取值較多的Feature。除此之外,C4.5還彌補了ID3中不能處理特徵屬性值連續的問題。但是,對連續屬性值需要掃描排序,會使C4.5效能下降,有興趣可以參考部落格

image

1.3、CART演算法

CART(Classification and Regression tree)分類迴歸樹。

  • CART之所以使用Gini指數是因為熵需要計算log,速度較慢

ID3中根據屬性值分割資料,之後該特徵不會再起作用,這種快速切割的方式會影響演算法的準確率。CART是一棵二叉樹,採用二元切分法,每次把資料切成兩份,分別進入左子樹、右子樹。而且每個非葉子節點都有兩個孩子,所以CART的葉子節點比非葉子多1。相比ID3和C4.5,CART應用要多一些,既可以用於分類也可以用於迴歸。CART分類時,使用基尼指數(Gini)來選擇最好的資料分割的特徵,gini描述的是純度,與資訊熵的含義相似。CART中每一次迭代都會降低GINI係數,選擇基尼指數最小的特徵及其對應的切分點作為最優特徵與最優切分點。下圖顯示資訊熵增益的一半,Gini指數,分類誤差率三種評價指標非常接近。迴歸時使用均方差作為loss function。基尼係數的計算與資訊熵增益的方式非常類似,公式如下

imageimage

2、整合學習法(Ensemble Learning)

1、整合學習概述

1.1 整合學習概述

整合學習在機器學習演算法中具有較高的準去率,不足之處就是模型的訓練過程可能比較複雜,效率不是很高。目前接觸較多的整合學習主要有2種:基於Boosting的和基於Bagging,前者的代表演算法有Adaboost、GBDT、XGBOOST、後者的代表演算法主要是隨機森林。

1.2 整合學習的主要思想 
整合學習的主要思想是利用一定的手段學習出多個分類器,而且這多個分類器要求是弱分類器,然後將多個分類器進行組合公共預測。核心思想就是如何訓練處多個弱分類器以及如何將這些弱分類器進行組合。

1.3、整合學習中弱分類器選擇 
一般採用弱分類器的原因在於將誤差進行均衡,因為一旦某個分類器太強了就會造成後面的結果受其影響太大,嚴重的會導致後面的分類器無法進行分類。常用的弱分類器可以採用誤差率小於0.5的,比如說邏輯迴歸、SVM、神經網路。

1.4、多個分類器的生成 
可以採用隨機選取資料進行分類器的訓練,也可以採用不斷的調整錯誤分類的訓練資料的權重生成新的分類器。

1.5、多個弱分類區如何組合 
基本分類器之間的整合方式,一般有簡單多數投票、權重投票,貝葉斯投票,基於D-S證據理論的整合,基於不同的特徵子集的整合。

2、Boosting演算法

2.1 基本概念

Boosting方法是一種用來提高弱分類演算法準確度的方法,這種方法通過構造一個預測函式系列,然後以一定的方式將他們組合成一個預測函式。他是一種框架演算法,主要是通過對樣本集的操作獲得樣本子集,然後用弱分類演算法在樣本子集上訓練生成一系列的基分類器。他可以用來提高其他弱分類演算法的識別率,也就是將其他的弱分類演算法作為基分類演算法放於Boosting 框架中,通過Boosting框架對訓練樣本集的操作,得到不同的訓練樣本子集,用該樣本子集去訓練生成基分類器;每得到一個樣本集就用該基分類演算法在該樣本集上產生一個基分類器,這樣在給定訓練輪數 n 後,就可產生 n 個基分類器,然後Boosting框架演算法將這 n個基分類器進行加權融合,產生一個最後的結果分類器,在這 n個基分類器中,每個單個的分類器的識別率不一定很高,但他們聯合後的結果有很高的識別率,這樣便提高了該弱分類演算法的識別率。在產生單個的基分類器時可用相同的分類演算法,也可用不同的分類演算法,這些演算法一般是不穩定的弱分類演算法,如神經網路(BP) ,決策樹(C4.5)等。

首先,讓我們先來了解一下,什麼是整合學習法。

①  將多個分類方法聚集在一起,以提高分類的準確率。

(這些演算法可以是不同的演算法,也可以是相同的演算法。)

②  整合學習法由訓練資料構建一組基分類器,然後通過對每個基分類器的預測進行投票來進行分類

③  嚴格來說,整合學習並不算是一種分類器,而是一種分類器結合的方法。

④  通常一個整合分類器的分類效能會好於單個分類器

⑤  如果把單個分類器比作一個決策者的話,整合學習的方法就相當於多個決策者共同進行一項決策。

2、Bagging

用的是隨機有放回的選擇訓練資料然後構造分類器,最後組合。

Bagging的策略:

(1)從樣本集中重取樣(有重複的)選出n個樣本;

(2)在所有屬性上,對這n個樣本建立分類器(ID3、C4.5、CART、SVM、Logistic迴歸等);

(3)重複以上兩步m次,即獲得了m個分類器;

(4)將資料放在這m個分類器上,最後根據這m個分類器的投票結果,決定資料屬於哪一類。

疑問1:n的值如何選擇?

疑問2:m的值如何選擇?——選擇奇數個分類器即可。

注:與其將Bagging理解為一個演算法,不如將其理解為一種思想,即綜合多個弱分類器的結果得到一個強分類器的思想!

3、隨機森林

隨機森林在bagging基礎上做了修改。基本思路是:
(1)從樣本集中用Bootstrap取樣(有放回的取樣)選出n個樣本(重取樣);
(2)從所有屬性中隨機選擇k個屬性,選擇最佳分割屬性作為節點建立CART決策樹;
(3)重複以上兩步m次,即建立了m棵CART決策樹

(4)這m個CART形成隨機森林,通過投票表決結果,決定資料屬於哪一類

隨機性在於n個樣本的隨機,及其k個特徵屬性的選擇,這兩個隨機。

A. max_features:

隨機森林允許單個決策樹使用特徵的最大數量。 Python為最大特徵數提供了多個可選項。 下面是其中的幾個:

Auto/None :簡單地選取所有特徵,每顆樹都可以利用他們。這種情況下,每顆樹都沒有任何的限制。

sqrt :此選項是每顆子樹可以利用總特徵數的平方根個。 例如,如果變數(特徵)的總數是100,所以每顆子樹只能取其中的10個。“log2”是另一種相似型別的選項。

0.2:此選項允許每個隨機森林的子樹可以利用變數(特徵)數的20%。如果想考察的特徵x%的作用, 我們可以使用“0.X”的格式。

max_features如何影響效能和速度?

增加max_features一般能提高模型的效能,因為在每個節點上,我們有更多的選擇可以考慮。 然而,這未必完全是對的,因為它降低了單個樹的多樣性,而這正是隨機森林獨特的優點。 但是,可以肯定,你通過增加max_features會降低演算法的速度。 因此,你需要適當的平衡和選擇最佳max_features。
B. n_estimators:

在利用最大投票數或平均值來預測之前,你想要建立子樹的數量。 較多的子樹可以讓模型有更好的效能,但同時讓你的程式碼變慢。 你應該選擇儘可能高的值,只要你的處理器能夠承受的住,因為這使你的預測更好更穩定。
C. min_sample_leaf:

如果您以前編寫過一個決策樹,你能體會到最小樣本葉片大小的重要性。 葉是決策樹的末端節點。 較小的葉子使模型更容易捕捉訓練資料中的噪聲。 一般來說,我更偏向於將最小葉子節點數目設定為大於50。在你自己的情況中,你應該儘量嘗試多種葉子大小種類,以找到最優的那個。

              1) RF劃分時考慮的最大特徵數max_features: 可以使用很多種型別的值,預設是"None",意味著劃分時考慮所有的特徵數;如果是"log2"意味著劃分時最多考慮log2Nlog2N 個特徵;如果是"sqrt"或者"auto"意味著劃分時最多考慮N−−√N 個特徵。如果是整數,代表考慮的特徵絕對數。如果是浮點數,代表考慮特徵百分比,即考慮(百分比xN)取整後的特徵數。其中N為樣本總特徵數。一般來說,如果樣本特徵數不多,比如小於50,我們用預設的"None"就可以了,如果特徵數非常多,我們可以靈活使用剛才描述的其他取值來控制劃分時考慮的最大特徵數,以控制決策樹的生成時間。

    2) 決策樹最大深度max_depth: 預設可以不輸入,如果不輸入的話,決策樹在建立子樹的時候不會限制子樹的深度。一般來說,資料少或者特徵少的時候可以不管這個值。如果模型樣本量多,特徵也多的情況下,推薦限制這個最大深度,具體的取值取決於資料的分佈。常用的可以取值10-100之間。

    3) 內部節點再劃分所需最小樣本數min_samples_split: 這個值限制了子樹繼續劃分的條件,如果某節點的樣本數少於min_samples_split,則不會繼續再嘗試選擇最優特徵來進行劃分。 預設是2.如果樣本量不大,不需要管這個值。如果樣本量數量級非常大,則推薦增大這個值。

    4) 葉子節點最少樣本數min_samples_leaf: 這個值限制了葉子節點最少的樣本數,如果某葉子節點數目小於樣本數,則會和兄弟節點一起被剪枝。 預設是1,可以輸入最少的樣本數的整數,或者最少樣本數佔樣本總數的百分比。如果樣本量不大,不需要管這個值。如果樣本量數量級非常大,則推薦增大這個值。

    5)葉子節點最小的樣本權重和min_weight_fraction_leaf:這個值限制了葉子節點所有樣本權重和的最小值,如果小於這個值,則會和兄弟節點一起被剪枝。 預設是0,就是不考慮權重問題。一般來說,如果我們有較多樣本有缺失值,或者分類樹樣本的分佈類別偏差很大,就會引入樣本權重,這時我們就要注意這個值了。

    6) 最大葉子節點數max_leaf_nodes: 通過限制最大葉子節點數,可以防止過擬合,預設是"None”,即不限制最大的葉子節點數。如果加了限制,演算法會建立在最大葉子節點數內最優的決策樹。如果特徵不多,可以不考慮這個值,但是如果特徵分成多的話,可以加以限制,具體的值可以通過交叉驗證得到。

    7) 節點劃分最小不純度min_impurity_split:  這個值限制了決策樹的增長,如果某節點的不純度(基於基尼係數,均方差)小於這個閾值,則該節點不再生成子節點。即為葉子節點 。一般不推薦改動預設值1e-7。

    上面決策樹引數中最重要的包括最大特徵數max_features, 最大深度max_depth, 內部節點再劃分所需最小樣本數min_samples_split和葉子節點最少樣本數min_samples_leaf。

4、Boosting

Boosting方法和Bagging類似,與其將其理解為一個演算法,不如將其理解為一類演算法的思想。即:通過m次的迭代,每次迭代訓練出不同的弱分類器,然後將這m個弱分類器進行組合,形成一個強分類器。在Bagging方法中,bb個學習器之間彼此是相互獨立的,這樣的特點使得Bagging方法更容易並行。與Bagging方法不同,在Boosting演算法中,學習器之間是存在先後順序的,同時,每一個樣本是有權重的,初始時,每一個樣本的權重是相等的。首先,第11個學習器對訓練樣本進行學習,當學習完成後,增大錯誤樣本的權重,同時減小正確樣本的權重,再利用第22個學習器對其進行學習,依次進行下去,最終得到bb個學習器,最終,合併這bb個學習器的結果,同時,與Bagging中不同的是,每一個學習器的權重也是不一樣的。

在Boosting方法中,最重要的方法包括:AdaBoostGBDT。。

5、Adaboost

   AdaBoost是英文"Adaptive Boosting"(自適應增強)的縮寫,它的自適應在於:前一個基本分類器被錯誤分類的樣本的權值會增大,而正確分類的樣本的權值會減小,並再次用來訓練下一個基本分類器。同時,在每一輪迭代中,加入一個新的弱分類器,直到達到某個預定的足夠小的錯誤率或達到預先指定的最大迭代次數才確定最終的強分類器。
Adaboost演算法可以簡述為三個步驟:
 (1)首先,是初始化訓練資料的權值分佈D1。假設有N個訓練樣本資料,則每一個訓練樣本最開始時,都被賦予相同的權值:w1=1/N。
 (2)然後,訓練弱分類器hi。具體訓練過程中是:如果某個訓練樣本點,被弱分類器hi準確地分類,那麼在構造下一個訓練集中,它對應的權值要減小;相反,如果某個訓練樣本點被錯誤分類,那麼它的權值就應該增大。權值更新過的樣本集被用於訓練下一個分類器,整個訓練過程如此迭代地進行下去。
 (3)最後,將各個訓練得到的弱分類器組合成一個強分類器。各個弱分類器的訓練過程結束後,加大分類誤差率小的弱分類器的權重,使其在最終的分類函式中起著較大的決定作用,而降低分類誤差率大的弱分類器的權重,使其在最終的分類函式中起著較小的決定作用。

  換而言之,誤差率低的弱分類器在最終分類器中佔的權重較大,否則較小。

二、AdaBoost演算法過程

    給定訓練資料集:,其中用於表示訓練樣本的類別標籤,i=1,...,N。Adaboost的目的就是從訓練資料中學習一系列弱分類器或基本分類器,然後將這些弱分類器組合成一個強分類器。

相關符號定義:

Adaboost的演算法流程如下:

四、AdaBoost的優點和缺點

優點

     (1)Adaboost提供一種框架,在框架內可以使用各種方法構建子分類器。可以使用簡單的弱分類器,不用對特徵進行篩選,也不存在過擬合的現象

     (2)Adaboost演算法不需要弱分類器的先驗知識,最後得到的強分類器的分類精度依賴於所有弱分類器。無論是應用於人造資料還是真實資料,Adaboost都能顯著的提高學習精度。

     (3)Adaboost演算法不需要預先知道弱分類器的錯誤率上限,且最後得到的強分類器的分類精度依賴於所有弱分類器的分類精度,可以深挖分類器的能力。Adaboost可以根據弱分類器的反饋,自適應地調整假定的錯誤率,執行的效率高。

     (4)Adaboost對同一個訓練樣本集訓練不同的弱分類器,按照一定的方法把這些弱分類器集合起來,構造一個分類能力很強的強分類器,即“三個臭皮匠賽過一個諸葛亮”。

缺點:

     在Adaboost訓練過程中,Adaboost會使得難於分類樣本的權值呈指數增長,訓練將會過於偏向這類困難的樣本,導致Adaboost演算法易受噪聲干擾。此外,Adaboost依賴於弱分類器,而弱分類器的訓練時間往往很長。

6、GBDT(梯度提升決策樹)

給定輸入向量x和輸出變數y組成的若干訓練樣本(x1,y1),(x2,y2),…,(xn,yn),目標是找到近似函式F(x),使得損失函式L(y,F(x))的損失值最小

首先gbdt 是通過採用加法模型(即基函式的線性組合),以及不斷減小訓練過程產生的殘差來達到將資料分類或者回歸的演算法。

  •  gbdt的訓練過程

        我們通過一張圖片,圖片來源來說明gbdt的訓練過程: 

    

                      圖 1:GBDT 的訓練過程

        gbdt通過多輪迭代,每輪迭代產生一個弱分類器,每個分類器在上一輪分類器的殘差基礎上進行訓練。對弱分類器的要求一般是足夠簡單,並且是低方差和高偏差的。因為訓練的過程是通過降低偏差來不斷提高最終分類器的精度,(此處是可以證明的)。

        弱分類器一般會選擇為CART TREE(也就是分類迴歸樹)。由於上述高偏差和簡單的要求 每個分類迴歸樹的深度不會很深。最終的總分類器 是將每輪訓練得到的弱分類器加權求和得到的(也就是加法模型)。

        模型最終可以描述為:

Fm(x)=∑m=1MT(x;θm)Fm(x)=∑m=1MT(x;θm)

        模型一共訓練M輪,每輪產生一個弱分類器 T(x;θm)T(x;θm)。弱分類器的損失函式

θ^m=argminθm∑i=1NL(yi,Fm−1(xi)+T(xi;θm))θ^m=arg⁡minθm⁡∑i=1NL(yi,Fm−1(xi)+T(xi;θm))

        Fm−1(x)Fm−1(x) 為當前的模型,gbdt 通過經驗風險極小化來確定下一個弱分類器的引數。具體到損失函式本身的選擇也就是L的選擇,有平方損失函式,0-1損失函式,對數損失函式等等。如果我們選擇平方損失函式,那麼這個差值其實就是我們平常所說的殘差。

    • 但是其實我們真正關注的,1.是希望損失函式能夠不斷的減小,2.是希望損失函式能夠儘可能快的減小。所以如何儘可能快的減小呢?
    • 讓損失函式沿著梯度方向的下降。這個就是gbdt 的 gb的核心了。 利用損失函式的負梯度在當前模型的值作為迴歸問題提升樹演算法中的殘差的近似值去擬合一個迴歸樹。gbdt 每輪迭代的時候,都去擬合損失函式在當前模型下的負梯度。
    • 這樣每輪訓練的時候都能夠讓損失函式儘可能快的減小,儘快的收斂達到區域性最優解或者全域性最優解。
  • gbdt如何選擇特徵?

        gbdt選擇特徵的細節其實是想問你CART Tree生成的過程。這裡有一個前提,gbdt的弱分類器預設選擇的是CART TREE。其實也可以選擇其他弱分類器的,選擇的前提是低方差和高偏差。框架服從boosting 框架即可。

        下面我們具體來說CART TREE(是一種二叉樹) 如何生成。CART TREE 生成的過程其實就是一個選擇特徵的過程。假設我們目前總共有 M 個特徵。第一步我們需要從中選擇出一個特徵 j,做為二叉樹的第一個節點。然後對特徵 j 的值選擇一個切分點 m. 一個 樣本的特徵j的值 如果小於m,則分為一類,如果大於m,則分為另外一類。如此便構建了CART 樹的一個節點。其他節點的生成過程和這個是一樣的。現在的問題是在每輪迭代的時候,如何選擇這個特徵 j,以及如何選擇特徵 j 的切分點 m:

    • 原始的gbdt的做法非常的暴力,首先遍歷每個特徵,然後對每個特徵遍歷它所有可能的切分點,找到最優特徵 m 的最優切分點 j。
    • 如何衡量我們找到的特徵 m和切分點 j 是最優的呢? 我們用定義一個函式 FindLossAndSplit 來展示一下求解過程:
  • 在這裡,我們先遍歷訓練樣本的所有的特徵,對於特徵 j,我們遍歷特徵 j 所有特徵值的切分點 c。找到可以讓下面這個式子最小的特徵 j 以及切分點c.
  • gbdt 如何構建特徵 ?

        其實說gbdt 能夠構建特徵並非很準確,gbdt 本身是不能產生特徵的,但是我們可以利用gbdt去產生特徵的組合。在CTR預估中,工業界一般會採用邏輯迴歸去進行處理,在我的上一篇博文當中已經說過,邏輯迴歸本身是適合處理線性可分的資料,如果我們想讓邏輯迴歸處理非線性的資料,其中一種方式便是組合不同特徵,增強邏輯迴歸對非線性分佈的擬合能力。

        長久以來,我們都是通過人工的先驗知識或者實驗來獲得有效的組合特徵,但是很多時候,使用人工經驗知識來組合特徵過於耗費人力,造成了機器學習當中一個很奇特的現象:有多少人工就有多少智慧。關鍵是這樣通過人工去組合特徵並不一定能夠提升模型的效果。所以我們的從業者或者學界一直都有一個趨勢便是通過演算法自動,高效的尋找到有效的特徵組合。Facebook 在2014年 發表的一篇論文便是這種嘗試下的產物,利用gbdt去產生有效的特徵組合,以便用於邏輯迴歸的訓練,提升模型最終的效果

  • GBDT 如何用於分類 ?

        首先明確一點,gbdt 無論用於分類還是迴歸一直都是使用的CART 迴歸樹。不會因為我們所選擇的任務是分類任務就選用分類樹,這裡面的核心是因為gbdt 每輪的訓練是在上一輪的訓練的殘差基礎之上進行訓練的。這裡的殘差就是當前模型的負梯度值 。這個要求每輪迭代的時候,弱分類器的輸出的結果相減是有意義的。殘差相減是有意義的。

        如果選用的弱分類器是分類樹,類別相減是沒有意義的。上一輪輸出的是樣本 x 屬於 A類,本一輪訓練輸出的是樣本 x 屬於 B類。 A 和 B 很多時候甚至都沒有比較的意義,A 類- B類是沒有意義的。

7、XGBoost

待續。。。。

相關推薦

決策模型組合之隨機森林GBDT(轉)

get 9.png 生成 代碼 margin ast decision 損失函數 固定 版權聲明: 本文由LeftNotEasy發布於http://leftnoteasy.cnblogs.com, 本文可以被全部的轉載或者部分使用,但請註明出處,如果有問題,請

決策(六)--隨機森林

原文: http://www.cnblogs.com/hrlnw/p/3850459.html 1.隨機森林原理介紹 隨機森林,指的是利用多棵樹對樣本進行訓練並預測的一種分類器。該分類器最早由Leo Breiman和Adele Cutler提出,並被註冊成了商標。簡單來說,

機器學習:整合學習(ensemble),bootstrap,Bagging隨機森林Boosting

文章目錄 整合學習的樸素思想 Bootstrap理論 Bagging 隨機森林 Boosting 整合學習的樸素思想 整合學習基於這樣的思想:對於比較複雜的任務,綜合許多人的意見來進行決策會比“一家獨大”要更好。換句話說、就

整合演算法(Bagging隨機森林

引言(關於整合學習) 整合演算法包括很多種包括Bagging,隨機森林,Boosting 以及其他更加高效的整合演算法。在這篇部落格上只介紹Bagging演算法及隨機森林,Boosting提升演算法及其他高效的演算法在下一篇詳細講解。 整合演算法就是通過構建多個學習器來完成學習任務,是由

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

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

bagging隨機森林

1、bagging 步驟如下: (1)從樣本集合中有放回地選出n個樣本 (2)在所有屬性上,對這n個樣本建立分類器(分類器可以是決策樹,SVM,Logistic迴歸等) (3)重複步驟(1)、(2)m次,得到

整合學習(Boosting,Bagging隨機森林

Bagging是並行式整合學習代表方法。基於“自助取樣法”(bootstrap sampling)。自助取樣法機制:給定包含m個樣本的資料集,我們先隨機取出一個樣本放入取樣集中,再把該樣本放回初始資料集,使得下一次取樣時該樣本還會被採到。這樣,經過m次樣本採集,我們得到包含m個樣本的取樣集。取樣集中,有的樣本

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

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

Bagging隨機森林及Python實現

隨機森林是bagging的代表 1、bagging:       bootstrap sampling:自助取樣法。給定包含m個樣本的資料集,我們先隨機取出一個樣本放入取樣集中,再把該樣本放回初始資

快速理解決策 bootstrap,bagging,boosting,online boosting-五個概念

決策樹是一種解決分類問題的絕好方法,顧名思義,它正像一棵大樹一樣,由根部不斷生長出很多枝葉;它的優點實在太多,比如可以避免缺失值的影響、可以處理混合預測、模型容易展示等。然而,決策樹的實際應用也絕不簡單,如果樹根稍有不穩、或者枝幹略有差池,樹就可能會徹底長偏啦,我們總是需

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

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

機器學習回顧篇(12):整合學習之Bagging隨機森林

  1 引言¶ 整合學習演算法是當下炙手可熱的一類演算法,在諸多機器學習大賽中都頻繁出現它的身影。準確來說,整合學習演算法並不是一個單獨的機器學習演算法,而是通過構建多個學習器,博採眾家之長,共同求解問題的一種思想。古語有云:&ldquo

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

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

決策AdaboostGBDTXgboost,LightGBM等

1 決策樹 ID3,C4.5 CART    特徵選擇,決策樹構建,剪枝 2 Adaboost 大多數提升方法都是改變訓練資料的概率(權值)分佈,針對不同的訓練資料分佈呼叫弱學習演算法的一系列弱分類器 從而,兩個問題需要解答:  (1)每一輪如何改變訓練資料的權值分佈

決策Bagging隨機森林BoostingAdaBoostGBDTXGBoost

1、決策樹  一、決策樹的優點和缺點     優點: 決策樹演算法中學習簡單的決策規則建立決策樹模型的過程非常容易理解, 決策樹模型可以視覺化,非常直觀 應用範圍廣,可用於分類和迴歸,而且非常容易做多類別的分類 能夠處理數值型和連續的樣本特徵     缺點:

機器學習 —— 決策及其整合演算法(Bagging隨機森林Boosting)

決策樹 --------------------------------------------------------------------- 1.描述: 以樹為基礎的方法可以用於迴歸和分類。 樹的節點將要預測的空間劃分為一系列簡單域 劃分預測空間的規則可以被建模為

ml課程:決策隨機森林GBDTXGBoost相關(含程式碼實現)

以下是我的學習筆記,以及總結,如有錯誤之處請不吝賜教。 基礎概念: 熵Entropy:是衡量純度的一個標準,表示式可以寫為: 資訊增益Information Gain:熵變化的一個量,表示式可以寫為: 資訊增益率Gain Ratio:資訊增益的變化率,表示式可以寫為:

決策隨機森林整合演算法(Titanic例項)

#coding:utf-8 import pandas #ipython notebook titanic = pandas.read_csv("titanic_train.csv") titanic.head(5) #print (titanic.describe()) t

決策ID3C4.5CART隨機森林的原理與例子

(寫在前面:作者是一名剛入學的模式識別專業的碩士生,第一次寫部落格,有錯誤的地方還請大家多多指教評論,一起交流呀~) 決策樹的基本流程 ①劃分特徵的選擇(常見的選擇方法有:資訊增益、增益率、基尼指數,下文會詳細介紹) ②劃分停止準則:停止準則表示該節點不再劃分

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

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