參考資料(要是對於本文的理解不夠透徹,必須將如下博客認知閱讀,方可全面瞭解決策樹):git
1.https://zhuanlan.zhihu.com/p/85731206github
2.https://zhuanlan.zhihu.com/p/29980400算法
決策樹是一個很是常見而且優秀的機器學習算法,它易於理解、可解釋性強,其可做爲分類算法,也可用於迴歸模型。本文將分三篇介紹決策樹,第一篇介紹基本樹(包括 ID三、C4.五、CART),第二篇介紹 Random Forest、Adaboost、GBDT,第三篇介紹 Xgboost 和 LightGBM。機器學習
在進入正題以前,先讓咱們瞭解一些有關信息論的知識!性能
在決策樹算法中,熵是一個很是很是重要的概念。一件事發生的機率越小,咱們說它所蘊含的信息量越大。好比:咱們聽女人能懷孕不奇怪,若是某天聽到哪一個男人懷孕了,咱們就會以爲emmm…信息量很大了。學習
因此咱們這樣衡量信息量:測試
其中,P(y)是事件發生的機率。信息熵就是全部可能發生的事件的信息量的指望:優化
表達了Y事件發生的不肯定度。spa
衆所周知,決策樹學習的關鍵在於如何選擇最優劃分屬性,通常而言,隨着劃分過程不斷進行,咱們但願決策樹的分支結點所包含的樣本儘量屬於同一類別,即結點的「純度」愈來愈高。
從信息論的知識中咱們知道:信息熵越大,從而樣本純度越低,。ID3 算法的核心思想就是以信息增益來度量特徵選擇,選擇信息增益最大的特徵進行分裂。算法採用自頂向下的貪婪搜索遍歷可能的決策樹空間(C4.5 也是貪婪搜索)。
ID3算法使用信息增益爲準則來選擇劃分屬性,「信息熵」(information entropy)是度量樣本結合純度的經常使用指標,假定當前樣本集合D中第k類樣本所佔比例爲pk,則樣本集合D的信息熵定義爲:
假定經過屬性劃分樣本集D,產生了V個分支節點,v表示其中第v個分支節點,易知:分支節點包含的樣本數越多,表示該分支節點的影響力越大。故能夠計算出劃分後相比原始數據集D得到的「信息增益」(information gain)。
信息增益越大,表示使用該屬性劃分樣本集D的效果越好,所以ID3算法在遞歸過程當中,每次選擇最大信息增益的屬性做爲當前的劃分屬性。
C4.5 算法最大的特色是克服了 ID3 對特徵數目的偏重這一缺點,引入信息增益率來做爲分類標準。
C4.5 相對於 ID3 的缺點對應有如下改進方式:
利用信息增益率能夠克服信息增益的缺點,其公式爲:
注意:信息增益率對可取值較少的特徵有所偏好(分母越小,總體越大),所以 C4.5 並非直接用增益率最大的特徵進行劃分,而是使用一個啓發式方法:先從候選劃分特徵中找到信息增益高於平均值的特徵,再從中選擇增益率最高的。
決策樹解決過擬合的主要方法:剪枝、隨機森林
(1) 在決策樹生成過程當中,對每一個結點在劃分前先進行估計,若當前結點的劃分不能帶來決策樹泛化性能提高,則中止劃分並將當前結點標記爲葉結點。在構造的過程當中先評估,再考慮是否分支。衡量決策樹泛化性能提高的方法:
(2)優缺點
(1) 後剪枝是先從訓練集生成一棵完整的決策樹,而後自底向上地對非葉子結點進行考察,若將該結點對應的子樹替換爲葉結點能帶來決策樹泛化性能提高,則將該子樹替換爲葉結點。
(2) 後剪枝決策樹的欠擬合風險很小,泛化性能每每優於預剪枝決策樹。但同時其訓練時間會大的多。
ID3 和 C4.5 雖然在對訓練樣本集的學習中能夠儘量多地挖掘信息,可是其生成的決策樹分支、規模都比較大,CART 算法的二分法能夠簡化決策樹的規模,提升生成決策樹的效率。
CART 在 C4.5 的基礎上進行了不少提高。
CART決策樹(分類樹)使用「基尼指數」(Gini index)來選擇劃分屬性,基尼指數反映的是從樣本集D中隨機抽取兩個樣本,其類別標記不一致的機率,所以Gini(D)越小越好,這和信息增益(率)正好相反,基尼指數定義以下:
進而,使用屬性α劃分後的基尼指數爲:
採用一種「基於代價複雜度的剪枝」方法進行後剪枝,這種方法會生成一系列樹,每一個樹都是經過將前面的樹的某個或某些子樹替換成一個葉節點而獲得的,這一系列樹中的最後一棵樹僅含一個用來預測類別的葉節點。而後用一種成本複雜度的度量準則來判斷哪棵子樹應該被一個預測類別值的葉節點所代替。這種方法須要使用一個單獨的測試數據集來評估全部的樹,根據它們在測試數據集熵的分類性能選出最佳的樹。
CART 的一大優點在於:不管訓練數據集有多失衡,它均可以將其消除不須要建模人員採起其餘操做。
CART 使用了一種先驗機制,其做用至關於對類別進行加權。這種先驗機制嵌入於 CART 算法判斷分裂優劣的運算裏,在 CART 默認的分類模式中,老是要計算每一個節點關於根節點的類別頻率的比值,這就至關於對數據自動重加權,對類別進行均衡。
CART(Classification and Regression Tree,分類迴歸樹),從名字就能夠看出其不只能夠用於分類,也能夠應用於迴歸。其迴歸樹的創建算法上與分類樹部分類似,這裏簡單介紹下不一樣之處。
對於連續值的處理,CART 分類樹採用基尼係數的大小來度量特徵的各個劃分點。在迴歸模型中,咱們使用常見的和方差度量方式,對於任意劃分特徵 A,對應的任意劃分點 s 兩邊劃分紅的數據集 和
,求出使
和
各自集合的均方差最小,同時
和
的均方差之和最小所對應的特徵和特徵值劃分點。表達式爲:
其中, 爲
數據集的樣本輸出均值,
爲
數據集的樣本輸出均值。
對於決策樹創建後作預測的方式,上面講到了 CART 分類樹採用葉子節點裏機率最大的類別做爲當前節點的預測類別。而回歸樹輸出不是類別,它採用的是用最終葉子的均值或者中位數來預測輸出結果。
最後經過總結的方式對比下 ID三、C4.5 和 CART 三者之間的差別。
除了以前列出來的劃分標準、剪枝策略、連續值確實值處理方式等以外,我再介紹一些其餘差別: