1. 程式人生 > >決策樹(上)-ID3、C4.5、CART

決策樹(上)-ID3、C4.5、CART

參考資料(要是對於本文的理解不夠透徹,必須將以下部落格認知閱讀,方可全面瞭解決策樹):

1.https://zhuanlan.zhihu.com/p/85731206

2.https://zhuanlan.zhihu.com/p/29980400

3.https://github.com/Vay-keen/Machine-learning-learning-notes/blob/master/%E5%91%A8%E5%BF%97%E5%8D%8E%E3%80%8AMachine%20Learning%E3%80%8B%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0(5)--%E5%86%B3%E7%AD%96%E6%A0%91.md


決策樹是一個非常常見並且優秀的機器學習演算法,它易於理解、可解釋性強,其可作為分類演算法,也可用於迴歸模型。本文將分三篇介紹決策樹,第一篇介紹基本樹(包括 ID3、C4.5、CART),第二篇介紹 Random Forest、Adaboost、GBDT,第三篇介紹 Xgboost 和 LightGBM。

在進入正題之前,先讓我們瞭解一些有關資訊理論的知識!

資訊理論

1.資訊熵

在決策樹演算法中,熵是一個非常非常重要的概念。一件事發生的概率越小,我們說它所蘊含的資訊量越大。比如:我們聽女人能懷孕不奇怪,如果某天聽到哪個男人懷孕了,我們就會覺得emmm…資訊量很大了。

所以我們這樣衡量資訊量:

 

 其中,P(y)是事件發生的概率。資訊熵就是所有可能發生的事件的資訊量的期望:

表達了Y事件發生的不確定度。

決策樹屬性劃分演算法

眾所周知,決策樹學習的關鍵在於如何選擇最優劃分屬性,一般而言,隨著劃分過程不斷進行,我們希望決策樹的分支結點所包含的樣本儘可能屬於同一類別,即結點的“純度”越來越高。

1.ID3

(1)思想

從資訊理論的知識中我們知道:資訊熵越大,從而樣本純度越低,。ID3 演算法的核心思想就是以資訊增益來度量特徵選擇,選擇資訊增益最大的特徵進行分裂。演算法採用自頂向下的貪婪搜尋遍歷可能的決策樹空間(C4.5 也是貪婪搜尋)。

(2)劃分標準(詳細過程以及公式推導見西瓜書即可)

ID3演算法使用資訊增益為準則來選擇劃分屬性,“資訊熵”(information entropy)是度量樣本結合純度的常用指標,假定當前樣本集合D中第k類樣本所佔比例為pk,則樣本集合D的資訊熵定義為:

假定通過屬性劃分樣本集D,產生了V個分支節點,v表示其中第v個分支節點,易知:分支節點包含的樣本數越多,表示該分支節點的影響力越大。故可以計算出劃分後相比原始資料集D獲得的“資訊增益”(information gain)。

資訊增益越大,表示使用該屬性劃分樣本集D的效果越好,因此ID3演算法在遞迴過程中,每次選擇最大資訊增益的屬性作為當前的劃分屬性。

(3)缺點

  • ID3 沒有剪枝策略,容易過擬合;
  • 資訊增益準則對可取值數目較多的特徵有所偏好,類似“編號”的特徵其資訊增益接近於 1;
  • 只能用於處理離散分佈的特徵;
  • 沒有考慮缺失值。

 

2. C4.5

2.1 思想

C4.5 演算法最大的特點是克服了 ID3 對特徵數目的偏重這一缺點,引入資訊增益率來作為分類標準。

