分類算法之決策樹(理論篇)

起步

決策樹(decision tree)是一個樹結構,能夠是二叉樹或非二叉樹,也能夠把他看做是 if-else 規則的集合,也能夠認爲是在特徵空間上的條件機率分佈。算法

決策樹的結構

以一個簡單的用因而否買電腦預測的決策樹爲例子:spa

v2-c124b112aa3ef385d210b6c03e1ff458_hd.jpg

樹中的內部節點表明一個屬性,節點引出的分支表示這個屬性的全部可能的值,葉節點表示最終的分類結果。從根節點到葉節點的每一條路徑構建一條規則,而且這些規則具備 互斥且完備 的性質,即每個樣本均被且只有一條路徑所覆蓋。code

決策樹的建立是根據給定的訓練數據來完成的,給出下面的訓練集(本章都是圍着這個例子進行講解):orm

Image.png

這是一個是否買電腦的一個數據,數據上有4個特徵:年齡( age ),收入( income ),是否學生( student ),信用度( credit_rating )。blog

案例的決策樹中,爲何是以年齡做爲第一個進行分類的特徵呢?遞歸

特徵的分類能力

若是一個特徵對結果影響比較大,那麼就能夠認爲這個特徵的分類能力比較大。相親時候通常會先問收入,再問長相,而後問其家庭狀況。也就是說在這邊收入狀況影響比較大,因此做爲第一個特徵判斷,若是不合格那可能連後續都不用詢問了。ci

有什麼方法能夠代表特徵的分類能力呢?
這時候,須要引入一個概念,rem

熵(entropy)

1948年,香農提出「信息熵」的機率。一條信息的信息量大小和它的不肯定性有直接的關係,要搞清楚一件不肯定的事,須要瞭解大量信息。熵(entropy)用於表示 隨機變量不肯定性的度量, 若是熵越大,表示不肯定性越大。數據分析

假設變量X,它有Xi(i=1,2,3...n)種狀況,pi表示第i狀況的機率,那麼隨機變量X的熵定義爲:it

$$ H(X) = -\sum_{i=1}^np_i\log_2{(p_i)} $$

熵的單位是比特(bit)。

好比當隨機變量X只有0,1兩種取值,則有: H(x) = -plog(p) - (1-p)log(1-p) , 能夠畫出一個二維座標表示他們的關係:

9911d23ae3bcc854e59a59365b5365be_hd.jpg

從而可知,當 p=0.5 時,熵取值最大,隨機變量不肯定性最大。

回到買電腦的例子,在是否購買電腦這個結果中,數據集D,有 9 個yes,5 個no。所以它的熵是:

$$ info(D) = H(D) = - \frac{9}{14}\log_2(\frac{9}{14}) - \frac5{14}\log_2(\frac5{14}) = 0.940 bits $$

條件熵(conditional entropy)

隨機變量X給定的條件下,隨機變量Y的條件熵 H(Y|X) 定義爲:

$$ H(Y|X) = \sum_{i=1}^np_iH(Y|X=x_i) $$

信息增益 (Information gain)

信息增益表示的是:得知 特徵X 的信息而使得 分類Y 的信息的不肯定性減小的程度。若是某個特徵的信息增益比較大,就表示該特徵對結果的影響較大,特徵A對數據集D的信息增益表示爲:

$$ gain(A) = H(D) - H(D|A) $$

以那個買電腦的數據集爲例,咱們來計算下 age 這個特徵的信息增益,將數據再展現一下:

Image.png

從圖中能夠看出,有14條數據 age 這個特徵中,年輕人 youth 有5人, 中年人 middle_aged 有4人,老年人 senior 有5人。分別計算這三種狀況下的信息熵,再將信息熵相加就能獲得 H(D|A):

$$ \begin{align*} info_{age}(D) = H(D|A) &= \frac5{14}\times (-\frac25\log_2\frac25 - \frac35\log_2\frac35) \\ &+\frac4{14}\times (-\frac44\log_2\frac44 - \frac04\log_2\frac04) \\ &+\frac5{14}\times (-\frac35\log_2\frac35 - \frac25\log_2\frac25) \\ &=0.694 bits \end{align*} $$

所以,gain(age) 的信息增益就是:

gain(age) = info(D) - info_{age}(D) = 0.940 - 0.694 = 0.246 bits

決策樹概括算法 (ID3)

ID3算法的核心是在決策樹的各個結點上應用 信息增益 準則進行特徵選擇。這個算法也是本章主要介紹的算法。具體作法是:

  • 從根節點開始,對結點計算全部可能特徵的信息增益,選擇信息增益最大的特徵做爲結點的特徵,並由該特徵的不一樣取值構建子節點;
  • 對子節點遞歸地調用以上方法,構建決策樹;
  • 直到全部特徵的信息增益均很小或者沒有特徵可選時爲止。

根據上面的計算信息增量的方法,能夠得出其餘特徵的信息增量:
gain(income) = 0.029, gain(student) = 0.151, gain(credit_rating)=0.048

age 這個特徵的信息增益是最大的(0.246 bits),選擇age做爲第一個根節點進行分類:

Image.png

而後再每一個子樹中,再根據其特徵的信息增益量進行每一個劃分,遞歸地造成每一個劃分上的樣本斷定樹。

遞歸的中止條件

遞歸劃分步驟僅當下列條件之一成立中止:
(a) 給定結點的全部樣本屬於同一類。
(b) 沒有剩餘屬性能夠用來進一步劃分樣本。在此狀況下,使用多數表決。這涉及將給定的結點轉換成樹葉,並用樣本中的多數所在的類標記它。替換地,能夠存放結點樣本的類分佈。
(c) 分枝,當全部特徵的信息增益都很小,也就是沒有再計算的必要了,就建立一個樹葉,也是用多數表決。

其餘決策樹概括算法

C4.5算法

C4.5算法與ID3算法的區別主要在於它在生產決策樹的過程當中,使用信息增益比來進行特徵選擇。

CART算法

分類與迴歸樹(classification and regression tree,CART)與C4.5算法同樣,由ID3算法演化而來。CART假設決策樹是一個二叉樹,它經過遞歸地二分每一個特徵,將特徵空間劃分爲有限個單元,並在這些單元上肯定預測的機率分佈。

CART算法中,對於迴歸樹,採用的是平方偏差最小化準則;對於分類樹,採用基尼指數最小化準則。


這些算法共同點:都是貪心算法,自上而下的建立決策樹。不一樣點是在於對特徵的選擇度量方法不一樣。

決策樹的剪枝

若是樹長到葉子深度太大,就會形成一種狀況,在訓練集上表現很是好,可是由於分的太細了,在新的數據上就表現很差了。就是出現過分擬合的現象。爲了不這個問題,有兩種解決辦法:

  1. 先剪枝:當熵減小的數量小於某一個閾值時,就中止分支的建立。這是一種貪心算法。
  2. 後剪枝:先建立完整的決策樹,而後再嘗試消除多餘的節點,也就是採用減枝的方法。

總結:決策樹的優缺點

優勢:

  • 易於理解和解釋,甚至比線性迴歸更直觀;
  • 與人類作決策思考的思惟習慣契合;
  • 模型能夠經過樹的形式進行可視化展現;
  • 能夠直接處理非數值型數據,不須要進行啞變量的轉化,甚至能夠直接處理含缺失值的數據;

缺點:

  • 處理連續變量很差;
  • 很差處理變量之間存在許多錯綜複雜的關係,如金融數據分析;
  • 決定分類的因素取決於更多變量的複雜組合時;
  • 可規模性通常。
相關文章
相關標籤/搜索