決策樹(decision tree
)是一個樹結構,能夠是二叉樹或非二叉樹,也能夠把他看做是 if-else
規則的集合,也能夠認爲是在特徵空間上的條件機率分佈。算法
以一個簡單的用因而否買電腦預測的決策樹爲例子:spa
樹中的內部節點表明一個屬性,節點引出的分支表示這個屬性的全部可能的值,葉節點表示最終的分類結果。從根節點到葉節點的每一條路徑構建一條規則,而且這些規則具備 互斥且完備
的性質,即每個樣本均被且只有一條路徑所覆蓋。code
決策樹的建立是根據給定的訓練數據來完成的,給出下面的訓練集(本章都是圍着這個例子進行講解):orm
這是一個是否買電腦的一個數據,數據上有4個特徵:年齡( age
),收入( income
),是否學生( student
),信用度( credit_rating
)。blog
案例的決策樹中,爲何是以年齡做爲第一個進行分類的特徵呢?遞歸
若是一個特徵對結果影響比較大,那麼就能夠認爲這個特徵的分類能力比較大。相親時候通常會先問收入,再問長相,而後問其家庭狀況。也就是說在這邊收入狀況影響比較大,因此做爲第一個特徵判斷,若是不合格那可能連後續都不用詢問了。ci
有什麼方法能夠代表特徵的分類能力呢?
這時候,須要引入一個概念,熵
。rem
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)
, 能夠畫出一個二維座標表示他們的關係:
從而可知,當 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) $$
信息增益表示的是:得知 特徵X
的信息而使得 分類Y
的信息的不肯定性減小的程度。若是某個特徵的信息增益比較大,就表示該特徵對結果的影響較大,特徵A對數據集D的信息增益表示爲:
$$ gain(A) = H(D) - H(D|A) $$
以那個買電腦的數據集爲例,咱們來計算下 age
這個特徵的信息增益,將數據再展現一下:
從圖中能夠看出,有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算法的核心是在決策樹的各個結點上應用 信息增益
準則進行特徵選擇。這個算法也是本章主要介紹的算法。具體作法是:
根據上面的計算信息增量的方法,能夠得出其餘特徵的信息增量:gain(income) = 0.029, gain(student) = 0.151, gain(credit_rating)=0.048
。
age
這個特徵的信息增益是最大的(0.246 bits),選擇age做爲第一個根節點進行分類:
而後再每一個子樹中,再根據其特徵的信息增益量進行每一個劃分,遞歸地造成每一個劃分上的樣本斷定樹。
遞歸劃分步驟僅當下列條件之一成立中止:
(a) 給定結點的全部樣本屬於同一類。
(b) 沒有剩餘屬性能夠用來進一步劃分樣本。在此狀況下,使用多數表決。這涉及將給定的結點轉換成樹葉,並用樣本中的多數所在的類標記它。替換地,能夠存放結點樣本的類分佈。
(c) 分枝,當全部特徵的信息增益都很小,也就是沒有再計算的必要了,就建立一個樹葉,也是用多數表決。
C4.5算法與ID3算法的區別主要在於它在生產決策樹的過程當中,使用信息增益比來進行特徵選擇。
分類與迴歸樹(classification and regression tree,CART)與C4.5算法同樣,由ID3算法演化而來。CART假設決策樹是一個二叉樹,它經過遞歸地二分每一個特徵,將特徵空間劃分爲有限個單元,並在這些單元上肯定預測的機率分佈。
CART算法中,對於迴歸樹,採用的是平方偏差最小化準則;對於分類樹,採用基尼指數最小化準則。
這些算法共同點:都是貪心算法,自上而下的建立決策樹。不一樣點是在於對特徵的選擇度量方法不一樣。
若是樹長到葉子深度太大,就會形成一種狀況,在訓練集上表現很是好,可是由於分的太細了,在新的數據上就表現很差了。就是出現過分擬合的現象。爲了不這個問題,有兩種解決辦法:
優勢:
缺點: