如同上幾篇我們探討的SVM一樣,決策樹算法既可以處理分類問題(二分類和多分類),又可以處理迴歸問題。同時,決策樹也廣泛的運用在集成算法中,比如隨機森林算法。本篇我們沿着決策樹算法的發展,來探討下決策樹ID3算法和C4.5算法。CART算法決策樹我們下篇單獨再探討。
1)來自借錢的思考
決策樹的原理其實很簡單,我們生活中已經在運用這些原理。比如,某一個朋友向你借錢,在你心裏一定會有一系列的決策,最後決定是否借錢給他,把你的決策畫成一顆樹狀結構就是決策樹了。比如我的借錢決策:
從上圖我們先來認識下決策樹的基本結構,決策樹由節點(矩形和橢圓)和有向的邊(箭頭)組成,節點按所處在決策樹的位置可以分爲根節點,中間節點和葉子節點。其中每個節點代表一個屬性,每個分支代表一個決策(規則),每個葉子代表一個結果(分類值或連續值)。
再回到借錢的栗子上來。假如按照上面的決策樹進行借錢決策,一共外借了4次錢,結果有2次按時還了錢,另外2次借的錢打水漂了,損失有點大。於是我調整了下策略,把是否有工作放在首要位置(跟節點)。決策樹的結構如下:
於是我又外借了4次錢,結果有3次按時還了錢,只有1次外借的錢打了水漂。對比第一種策略,不還錢的次數減少了,也可以說打水漂的不確定性減少了。所以,只要不確定性有所降低,我們的決策樹就有所優化。那麼,不確定性又該怎麼去度量呢?幸運的是,早在1948年克勞德·愛爾伍德·香農提出了信息熵的概念,專門用來描述事物的不確定性。
2)信息熵(Information Entropy)
信息熵,它是表示對隨機變量不確定的度量,不確定性越大,信息熵越大。隨機變量的信息熵的表達式如下(信息熵表達式的由來可參考本篇博客信息熵部分):
從表達式中可以看出,隨機變量的取值個數越多,狀態數也就越多,信息熵就越大,混亂程度就越大。當隨機分佈爲均勻分佈時,信息熵最大。
再讓我們回到栗子中來。只要不確定性減少,決策策略就得到了優化。因此我們在進行特徵選擇時,可以選擇當前不確定性減少最多的特徵(貪心法)。那麼該怎麼去定義不確定性的減少呢?ID3算法使用信息增益,C4.5使用信息增益率,CART樹使用Gini係數。
3)ID3算法
ID3算法是用信息增益來定義不確定性的減少程度,選擇信息增益最大的特徵來建立決策樹的當前節點。特徵A對訓練集D的信息增益表達式如下:
信息增益具體的算法過程:
輸入:訓練數據集D合特徵A;
輸出:特徵A對訓練數據集D的信息增益
a)計算數據D的信息熵
b)計算特徵A對數據集D的條件熵(條件熵概念可以參考本篇博客)
c)計算信息增益
下面我們來看看ID3的生成算法:
輸入:訓練數據集D,特徵集A,閾值;
輸出:決策樹T
a)初始化信息增益的閾值;
b)若D中所有實例屬於同一類,則T爲單節點樹。標記類別爲,返回T;
c)若爲空,則T爲單節點樹,將D中實例數最大的類作爲該節點的 類標記,返回T;
d)否則,計算A中各特徵對D的信息增益,選擇信息增益最大的特徵;
e)如果的信息增益小於閾值,則返回單節點樹T,將D中實例數最大的類作爲該節點的 類標記,返回T;
f)否則,按特徵的不同取值,依將D分割爲若干個非空子集,將中實例數最大的類作爲標記,構建子節點,由節點和子節點構成樹T,返回T。
g)對第個子節點,以爲數據集,以爲特徵集,遞歸的調用,得到子樹,返回。
3)ID3的侷限性
ID3由 Ross Quinlan 在1986年提出,算法本身還存在很大的侷限性:
- 採用信息增益做特徵選擇,會存在偏向於選擇特徵取值較多的特徵;
- 無法處理處理連續變量;
- 無法對缺失值進行處理;
- 沒有剪枝策略,容易過擬合;
爲了克服上述不足,Ross Quinlan 對ID3算法進行了改進,這就是下面將要探討的C4.5算法。
4)C4.5算法
C4.5重大的改進是,提出利用信息增益比(Information Gain Ratio)來做特徵選擇,解決ID3算法存在的特徵偏向問題。
特徵A對訓練集D的信息增益比,爲信息增益與訓練集D關於特徵A的值的熵之比,表達式爲:
其中,是特徵A取值的個數。對於類別多的特徵,的取值會偏大,用來平衡信息增益帶來的偏倚。
C4.5對於連續性值的處理方式爲我們熟知的特徵離散化。假如n個樣本的連續性特徵A有m個取值。C4.5算法首先將m個取值從小到大排序爲,分別對相鄰的兩個樣本取平均數,一共得到個劃分點,其中第個劃分點爲;然後對於m-1個劃分點,分別計算以該劃分點作爲二元分類點時的信息增益,並選擇信息增益最大的點作爲該連續特徵的二元離散分類點
對缺失值的處理,本質就是算法怎麼填補缺失值,C4.5在缺失值處理也做了優化。樣本中存在缺失值,會引起兩個問題:第一,如何在特徵值缺失的情況下進行特徵選擇,即存在缺失值特徵的信息增益比該怎麼計算?第二,特徵選定之後,缺失樣本該分到那個子節點中去?
對於第一個問題,C4.5的做法是,計算不含缺失值樣本的特徵A的信息增益比,乘上一個權重,權重爲不含缺失樣本佔總樣本的比例;對於第二個問題,C4.5的做法是,將缺失特徵的樣本同時劃分入所有的子節點中,每個子節點所佔的權重爲每個該子節點樣本佔總樣本的比例。
對於過擬合問題,C4.5採用後剪枝的方式來簡化決策樹。我們在CART樹再一起討論。
5)C4.5的侷限性
雖然C4.5在ID3算法上進行了很大的改進,但是還是存在一些明顯的侷限性:
- 當特徵的類別特別多時,生成決策樹(多叉樹)時,運行效率會變得非常低;
- 只能處理分類問題;
- 不管信息增益還是信息增益比,都擁有大量耗時的對數運算,甚至連續值還有排序運算,比較消耗算力;
下篇我們重點討論CART算法如何優化C4.5所存在的這些侷限性。
(歡迎大家在評論區探討交流,也歡迎大家轉載,轉載請註明出處。)
上一篇:Scikit-learn 支持向量機庫總結與簡單實踐
下一篇:決策樹(Decision Tree)算法原理總結(二)