決策樹詳細筆記及python實現

決策樹優點:模型具有可讀性、分類速度快。

決策樹的學習包括3個步驟:特徵選擇、決策樹的生成、決策樹剪枝。

1 決策樹模型與學習

決策樹的學習本質上是從訓練數據集中歸納出一組分類規則。損失函數通常是正則化的極大似然函數。

決策樹學習 的算法通常是一個遞歸地選擇最有特徵,並根據該特徵對訓練數據集進行分割,使得對各個子數據集有一個最好的分類過程。這一過程對應着特徵空間的劃分,也對應着決策樹的構建。開始,構建根節點,將所有的訓練數據都放在根節點。選擇一個最優的特徵,按照這一特徵將訓練數據集分割成子集,使得各個子集有一個在當前條件下最好的分類。如果這些子集已經能夠被基本正確分類,那麼構建葉子節點,並將這些子集分到所對應的葉子節點中去;如果還有子集不能被基本正確分類,那麼就對這些子集選擇新的最優特徵,繼續對其進行分割,構建相應的結點。如此遞歸地進行下去,直到所有訓練數據子集被基本正確分類,或者沒有合適的特徵爲止。最後每個子集都被分到葉子結點上,就生成了一棵決策樹。

 

2 特徵選擇

信息增益

在信息論與概率統計中,熵(entropy)是表示隨機變量不確定性的度量。設X是一個離散隨機變量,其概率分佈爲:

隨機變量X的熵定義爲:

當隨機變量只取兩個值,1和0時,X的分佈爲:

熵H(p)隨着概率p變化的曲線如圖所示:

條件熵

條件熵H(Y|X)表示在已知隨機變量X的條件下隨機變量Y不確定性。

條件熵定義爲X給定條件下Y的條件概率分佈的熵對X的數學期望:

信息增益

信息增益表示得知特徵X的信息而使得類Y的信息的不確定性減少的程度。信息增益越大的特徵具有更強的分類能力。

信息增益比

以信息增益作爲劃分訓練數據集的特徵,存在偏向於選擇取值較多的特徵的問題(某個特徵取值越多,劃分出來的節點越多,多,信息增益往往越大)。使用信息增益比可以對這一問題進行校正。

 

3 決策樹的生成

3.1 ID3算法

從根節點開始,對節點計算所有可能的特徵的信息增益,選擇信息增益最大的特徵作爲節點的特徵,由該特徵的不同取值建立子節點;再對子節點遞歸調用以上方法,構建決策樹;直到所有特徵的信息增益均很小或沒有特徵可以選擇爲止。最後得到一棵決策樹。

 

3.2 C4.5的生成算法

 

4 決策樹的剪枝

在剪枝中主要分爲:前剪枝和後剪枝。

前剪枝是指在生成決策樹的過程中,對樹的深度進行控制,防止生成過多的葉子節點。

後剪枝是指將訓練集分成兩個部分,一部分用來訓練決策樹模型(訓練數據),另一部分對生成的決策樹進行剪枝(驗證數據)。

決策樹的生成只考慮了通過提高信息增益對訓練數據進行更好的擬合,而決策樹剪枝通過優化損失函數還考慮了減小模型的複雜度。

 

5 CART算法

CART分類迴歸樹,既可以用於分類也可以用於迴歸。

CART算法由以下兩步組成:

1)決策樹生成:基於訓練數據集生成決策樹,生成的決策樹要儘量大;

2)決策樹剪枝:用驗證數據集對已生成的樹進行剪枝並選擇最優子樹,這時用損失函數最小作爲剪枝的標準。

5.1 CART生成

決策樹的生成是遞歸構建二叉決策樹的過程。迴歸樹用平方誤差最小化準則,分類樹用基尼指數最小化準則,進行特徵選擇。

1. 迴歸樹的生成

2. 分類樹的生成

5.2 CART剪枝

CART剪枝算法由兩步組成:

a.從生成算法產生的決策樹底端開始不斷剪枝,直到的根節點,形成一個子樹序列

b.通過交叉驗證法在獨立的驗證數據集上對子樹序列進行測試,從中選擇最優子樹。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章