決策樹(上)-ID三、C4.五、CART

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

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

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.mddom


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

在進入正題以前,先讓咱們瞭解一些有關信息論的知識!性能

信息論

1.信息熵

在決策樹算法中,熵是一個很是很是重要的概念。一件事發生的機率越小,咱們說它所蘊含的信息量越大。好比:咱們聽女人能懷孕不奇怪,若是某天聽到哪一個男人懷孕了,咱們就會以爲emmm…信息量很大了。學習

因此咱們這樣衡量信息量:測試

 

 其中,P(y)是事件發生的機率。信息熵就是全部可能發生的事件的信息量的指望:優化

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

決策樹屬性劃分算法

衆所周知,決策樹學習的關鍵在於如何選擇最優劃分屬性,通常而言,隨着劃分過程不斷進行,咱們但願決策樹的分支結點所包含的樣本儘量屬於同一類別,即結點的「純度」愈來愈高。

1.ID3

(1)思想

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

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

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

3.png

假定經過屬性劃分樣本集D,產生了V個分支節點,v表示其中第v個分支節點,易知:分支節點包含的樣本數越多,表示該分支節點的影響力越大。故能夠計算出劃分後相比原始數據集D得到的「信息增益」(information gain)。

4.png

信息增益越大,表示使用該屬性劃分樣本集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 劃分標準

利用信息增益率能夠克服信息增益的缺點,其公式爲:

5.png

 

注意:信息增益率對可取值較少的特徵有所偏好(分母越小,總體越大),所以 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)越小越好,這和信息增益(率)正好相反,基尼指數定義以下:

6.png

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

7.png

 

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.總結

最後經過總結的方式對比下 ID三、C4.5 和 CART 三者之間的差別。

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

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