2. 决策树(Decision Tree)-ID3、C4.5、CART比较
1. 決策樹(Decision Tree)-決策樹原理
2. 決策樹(Decision Tree)-ID3、C4.5、CART比較
1. 前言
上文決策樹(Decision Tree)1-決策樹原理介紹了決策樹原理和算法,并且涉及了ID3,C4.5,CART3個決策樹算法。現在大部分都是用CART的分類樹和回歸樹,這三個決策樹算法是一個改進和補充的過程,比較它們之間的關系與區別,能夠更好的理解決策時算法。
2. ID3算法
2.1 ID3原理
ID3算法就是用信息增益大小來判斷當前節點應該用什么特征來構建決策樹,用計算出的信息增益最大的特征來建立決策樹的當前節點。算法具體過程看決策樹(Decision Tree)1-決策樹原理
2.2 ID3的不足
ID3算法雖然提出了新思路,但是還是有很多值得改進的地方。
ID3沒有考慮連續特征,比如長度,密度都是連續值,無法在ID3運用。這大大限制了ID3的用途。
ID3采用信息增益大的特征優先建立決策樹的節點。很快就被人發現,在相同條件下,取值比較多的特征比取值少的特征信息增益大。比如一個變量有2個值,各為1/2,另一個變量為3個值,各為1/3,其實他們都是完全不確定的變量,但是取3個值的比取2個值的信息增益大。如果校正這個問題呢?
ID3算法對于缺失值的情況沒有做考慮
沒有考慮過擬合的問題
ID3 算法的作者昆蘭基于上述不足,對ID3算法做了改進,這就是C4.5算法,也許你會問,為什么不叫ID4,ID5之類的名字呢?那是因為決策樹太火爆,他的ID3一出來,別人二次創新,很快就占了ID4,ID5,所以他另辟蹊徑,取名C4.0算法,后來的進化版為C4.5算法。下面我們就來聊下C4.5算法
3. C4.5算法
3.1 C4.5對ID3的改進
C4.5改進了上面ID3的4個問題,C4.5算法流程具體過程看決策樹(Decision Tree)1-決策樹原理
對于ID3不能處理連續特征,C4.5的思路是將連續的特征離散化。比如(m)個樣本的連續特征(A)有(m)個,從小到大排列為(a_1,a_2,...,a_m),則C4.5取相鄰兩樣本值的平均數,一共取得(m-1)個劃分點,其中第i個劃分點Ti表示為:(T_i=frac{a_i+a_{i+1}}{2})。對于這(m-1)個點,分別計算以該點作為二元分類點時的信息增益。選擇信息增益最大的點作為該連續特征的二元離散分類點。比如取到的增益最大的點為(a_t),則小于(a_t)的值為類別1,大于(a_t)的值為類別2,這樣我們就做到了連續特征的離散化。要注意的是,與離散屬性不同的是,如果當前節點為連續屬性,則該屬性后面還可以參與子節點的產生選擇過程。
對于ID3的第2個問題,信息增益作為標準容易偏向于取值較多的特征的問題。我們引入一個信息增益比的變量(I_R(X,Y)),它是信息增益和特征熵的比值。
[I_R(D,A)=frac{I(A,D)}{H_A(D)}
]
對于ID3的第3個缺失值處理的問題,主要需要解決的是兩個問題,一是在樣本某些特征缺失的情況下選擇劃分的屬性,二是選定了劃分屬性,對于在該屬性上缺失特征的樣本的處理。
對于第一個子問題,對于某一個有缺失特征值的特征(A)。C4.5的思路是將數據分成兩部分,對每個樣本設置一個權重(初始可以都為1),然后劃分數據,一部分是有特征值A的數據(D_1),另一部分是沒有特征A的數據(D_2)。然后對于沒有缺失特征A的數據集(D_1)來和對應的A特征的各個特征值一起計算加權重后的信息增益比,最后乘上一個系數,這個系數是無特征(A)缺失的樣本加權后所占加權總樣本的比例。
對于第二個子問題,可以將缺失特征的樣本同時劃分入所有的子節點,不過將該樣本的權重按各個子節點樣本的數量比例來分配。比如缺失特征(A)的樣本a之前權重1,特征(A)有3個特征值(A_1,A_2,A_3)。3個特征值對應的無缺失A特征的樣本個數為2,3,4.a同時劃分入(A_1,A_2,A_3)。對應權重調節為2/9,3/9, 4/9。
對于ID3的第4個問題,C4.5引入了正則化系數進行剪枝。剪枝的思路已經在上一篇文章中討論過了。
3.2 C4.5的不足
C4.5雖然改進或者改善了ID3算法的幾個主要的問題,仍然有優化的空間。
由于決策樹算法非常容易過擬合,因此對于生成的決策樹必須要進行剪枝。C4.5的剪枝方法是PEP。PEP的準確度比較高,但是依舊會存在以下的問題:
PEP算法實用的從從上而下的剪枝策略,這種剪枝會導致和預剪枝同樣的問題,造成剪枝過度。
PEP剪枝會出現剪枝失敗的情況。
C4.5生成的是多叉樹,即一個父節點可以有多個節點。很多時候,在計算機中二叉樹模型會比多叉樹運算效率高。如果采用二叉樹,可以提高效率。
C4.5只能用于分類,如果能將決策樹用于回歸的話可以擴大它的使用范圍。
C4.5由于使用了熵模型,里面有大量的耗時的對數運算,如果是連續值還有大量的排序運算。如果能夠加以模型簡化可以減少運算強度但又不犧牲太多準確性的話,那就更好了。
4. CART算法
4.1 CART對C4.5的改進
CART算法在C4.5的基礎上,對于C4.5中的出現的問題進行了改進。針對上面提到的C4.5中出現的4點問題,進行如下改進:
CART使用了CCP代價復雜度剪枝算法,對C4.5的剪枝方法進行了優化。
針對C4.5的多叉樹的問題,CART改成了二叉樹。CART采用的是不停的二分,舉個例子,CART分類樹會考慮把A分成({A1})和({A2,A3}),({A2})和({A1,A3}),({A3})和({A1,A2})三種情況,找到基尼系數最小的組合,比如({A2})和({A1,A3}),然后建立二叉樹節點,一個節點是({A2})對應的樣本,另一個節點是({A1,A3})對應的節點。同時,由于這次沒有把特征A的取值完全分開,后面我們還有機會在子節點繼續選擇到特征(A)來劃分({A1})和({A3})。這和ID3或者C4.5不同,在ID3或者C4.5的一棵子樹中,離散特征只會參與一次節點的建立,而CART中的離散特征會參與多次節點建立。
CART可以分為CART分類樹和CART回歸樹。CART分類樹和CART回歸樹的算法大致相同,主要區別有下面兩點:
連續值的處理方法不同。
CART分類樹采用的是用基尼系數的大小來度量特征的各個劃分點的優劣情況
CART回歸樹的度量目標是,對于任意劃分特征A,對應的任意劃分點s兩邊劃分成的數據集D1和D2,求出使D1和D2各自集合的均方差最小,同時D1和D2的均方差之和最小所對應的特征和特征值劃分點。表達式為:
[underbrace{min}_{A,s}Bigg[underbrace{min}_{c_1}sumlimits_{x_i in D_1(A,s)}(y_i - c_1)^2 + underbrace{min}_{c_2}sumlimits_{x_i in D_2(A,s)}(y_i - c_2)^2Bigg]
]
決策樹建立后做預測的方式不同。
CART分類樹采用葉子節點里概率最大的類別作為當前節點的預測類別。
CART回歸樹輸出不是類別,它采用的是用最終葉子的均值或者中位數來預測輸出結果。
CART分類樹使用了使用的是基尼系數的度量方式
CART算法相比C4.5算法的分類方法,采用了簡化的二叉樹模型,同時特征選擇采用了近似的基尼系數來簡化計算。當然CART樹最大的好處是還可以做回歸模型,這個C4.5沒有。
4.2 CART的不足
應該大家有注意到,無論是ID3, C4.5還是CART,在做特征選擇的時候都是選擇最優的一個特征來做分類決策,但是大多數,分類決策不應該是由某一個特征決定的,而是應該由一組特征決定的。這樣決策得到的決策樹更加準確。這個決策樹叫做多變量決策樹(multi-variate decision tree)。在選擇最優特征的時候,多變量決策樹不是選擇某一個最優特征,而是選擇最優的一個特征線性組合來做決策。這個算法的代表是OC1,這里不多介紹。
如果樣本發生一點點的改動,就會導致樹結構的劇烈改變。這個可以通過集成學習里面的隨機森林之類的方法解決。
總結
以上是生活随笔為你收集整理的2. 决策树(Decision Tree)-ID3、C4.5、CART比较的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 技术的热门度曲线:GHC
- 下一篇: 解决Error: ENOENT: no