決策樹演算法講解

2021-10-05 09:45:25 字數 3633 閱讀 9737

決策樹演算法以樹狀結構表示資料分類的結果。每乙個決策點實現乙個具有離散輸出的測試函式,記為分支。它基於二元劃分策略(類似於二叉樹)。

一棵決策樹包括乙個根節點、若干個內部節點(決策點)和若干個葉節點(決策結果)。

葉節點對應決策的結果,而其他節點對應乙個屬性測試。決策樹學習的目的就是構建一棵泛化能力強的決策樹。

在分類問題中,決策樹表示基於特徵對例項進行分類的過程。它可以認為是 if-then 規則的集合,也可以認為是定義在特徵空間與類空間上的條件概率分布。

使用決策樹進行決策的過程就是從根節點開始,測試待分類項中相應的特徵屬性,並按照其值選擇輸出分支,直到到達葉子節點,將葉子節點存放的類別作為決策結果。

決策樹演算法可以分為兩個階段

訓練階段

從給定的訓練資料集中構造出一棵決策樹。

分類階段

從根開始,按照決策樹的分類屬性逐層往下劃分,直到葉節點,獲得概念(決策、分類)結果。

決策樹所形成的分類邊界有乙個明顯特點:軸平行,即它的分類邊界由多個與座標軸平行的分段組成。在多變數決策樹中,通過替換該分段為斜劃分實現決策樹模型的簡化。

熵指的是乙個物體內部的混亂程度。

熵 = -\sum_^np(i|t)\log_2 p(i|t)

gini係數 = gim(p) = 1-\sum_^k p_k^2

p(i|t) 代表了節點 t 為分類 i 的概率,其中 log2 為取以 2 為底的對數。

gini係數和熵屬於同乙個層面,都是混亂程度越大,純度越低,他們的值就越大。

決策樹構造

構造樹的基本想法是隨著樹的深度增加,節點的熵迅速降低(純度增加)。熵降低的速度越快越好,這樣可以降低決策樹的複雜度(越矮越好)。

先計算每個葉節點的熵,然後再對葉節點加權計算資訊熵

資訊增益(information gain): 在劃分資料集前後資訊發生的變化稱為資訊增益。

因此第一步使系統的資訊熵下降最快,資訊增益最大的作為根節點。

其他內部節點和根節點的構造方式一樣,因此可以通過遞迴方式來構造。

在理想條件下,當系統的資訊熵降為0時,就沒有必要再往下構造決策樹了,此時葉子節點都是純的。

然而還有最壞的情況是決策樹的高度為屬性(決策變數)的個數,葉子節點不純,這就意味著我們需要一定的概率來做出決策。

決策樹的構造過程可以理解成為尋找純淨劃分的過程。而衡量不純度的指標有三種,而每一種不純度對應一種決策樹的生成演算法:

資訊增益(id3演算法)

資訊增益比(c4.5演算法)

基尼指數(cart演算法)

gini= \sum^v_ \frac gini(d^v)
gini(d)=-\sum^y_ \sum_ p_k p_ = 1- \sum^y_ p_k^2
c(t) = \sum_n_t.h(t)
(希望他越小越好,類似於損失函式)

h(t)表示當前葉子節點的熵值或基尼係數,n表示當前葉子節點的樣本數(相當於權重值)。

補充

如果決策樹的高度太高(枝葉太多)容易發生過擬合的現象。因此需要進行乙個剪枝的操作來防止過擬合問題。

必考

c_α(t) = c(t) + α |t_|
葉子節點個數越多。損失越大。

其中c(t)是評價函式,t_leaf是葉子節點個數,α是權重引數,當α大,說明葉子節點個數對

一般決策樹用交叉驗證法進行訓練。

以資訊增益為準選擇決策樹的屬性,注意資訊增益偏好可取值數目較多的屬性。因此可能會有一種情況使資訊增益很大,但是分出較多的屬性造成決策效果不好。所以id3存在乙個問題,那就是越細小的分割分類錯誤率越小。這種問題容易造成過擬合。

分割太細了,訓練資料的分類可以達到0錯誤率,但是因為新的資料和訓練資料不同,所以面對新的資料分錯率反倒上公升了。決策樹是通過分析訓練資料,得到資料的統計資訊,而不是專為訓練資料量身定做。

就比如給男人做衣服,叫來10個人做參考,做出一件10個人都能穿的衣服,然後叫來另外5個和前面10個人身高差不多的,這件衣服也能穿。但是當你為10個人每人做一件正好合身的衣服,那麼這10件衣服除了那個量身定做的人,別人都穿不了。

