CART與隨機森林

2021-08-09 06:24:32 字數 2931 閱讀 9177

一、前言

分類與回歸樹(classification and regression trees, cart)是由leo breiman, jerome friedman, richard olshen與charles stone於1984年提出,既可用於分類也可用於回歸。cart被稱為資料探勘領域內里程碑式的演算法。

題外話,十大經典資料探勘演算法:

c4.5

k-means

svmapriori

empagerank

adaboost

knnnaïve bayes

cart

不同於c4.5,cart本質是對特徵空間進行二元劃分(即cart生成的決策樹是一棵二叉樹),並能夠對標量屬性(nominal attribute)與連續屬性(continuous attribute)進行**。

二、cart演算法總體流程

t代表當前樣本集,當前候選屬性集用t_attributelist表示。

(1)建立根節點n

(2)為n分配類別

(3)if t都屬於同一類別or t中只剩下乙個樣本則返回n為葉節點,否則為其分配屬性

(4)for each t_attributelist中,執行該屬性上的乙個劃分,計算此劃分的gini係數

(5)n的測試屬性test_attribute=t_attributelist中最小gini係數的屬性

(6)劃分t得到t1、t2子集

(7)對於t1重複(1)-(6)

(8)對於t2重複(1)-(6)

三、cart生成

2.1、分支方法

對於連續特徵:比較閾值,高於某個閾值就屬於某一類,低於某個閾值屬於另一類。

對於離散特徵:抽取子特徵,比如顏值這個特徵,有帥、醜、中等三個水平,可以先分為帥和不帥的,不帥的裡面再分成醜和中等的。

2.2、採用gini指數來度量**時的不純度

2.3、 剪枝

下面這六種情況都會停止**:

如果節點中所有觀測屬於一類(此種情形屬於數的完全成長,會出現過擬合問題,需要剪枝)

如果節點中所有觀測的屬性取值一致

如果樹的深度達到設定閾值

如果節點所含觀測值小於設定的父節點應含觀測數的閾值

如果節點的子節點所含觀測數小於設定的閾值

如果沒有屬效能滿足設定的**準則的閾值

剪枝分兩種:

後剪枝:在已生成過擬合決策樹上進行剪枝,刪除沒有意義的組,可以得到簡化版的剪枝決策樹。有rep、pep、ccp三種規則。

ccp,即給**準則—基尼係數加上懲罰項,此時樹的層數越深,基尼係數的懲罰項會越大。

四、cart與邏輯回歸的比較

主要優缺點如下圖:

缺點補充幾點:

不是很穩定,資料變化一點,你的樹就會發生變化;

沒有考慮變數之間相關性,每次篩選都只考慮乙個變數(因此不需要歸一化);

只能線性分割資料;

貪婪演算法(可能找不到最好的樹)。

優點也補充幾點:

同時可以處理分類變數和數值變數(但是可能決策樹對連續變數的劃分並不合理,所以可以提前先離散化);

可以處理多輸出問題;

另外決策樹不需要做變數篩選,它會自動篩選;

適合處理高維度資料。

五、隨機森林

儘管有剪枝等等方法,一棵樹的生成肯定還是不如多棵樹,因此就有了隨機森林,解決決策樹泛化能力弱的缺點。(可以理解成三個臭皮匠頂過諸葛亮)

同一批資料,用同樣的演算法只能產生一棵樹,這時

bagging策略可以幫助我們產生不同的資料集。

bagging策略**於bootstrap aggregation:從樣本集(假設樣本集n個資料點)中重取樣選出nb個樣本(有放回的取樣,樣本資料點個數仍然不變為n),在所有樣本上,對這n個樣本建立分類器(id3\c4.5\cart\svm\logistic),重複以上兩步m次,獲得m個分類器,最後根據這m個分類器的投票結果,決定資料屬於哪一類。

隨機森林在bagging的基礎上更進一步:

樣本的隨機:從樣本集中用bootstrap隨機選取n個樣本

特徵的隨機:從所有屬性中隨機選取k個屬性,選擇最佳分割屬性作為節點建立cart決策樹(泛化的理解,這裡面也可以是其他型別的分類器,比如svm、logistics)

重複以上兩步m次,即建立了m棵cart決策樹

這m個cart形成隨機森林,通過投票表決結果,決定資料屬於哪一類(投票機制有一票否決制、少數服從多數、加權多數)

Bagging與隨機森林

給定包含 m 個樣本的資料集 d,我們對它進行取樣產生資料集 d 每次隨機從 d 中挑選乙個樣本,將其拷貝放入 d 然後再將該樣本放回初始資料集 d 中,使得該樣本在下次取樣時仍有可能被採到 這個過程重複執行 m次後,我們就得到了包含 m 個樣本的資料集 d 這就是自助取樣的結果。顯然,d 中有一部...

Bagging與隨機森林

前今天整理了決策樹的原理實現,順手再把隨機森林的原理整理整理。bagging是並行式整合學習方法最著名的代表,其原理是給定包含m個樣本的資料集,我們先隨機取出乙個樣本放入取樣集中,再把該樣本放回初始資料集 有放回 這樣經過m此隨機取樣操作,我們得到含有m個樣本的取樣集。照這樣,我們可取樣出t個含m個...

Bagging演算法與隨機森林

給定包含m個樣本的資料集d,我們對它進行取樣產生資料集d 每次隨機從d中挑選乙個樣本,將其拷貝放入d 然後再將該樣本放回初始資料集d中,使得該樣本在下次取樣時仍有可能被取樣到 這個過程重複執行m次後,我們就得到了包含m個樣本的資料集d 這就是自助取樣的結果。顯然有一部分樣本會在d 中出現多次,而另一...