###決策樹基礎概念 在機器學習中,決策樹是一個預測模型,他代表的是對象屬性與對象值之間的一種映射關系。Entropy (熵) 表示的是系統的凌亂程度,它是決策樹的決策依據,熵的概念來源於香儂的信息論。
###決策樹的決策過程
- 選擇分裂特征:根據某一指標(信息增益,信息增益比或基尼系數)計算不同特征的指標值,選出最佳的特征作為分裂節點。
- 生成決策樹:不斷的重復分裂特征選擇,並從上至下遞歸生成子節點,直到數據集不可分則停止決策樹的生長。
- 決策樹調整:完全展開的決策樹一般容易過擬合,需要進行一定程度的剪枝(減少決策樹的深度或子節點的數量)
###信息熵極其衍生概念 在具體的決策樹算法前先理解下基礎概念信息熵。
####信息熵和條件熵 信息熵(entropy)是消除不確定性所需信息量的度量,也即未知事件可能含有的信息量。它可以衡量一個隨機變量出現的期望值。如果信息的不確定性越大,熵的值也就越大,出現的各種情況也就越多。比如在2018年世界杯開始前預測哪個球隊會獲得冠軍,這個隨機變量的不確定性很高,要消除這個不確定性,就需要引入很多的信息,即信息熵很大。而預測中國隊獲得冠軍,這個事件的確定性很高(中國沒有進入世界杯),幾乎不需要引入新信息,因而信息熵很低。
信息熵公式表示為:
其中,X為所有事件集合,p為事件發生概率,n為特征總數。
條件熵(conditional entropy) 可以表示為已知某一個隨機變量的情況下另一個變量的不確定性。
條件熵H(Y|X)表示在已知隨機變量X的條件下隨機變量Y的不確定性。
####信息增益 信息增益(information gain)表示得知特征X的信息而使得類Y的信息的不確定性減少的程度。即使用某一特征進行分裂前后熵的差值。
特征A對訓練數據集D的信息增益g(D,A),定義為集合D的熵H(D)與特征A給定條件下D的條件熵H(D|A)之差。
####信息增益比 信息增益比是信息增益和熵的比值。
特征A對訓練數據集D的信息增益比gR(D,A)定義為其信息增益g(D,A)與訓練數據集D關於特征A的值的熵HA(D)之比。
###決策樹分類 目前主流的決策樹有ID3,C4.5,CART等。
####決策樹之ID3 ID3算法是以信息增益為准則選擇分裂后信息增益最大的屬性進行分裂。
ID3的實現過程:
- 初始化屬性集合和數據集合
- 計算數據集合信息熵S和所有屬性的信息熵,選擇信息增益最大的屬性作為當前決策節點
- 更新數據集合和屬性集合(刪除掉上一步中使用的屬性,並按照屬性值來划分不同分支的數據集合)
- 依次對每種取值情況下的子集重復第二步
- 若子集只包含單一屬性,則為分支為葉子節點,根據其屬性值標記。
- 完成所有屬性集合的划分
ID3算法存在的問題:
- 信息增益對可取值數目較多的屬性有所偏好,比如通過ID號可將每個樣本分成一類,但是沒有意義。
- ID3只能對離散屬性的數據集構造決策樹。
- 沒有剪枝過程,為了去除過渡數據匹配的問題,可通過裁剪合並相鄰的無法產生大量信息增益的葉子節點。
####決策樹之C4.5 C4.5算法是ID3算法的一種改進。它是以信息增益率為准則選擇屬性。
C4.5相對於ID3改進的地方:
- 在信息增益的基礎上對屬性有一個懲罰,抑制可取值較多的屬性,增強泛化性能。
- 在樹的構造過程中可以進行剪枝,緩解過擬合;
- 同時能夠對連續屬性進行離散化處理(二分法);
- 還能夠對缺失值進行處理;但在構造樹的過程需要對數據集進行多次順序掃描和排序,導致算法低效;
離散化處理過程:
- 將需要處理的樣本(對應根節點)或樣本子集(對應子樹)按照連續變量的大小從小到大進行排序
- 假設該屬性對應不同的屬性值共N個,那么總共有N-1個可能的候選分割值點,每個候選的分割閾值點的值為上述排序后的屬性值中兩兩前后連續元素的中點
- 用信息增益選擇最佳划分
####決策樹之CART CART算法可以進行分類和回歸,可以處理離散屬性,也可以處理連續的。但數據對象的屬性特征為離散型或連續型,並不是區別分類樹與回歸樹的標准。
作為分類決策樹時,待預測樣本落至某一葉子節點,則輸出該葉子節點中所有樣本所屬類別最多的那一類(即葉子節點中的樣本可能不是屬於同一個類別,則多數為主);作為回歸決策樹時,待預測樣本落至某一葉子節點,則輸出該葉子節點中所有樣本的均值。
因此,分類樹使用GINI系數來選擇划分屬性:在所有候選屬性中,選擇划分后GINI系數最小的屬性作為優先划分屬性。而回歸樹使用用最小平方差。
####CART之分類樹 分類樹使用GINI增益系數來選擇划分屬性,GINI增益系數表示的是分裂后子樣本的純凈度,GINI增益系數越小,子樣本的純凈度越高,分裂效果越好,它和熵的作用剛好相反。
GINI系數公式:
其中,pi表示分類結果中第i類出現的概率。
GINI增益系數公式:
####CART之回歸樹 區別於分類樹,回歸樹的待預測結果為連續型數據。同時,區別於分類樹選取Gain_GINI為評價分裂屬性的指標,回歸樹選取Gain_σ(可以稱之為方差增益)為評價分裂屬性的指標。選擇具有最小Gain_σ的屬性及其屬性值,作為最優分裂屬性以及最優分裂屬性值。Gain_σ值越小,說明二分之后的子樣本的“差異性”越小,說明選擇該屬性(值)作為分裂屬性(值)的效果越好。
平方差公式:
其中,μ表示樣本集中預測結果的均值。
Gain_σ公式:
####R決策樹實現 R中有實現決策樹算法的包rpart,和畫出決策樹的包rpart.plot
生成樹 :rpart () 函數
rpart (formula , data , weights , subset , na. action= na. rpart , method , model = FALSE , x = FALSE ,y = TRUE , parms , control , cost , . . . )
主要參數說明 : * formula 回歸方程形式 : 例如 y~x1 + x2 + x3 。 * data 數據 : 包含前面方程中變量的數據框 ( dataframe) * na . action 缺失數據的處理辦法 : 默認辦法是刪除因變量缺失的觀測而保留自變量缺失的觀測。 * method 根據樹末端的數據類型選擇相應變量分割方法 ,本參數有四種取值 : 連續型 ] “anova” ; 離散型 ]“ class” ; 計數型 ( 泊松過程) ] “ poisson” ; 生存分析型 ] “ exp ”。程序會根據因變量的類型* * 自動選擇方法 ,但一般情況下最好還是指明本參數 ,以便讓程序清楚做哪一種樹模型。 * parms 用來設置三個參數 : 先驗概率、損失矩陣、分類純度的度量方法。 * control 控制每個節點上的最小樣本量、交叉驗證 的 次 數、復 雜 性 參 量 : 即 cp : com plexit y * pamemeter ,這個參數意味着對每一步拆分 , 模型的擬合優度必須提高的程度 ,等等。
剪枝 :prune () 函數 函數用法 :prune ( tree , . . . ) prune ( tree , c p , . . . ) * tree 一個回歸樹對象 ,常是 r part () 的結果對象。 * cp 復雜性參量 ,指定剪枝采用的閾值。
建模實例
library(rpart)
model<-rpart(Species~Sepal.Length+Sepal.Width+Petal.Length+Petal.Width,
data=iris,method="class",control=5,
parms=list(prior=c(0.3,0.4,0.3), split = "information"))
plot(model,margin=0.2)
text(model,use.n=T,all=T,cex=0.9)
決策樹畫出來的結果