使用增益率選擇最優劃分屬性,增益率定義為:特徵a對訓練資料集d的資訊增益比gr(d,a)定義為其資訊增益g(d,a)與訓練資料集d在特徵a的劃分下資料集本身的乙個混亂程度(熵)iv(d)

gainratio(d, a) = \frac

iv(d) = - \sum^v_\frac log_2\frac
注意增益率偏好可取值數目較少的屬性。c4.5中。優化項要除以分割太細的代價,這個比值叫做資訊增益率。分割太細,分母增加,資訊增益率會降低。

採用悲觀剪枝id3

構造決策樹的時候,容易產生過擬合的情況。在 c4.5 中,會在決策樹構造之後採用悲觀剪枝(pep),這樣可以提公升決策樹的泛化能力。悲觀剪枝是後剪枝技術中的一種,通過遞迴估算每個內部節點的分類錯誤率,比較剪枝前後這個節點的分類錯誤率來決定是否對其進行剪枝。這種剪枝方法不再需要乙個單獨的測試資料集。

離散化處理連續屬性c4.5

可以處理連續屬性的情況,對連續的屬性進行離散化的處理。比如打籃球存在的「濕度」屬性,不按照「高、中」劃分,而是按照濕度值進行計算,那麼濕度取什麼值都有可能。該怎麼選擇這個閾值呢,c4.5 選擇具有最高資訊增益的劃分所對應的閾值。

處理缺失值

針對資料集不完整的情況,c4.5 也可以進行處理。假如我們得到的是如下的資料,你會發現這個資料中存在兩點問題。

資料集中存在數值缺失的情況,如何進行屬性選擇?

就是假如有些樣本在某個屬性上存在值缺失,那麼我計算資訊增益的時候,我不考慮這些樣本就可以了。但用了多少樣本,要在不考慮帶缺失值樣本的前提下計算的資訊增益的基礎上,乘以乙個權重。

假設已經做了屬性劃分,但是樣本在這個屬性上有缺失值,該如何對樣本進行劃分?

如果出現樣本在該屬性上的值缺失, 則把該樣本劃分到所有的分支裡面,但是權重不一樣(這個權重就是每個分支裡的節點個數佔的總數比例),這樣,如果再往下劃分屬性,對於該樣本來說,算條件熵的時候,得考慮上他本身的乙個權重了。

cart 只支援二叉樹。同時 cart 決策樹比較特殊,既可以作分類樹,又可以作回歸樹。

如何區分分類樹和回歸樹

如果我構造了一棵決策樹,想要基於資料判斷這個人的職業身份,這個就屬於分類樹,因為是從幾個分類中來做選擇。分類樹可以處理離散資料,也就是資料種類有限的資料,它輸出的是樣本的類別

如果是給定了資料,想要**這個人的年齡,那就屬於回歸樹。回歸樹可以對連續型的數值進行**,也就是資料在某個區間內都有取值的可能,它輸出的是乙個數值。

cart分類樹的工作流程

gini= \sum^v_ \frac gini(d^v)
gini(d)=-\sum^k_  p_k(1- p_) = 1- \sum^k_ p_k^2
實際上 cart 分類樹與 c4.5 演算法類似,只是屬性選擇的指標採用的是基尼係數。

由於cart演算法中,只把類別分為兩類,所以k=2,二分類問題概率表示:p1(1-p1) + p2(1-p2)

決策樹演算法

決策樹是一種樹型結構,其中每個內部結點表示在乙個屬性上的測試,每個分支代表乙個測試輸出,每個葉結點代表一種類別。決策樹學習是以例項為基礎的歸納學習,採用的是自頂向下的遞迴方法,其基本思想是以資訊熵為度量構造一棵熵值下降最快的樹,到葉子結點處的熵值為零,此時每個葉節點中的例項都屬於同一類。決策樹學習演...

決策樹演算法

本文主要介紹id3 c4.5和cart演算法 決策樹起源於概念學習系統 cls 概念學習模型 是乙個事先定義的範疇集合和一些有關例子是否落入給定範疇的判定 概念學習的主要任務 是判斷所給定事物的屬性或特性,並且正確地區分這些事物,將其劃分到某乙個範疇 對於如下決策樹模型 我們首先考慮他的屬性outl...

決策樹演算法

引 最近老師布置了課堂展示的作業,主題是決策樹,老師還舉了買西瓜的決策例子,感覺貼近生活也很有意思。在這之前沒有了解過這個概念,通過幾個禮拜的學習收穫不少。一 首先,什麼是決策樹?個人而言,決策樹就是將人在做決策時的思維脈絡以樹的形式展示出來的產物,即決策的過程模型。這是一棵去不去打高爾夫球的決策樹...