C4.5 相對於 ID3 的缺點對應有以下改進方式:

  • 引入悲觀剪枝策略進行後剪枝;
  • 引入資訊增益率作為劃分標準;
  • 可以處理連續值:將連續特徵離散化,假設 n 個樣本的連續特徵 A 有 m 個取值,C4.5 將其排序並取相鄰兩樣本值的平均數共 m-1 個劃分點,分別計算以該劃分點作為二元分類點時的資訊增益,並選擇資訊增益最大的點作為該連續特徵的二元離散分類點;
  • 可以處理缺失值:對於缺失值的處理可以分為兩個子問題:
  • 問題一:在特徵值缺失的情況下進行劃分特徵的選擇?(即如何計算特徵的資訊增益率)
  • 問題二:選定該劃分特徵,對於缺失該特徵值的樣本如何處理?(即到底把這個樣本劃分到哪個結點裡)
  • 針對問題一,C4.5 的做法是:對於具有缺失值特徵,用沒有缺失的樣本子集所佔比重來折算;
  • 針對問題二,C4.5 的做法是:將樣本同時劃分到所有子節點,不過要調整樣本的權重值,其實也就是以不同概率劃分到不同節點中。

2.2 劃分標準

利用資訊增益率可以克服資訊增益的缺點,其公式為:

 

注意:資訊增益率對可取值較少的特徵有所偏好(分母越小,整體越大),因此 C4.5 並不是直接用增益率最大的特徵進行劃分,而是使用一個啟發式方法:先從候選劃分特徵中找到資訊增益高於平均值的特徵,再從中選擇增益率最高的。

2.3 剪枝策略(預剪枝+後剪枝)

決策樹解決過擬合的主要方法:剪枝、隨機森林

2.3.1 預剪枝

(1) 在決策樹生成過程中,對每個結點在劃分前先進行估計,若當前結點的劃分不能帶來決策樹泛化效能提升,則停止劃分並將當前結點標記為葉結點。在構造的過程中先評估,再考慮是否分支。衡量決策樹泛化效能提升的方法:

  • 節點內資料樣本低於某一閾值;
  • 所有節點特徵都已分裂;
  • 節點劃分前準確率比劃分後準確率高。

(2)優缺點

  • 降低過擬合風險、顯著減少決策樹的訓練時間開銷和測試時間開銷。
  • 預剪枝基於“貪心”策略,有可能會帶來欠擬合風險。
2.3.2 後剪枝(C4.5採用的是基於後剪枝的悲觀剪枝方法)

(1) 後剪枝是先從訓練集生成一棵完整的決策樹,然後自底向上地對非葉子結點進行考察,若將該結點對應的子樹替換為葉結點能帶來決策樹泛化效能提升,則將該子樹替換為葉結點。

(2) 後剪枝決策樹的欠擬合風險很小,泛化效能往往優於預剪枝決策樹。但同時其訓練時間會大的多。

2.4 缺點

  • 剪枝策略可以再優化;
  • C4.5 用的是多叉樹,用二叉樹效率更高;
  • C4.5 只能用於分類;
  • C4.5 使用的熵模型擁有大量耗時的對數運算,連續值還有排序運算;
  • C4.5 在構造樹的過程中,對數值屬性值需要按照其大小進行排序,從中選擇一個分割點,所以只適合於能夠駐留於記憶體的資料集,當訓練集大得無法在記憶體容納時,程式無法執行。

 

3. CRAT

ID3 和 C4.5 雖然在對訓練樣本集的學習中可以儘可能多地挖掘資訊,但是其生成的決策樹分支、規模都比較大,CART 演算法的二分法可以簡化決策樹的規模,提高生成決策樹的效率。

3.1 思想

CART 在 C4.5 的基礎上進行了很多提升。

  • C4.5 為多叉樹,運算速度慢,CART 為二叉樹,運算速度快;
  • C4.5 只能分類,CART 既可以分類也可以迴歸;
  • CART 使用 Gini 係數作為變數的不純度量,減少了大量的對數運算;
  • CART 採用代理測試來估計缺失值,而 C4.5 以不同概率劃分到不同節點中;
  • CART 採用“基於代價複雜度剪枝”方法進行剪枝,而 C4.5 採用悲觀剪枝方法。

3.2 劃分標準

