0.前言
在深度神經網絡崛起之前,基於樹類的算法是表現比較優異,非線性性能比較好的一大類算法,深受廣大人民羣衆的喜愛。比如常見的基於樹的算法有隨機森林(Random Forest),GBDT, XGboost, LightGBM等。而所有的這些算法,都是基於決策樹(Decision Tree)進化而來的。因此瞭解熟悉決策樹是我們學習算法過程中一個必不可少的環節。
決策樹可以分爲分類樹與迴歸樹。迴歸樹一般只能處理連續型數據,而分類樹則即可以處理連續型數據又可以處理離散型數據。
1.什麼是CART樹
CART樹的全名叫做Classification and Regression Tree。從名字可以看出來,CART樹即可以用來做分類又可以用來做迴歸。
CART樹構建分類樹與迴歸樹的時候,主要有如下兩點差異(其實也是分類樹與迴歸樹的差異):
1.連續值的處理。
CART分類樹對連續值採取的是計算Gini係數大小來衡量特徵劃分點的好壞。
基尼指數的意義是從數據集D中隨機抽取兩個樣本類別標識不一致的概率。基尼指數越小,數據集的純度越高。分類決策樹遞歸創建過程中就是每次選擇GiniGain最小的節點做分叉點。
迴歸樹的處理方式爲,對於任意的特徵J,選擇任意的劃分點s將數據集分成R1, R2,然後使得R1與R2的均方差和最小。
2.預測方式
分類樹的預測方式爲看葉子節點中概率最大的類作爲當前預測類。
迴歸樹一般是輸出葉子節點的均值作爲預測結果。
2.CART迴歸樹的流程
對於決策樹的生成過程,就是遞歸構建二叉樹的過程。以CART迴歸樹爲例,我們來看看具體怎麼構建。
假設X與Y分別爲輸入輸出,Y是連續變量。
最終我們想生成CART迴歸樹。即在訓練集上,遞歸地將每個區域分爲兩個子區域並決定每個子區域的輸出值,來構建二叉決策樹。
1.選擇最優切分變量j與切分點s,並求解
遍歷變量j,對固定的切分變量j掃描切分點s,選擇最優的(j,s)。
2.用選定的(j,s),劃分區域,並決定相應的輸出
3.對兩個子區域重複1,2步驟,直到滿足終止條件
4.將輸入的空間劃分爲M個區域,,在每個單元上有固定的輸出,最終生成決策樹
3.剪枝
決策樹很容易出現的一種情況是過擬合(overfitting),所以需要進行剪枝。而基本的策略包括兩種:預剪枝(Pre-Pruning)與後剪枝(Post-Pruning)。
預剪枝:其中的核心思想就是,在每一次實際對結點進行進一步劃分之前,先採用驗證集的數據來驗證如果劃分是否能提高劃分的準確性。如果不能,就把結點標記爲葉結點並退出進一步劃分;如果可以就繼續遞歸生成節點。
後剪枝:後剪枝則是先從訓練集生成一顆完整的決策樹,然後自底向上地對非葉結點進行考察,若將該結點對應的子樹替換爲葉結點能帶來泛化性能提升,則將該子樹替換爲葉結點。