【資料探勘】C3.0、C4.5、CART演算法

腦子不夠用的笨比發表於2020-10-10

小白學資料,只為記錄學習程式,對每個問題有新的理解會及時更正。

1.引入熵的概念:
計算集合中,所有資料的熵
在這裡插入圖片描述
D表示整個集合,pk表示第k類分類的資料所佔的比例,熵越大,表示集合D越混亂,越小表示集合越純。一般熵介於0,1之間。

2、引入條件熵
在這裡插入圖片描述
p(xi)表示屬性x,是xi屬性的資料所佔比列,Entropy(Y|xi)表示在屬性是xi的前提下,Y的資訊熵

3、資訊增益
在這裡插入圖片描述
資訊增益 = 集合D的資訊熵 - 屬性X下的條件資訊熵
表示決策樹在屬性X下的資訊熵減少的程度

4、C3.0演算法
選擇資訊增益最大的屬性作為優先劃分的屬性,選擇好劃分之後,再計算新的資訊增益,在選擇第二個屬性。。。。直到劃分結束。

但此方法,會傾向選擇劃分屬性較多的特徵,比如把每一條資料加上編號,這個編號如果作為劃分標準,則每一個劃分集合只有一個,則條件資訊熵為0,這時候資訊增益最大,但是這是沒有意義的劃分。所以我們引入了C4.5演算法

C3.0演算法缺點:
(1)、傾向選擇劃分屬性較多的特徵
(2)、不能處理連續值的情況
(3)、當屬性缺失的時候,沒法處理

5、C4.5演算法
基於C3.0的侷限性,引入資訊增益率:
在這裡插入圖片描述
Gain(D,a)表示在屬性a的前提下,D的資訊增益,IV(a)表示,屬性a的熵,計算方法和Entropy一樣。
這時候,當劃分屬性很多時候,IV(a)會變大,導致資訊增益率變小,所以,在選用C4.5演算法傾向選擇劃分屬性少的特徵。

在C4.5演算法選擇屬性的時候,先選擇資訊增益大於均值的特徵(保證了劃分的有效性),再在選出的特徵中選擇資訊增益率最大的特徵(避免了過多特徵帶來的無效劃分)。

當處理的屬性是連續的屬性的時候,先把值按照從小到大的順序排列,然後取相鄰兩個值的中值作為劃分點,再分別計算每個劃分點下的資訊增益,選擇資訊增益最大的那個劃分點,作為這個屬性的二分點。

C4.5演算法優點
(1)、解決了傾向於屬性較多的劃分
(2)、可以處理缺失值
1.當建立模型時候,怎麼確定這個屬性的資訊增益和增益率:(計算沒有缺失的比列 )* (沒有缺失值的資訊增益和資訊增益率)來當作資訊增益(率)
2.當屬性選取好了,樣本的屬性缺失:將樣本以不同概率分配到各個屬性中,概率更具其他未缺失的資料得出
3.當預測資料的值缺失:遍歷缺失值底下的所有情況,選擇概率最大的值作為最後劃分。
(3)、可以處理連續值
(4)、可以進行剪枝
1、先剪枝:當目前的資料集中的樣本數量小於給定閾值,則不再分裂;當目前的資料集中的資訊熵小於給定閾值,則不再分裂;
2、後剪枝:先得到全部分裂的樹,再假設再某個節點不再分裂,通過計算是否分裂的錯誤率來決定是否剪枝,參考後剪枝判斷

6、CART演算法
CART採用基尼係數來當作選擇劃分屬性的標準:
在這裡插入圖片描述
在屬性a的前提下,基尼係數為:
在這裡插入圖片描述
因為基尼係數沒有采用相減這個操作,所以,選用基尼係數小的特徵來當作劃分特徵。同時,基尼係數產生的樹是二叉樹,不是多叉樹。

當處理的屬性是連續的屬性的時候,先把值按照從小到大的順序排列,然後取相鄰兩個值的中值作為劃分點,再分別計算每個劃分點下的基尼係數,選擇基尼係數最小的那個劃分點,作為這個屬性的二分點。

相關文章