ML《決策樹(三)CART》
上一篇我們學習的ID3和C4.5演算法,今天我們來看看CART(classification and regression tree)演算法。
從名字上也能看出來,它是分類和迴歸樹。
本文參考以及採用了很多其他博主的文字,因為自己覺得他們寫的很好,自己做了歸納和整理,汲取百家之長。
其實這會兒是有點困了,因為自己也在忙完工作後有點累,也是不停地站東腦子去學習演算法,也在思考這三種決策樹演算法的區別和相似處,經過百度呢,也是大同小異,所以今天偷個懶,哈哈,就當是自己按照自己的理解思路整理整理,免得後面忘記了。當然了,我也會新增一些自己的思考和理解咯。
華麗分割線
一:概述
1:CART樹是二叉樹
2:CART既可以作為分類樹,也可以作為迴歸樹。
3:當預測離散值的時候,就是分類問題,這時候建立的樹就是分類樹,屬性分裂的依據是GINI係數;當預測連續值的時候,就是迴歸問題,這時候建立的樹就是迴歸樹,屬性分裂的依據是樣本的最小方差。
華麗分割線
二:對某個屬性A進行切分
這裡分兩種情況
1:該屬性值是離散值
思路是不停二分屬性,且是天然的類別劃分。
在ID3、C4.5,特徵A被選取建立決策樹節點,如果它有3個類別A1,A2,A3,我們會在決策樹上建立一個三叉點,這樣決策樹是多叉樹。
CART採用的是不停的二分。會考慮把特徵A分成{A1}和{A2,A3}、{A2}和{A1,A3}、{A3}和{A1,A2}三種情況,找到基尼係數最小的組合,比如{A2}和{A1,A3},然後建立二叉樹節點,一個節點是A2對應的樣本,另一個節點是{A1,A3}對應的樣本。由於{A1,A3}這次沒有把特徵A的取值完全分開,後面還有機會對子節點繼續選擇特徵A劃分A1和A3。這和ID3、C4.5不同,在ID3或C4.5的一顆子樹中,離散特徵只會參與一次節點的建立。
2:該屬性值是連續值
將連續值離散化的思想和C4.5相同。唯一區別在選擇劃分點時,C4.5是資訊增益比,CART是基尼係數。
具體思路:m個樣本的連續特徵A有m個,從小到大排列a1,a2,…,am,則CART取相鄰兩樣本值的平均數做劃分點,一共取m-1個,其中第i個劃分點Ti表示為:Ti = (ai + ai+1)/2。分別計算以這m-1個點作為二元分類點時的基尼係數。選擇基尼係數最小的點為該連續特徵的二元離散分類點。比如取到的基尼係數最小的點為at,則小於at的值為類別1,大於at的值為類別2,這樣就做到了連續特徵的離散化。
以上就實現了將連續特徵值離散化,但是CART與ID3,C4.5處理離散屬性不同的是:如果當前節點為連續屬性,則該屬性(剩餘的屬性值)後面還可以參與子節點的產生選擇過程。
華麗分割線
三:CART分類樹
ID3中使用了資訊增益選擇特徵,增益大優先選擇。
C4.5中,採用資訊增益比選擇特徵,減少因特徵值多導致資訊增益大的問題。
CART分類樹演算法使用基尼係數來代替資訊增益比,基尼係數代表了模型的不純度,基尼係數越小,不純度越低,特徵越好。這和資訊增益(比)相反。
下面的式子就是展示了,如果計算一個樣本集合D的Gini係數,以及在給定某個屬性A的情況下計算經過屬性二元分裂後,所得到的新的Gini係數。
當屬性A是離散數值的時候:
假設屬性A有V個取值,那麼就會分成V個不同的二元分類,分別計算其Gini(D , A_v),取數值最小的所對應的二元分類,作為該屬性A的切分點。
當屬性A是連續數值的時候:
先將屬性A進行離散化,分別求二元分類後的Gini係數,找到數值最小的切分點作為該屬性A的切分點。按照這樣的方式,對所有的屬性都這樣計算,取最小的屬性以及其切分點進行切分,這樣就選擇了一層。
由於CART對待每個屬性理論上都是可以被多次切分選擇,因此每一個子樣本集合的處理方式都是跟原始樣本的處理方式一樣,隱含的遞迴迴圈處理。
ID3和C4.5對屬性只能切分和選擇一次,因此一次用完了後,子樣本集合的屬性種類選擇就少了,這一點是需要注意。
CART分類樹的預測方式是:當建立完成後,葉子節點的出現概率最大的類別作為輸出分類。
華麗分割線
四:CART迴歸樹
下面是其求方差的公式。
CART 分類樹採用基尼係數的大小來度量特徵的各個劃分點。在CART迴歸樹模型中,我們使用常見的和方差度量方式,對於任意劃分屬性 A,對應的任意劃分點 s 兩邊劃分成的資料集D1和 D2,求出使D1和 D2各自集合的均方差最小,同時 D1和 D2的均方差之和最小所對應的特徵和特徵值劃分點。表示式為:
其中,c1為D1資料集的樣本輸出均值,c2為D2資料集的樣本輸出均值。
當屬性A是離散數值的時候:
假設屬性A有V個取值,那麼就會分成V個不同的二元分類,分別計算其方差,取數值最小的所對應的二元分類,作為該屬性A的切分點。
當屬性A是連續數值的時候:
先將屬性A進行離散化,分別求二元分類後的方差,找到數值最小的切分點作為該屬性A的切分點。
CART分迴歸樹的預測方式是:當建立完成後,葉子節點的中值/平均值/眾數可以作為預測值。
華麗分割線
五:和ID3、C4.5的對比
1)劃分標準的差異:ID3 使用資訊增益偏向特徵值多的特徵,C4.5 使用資訊增益率克服資訊增益的缺點,偏向於特徵值小的特徵,CART 使用基尼指數克服 C4.5 需要求 log 的巨大計算量,偏向於特徵值較多的特徵。
2)使用場景的差異:ID3 和 C4.5 都只能用於分類問題,CART 可以用於分類和迴歸問題;ID3 和 C4.5 是多叉樹,速度較慢,CART 是二叉樹,計算速度很快;
3)樣本資料的差異:ID3 只能處理離散資料且缺失值敏感,C4.5 和 CART 可以處理連續性資料且有多種方式處理缺失值;從樣本量考慮的話,小樣本建議 C4.5、大樣本建議 CART。C4.5 處理過程中需對資料集進行多次掃描排序,處理成本耗時較高,而 CART 本身是一種大樣本的統計方法,小樣本處理下泛化誤差較大;
4)樣本特徵的差異:ID3 和 C4.5 層級之間只使用一次特徵,CART 可多次重複使用特徵;
5)剪枝策略的差異:ID3 沒有剪枝策略,C4.5 是通過悲觀剪枝策略來修正樹的準確性,而 CART 是通過代價複雜度剪枝。
6)對缺失值的差異:ID3 沒有缺失值策略策略,C4.5 和CART有處理缺失值策略。
7)對連續值處理的差異:ID3 沒有處理連續值,C4.5 和CART有處理連續值離散化。
華麗分割線
六:決策樹演算法總結
這裡是對ID3、C4.5、CART演算法進行總結,這部分內容直接抄錄自scikit-learn英文文件。
優點:
- 簡單直觀,生成的決策樹很直觀。
- 基本不需要預處理,不需要提前歸一化和處理缺失值。
- 使用決策樹預測的代價是O(log2m)。m為樣本數。
- 既可以處理離散值也可以處理連續值。很多演算法只是專注於離散值或者連續值。
- 可以處理多維度輸出的分類問題。
- 相比於神經網路之類的黑盒分類模型,決策樹在邏輯上可以很好解釋。
- 可以交叉驗證的剪枝來選擇模型,從而提高泛化能力。
- 對於異常點的容錯能力好,健壯性高。
缺點:
- 決策樹演算法非常容易過擬合,導致泛化能力不強。可以通過設定節點最少樣本數量和限制決策樹深度來改進。
- 決策樹會因為樣本發生一點的改動,導致樹結構的劇烈改變。這個可以通過整合學習之類的方法解決。
- 尋找最優的決策樹是一個NP難題,我們一般是通過啟發式方法,容易陷入區域性最優。可以通過整合學習的方法來改善。
- 有些比較複雜的關係,決策樹很難學習,比如異或。這個就沒有辦法了,一般這種關係可以換神經網路分類方法來解決。
- 如果某些特徵的樣本比例過大,生成決策樹容易偏向於這些特徵。這個可以通過調節樣本權重來改善。
華麗分割線
七:後面的學習路線
後面還要學習“整合學習”:
Bagging -> RandomForst
Boosting -> Adaboost -> GBDT -> Xgboost
相關文章
- 決策樹模型(4)Cart演算法模型演算法
- ML《決策樹(一)ID3》
- ML《決策樹(二)C4.5》
- ML《決策樹(四)Bagging 和 Random Forest》randomREST
- 《機器學習Python實現_09_02_決策樹_CART》機器學習Python
- 決策樹
- 【面試考】【入門】決策樹演算法ID3,C4.5和CART面試演算法
- 決策樹模型(3)決策樹的生成與剪枝模型
- 決策樹示例
- 機器學習Sklearn系列:(三)決策樹機器學習
- 4. 決策樹
- Decision tree——決策樹
- 決策樹(Decision Tree)
- Python機器學習:決策樹001什麼是決策樹Python機器學習
- Cart迴歸樹、GBDT、XGBoost
- 分類——決策樹模型模型
- 決策樹演算法演算法
- 關於決策樹的理解
- 機器學習:決策樹機器學習
- 決策樹和隨機森林隨機森林
- 決策樹學習總結
- 機器學習——決策樹模型機器學習模型
- 大資料————決策樹(decision tree)大資料
- 機器學習之決策樹機器學習
- 決策樹模型(2)特徵選擇模型特徵
- 【Python機器學習實戰】決策樹和整合學習(二)——決策樹的實現Python機器學習
- 決策樹模型(1)總體介紹模型
- 決策樹演算法-實戰篇演算法
- 決策樹詳解,從熵說起熵
- 決策樹演算法-理論篇演算法
- 【西瓜書筆記】3. 決策樹筆記
- 02決策樹-初識與構建
- 深入淺出學習決策樹(二)
- 決策樹在sklearn中的實現
- 深入淺出學習決策樹(一)
- 機器學習實戰(三)決策樹ID3:樹的構建和簡單分類機器學習
- 分類演算法-決策樹 Decision Tree演算法
- 機器學習筆記(四)決策樹機器學習筆記