CART決策樹(分類樹)使用“基尼指數”(Gini index)來選擇劃分屬性,基尼指數反映的是從樣本集D中隨機抽取兩個樣本,其類別標記不一致的概率,因此Gini(D)越小越好,這和資訊增益(率)正好相反,基尼指數定義如下:

進而,使用屬性α劃分後的基尼指數為:

 

3.3 剪枝策略

採用一種“基於代價複雜度的剪枝”方法進行後剪枝,這種方法會生成一系列樹,每個樹都是通過將前面的樹的某個或某些子樹替換成一個葉節點而得到的,這一系列樹中的最後一棵樹僅含一個用來預測類別的葉節點。然後用一種成本複雜度的度量準則來判斷哪棵子樹應該被一個預測類別值的葉節點所代替。這種方法需要使用一個單獨的測試資料集來評估所有的樹,根據它們在測試資料集熵的分類效能選出最佳的樹。

3.4類別不平衡

CART 的一大優勢在於:無論訓練資料集有多失衡,它都可以將其消除不需要建模人員採取其他操作。

CART 使用了一種先驗機制,其作用相當於對類別進行加權。這種先驗機制嵌入於 CART 演算法判斷分裂優劣的運算裡,在 CART 預設的分類模式中,總是要計算每個節點關於根節點的類別頻率的比值,這就相當於對資料自動重加權,對類別進行均衡。

3.5 迴歸樹

CART(Classification and Regression Tree,分類迴歸樹),從名字就可以看出其不僅可以用於分類,也可以應用於迴歸。其迴歸樹的建立演算法上與分類樹部分相似,這裡簡單介紹下不同之處。

3.6.1 連續值處理

對於連續值的處理,CART 分類樹採用基尼係數的大小來度量特徵的各個劃分點。在迴歸模型中,我們使用常見的和方差度量方式,對於任意劃分特徵 A,對應的任意劃分點 s 兩邊劃分成的資料集   和   ,求出使   和   各自集合的均方差最小,同時   和   的均方差之和最小所對應的特徵和特徵值劃分點。表示式為:

其中,   為   資料集的樣本輸出均值,   為   資料集的樣本輸出均值。

3.6.2 預測方式

對於決策樹建立後做預測的方式,上面講到了 CART 分類樹採用葉子節點裡概率最大的類別作為當前節點的預測類別。而回歸樹輸出不是類別,它採用的是用最終葉子的均值或者中位數來預測輸出結果。

 

4.總結

最後通過總結的方式對比下 ID3、C4.5 和 CART 三者之間的差異。

除了之前列出來的劃分標準、剪枝策略、連續值確實值處理方式等之外,我再介紹一些其他差異:

  • 劃分標準的差異:ID3 使用資訊增益偏向特徵值多的特徵,C4.5 使用資訊增益率克服資訊增益的缺點,偏向於特徵值小的特徵,CART 使用基尼指數克服 C4.5 需要求 log 的巨大計算量,偏向於特徵值較多的特徵。
  • 使用場景的差異:ID3 和 C4.5 都只能用於分類問題,CART 可以用於分類和迴歸問題;ID3 和 C4.5 是多叉樹,速度較慢,CART 是二叉樹,計算速度很快;
  • 樣本資料的差異:ID3 只能處理離散資料且缺失值敏感,C4.5 和 CART 可以處理連續性資料且有多種方式處理缺失值;從樣本量考慮的話,小樣本建議 C4.5、大樣本建議 CART。C4.5 處理過程中需對資料集進行多次掃描排序,處理成本耗時較高,而 CART 本身是一種大樣本的統計方法,小樣本處理下泛化誤差較大 ;
  • 樣本特徵的差異:ID3 和 C4.5 層級之間只使用一次特徵,CART 可多次重複使用特徵;
  • 剪枝策略的差異:ID3 沒有剪枝策略,C4.5 是通過悲觀剪枝策略來修正樹的準確性,而 CART 是通過代價複雜度剪枝