決策樹 是表示基於特征對實例進行分類的樹形結構
從給定的訓練數據集中,依據特征選擇的准則,遞歸的選擇最優划分特征,並根據此特征將訓練數據進行分割,使得各子數據集有一個最好的分類的過程。
決策樹算法3要素:
部分理解:
關於決策樹生成
決策樹的生成過程就是 使用滿足划分准則的特征不斷的將數據集划分為純度更高,不確定性更小的子集的過程。
對於當前數據集D的每一次的划分,都希望根據某特征划分之后的各個子集的純度更高,不確定性更小。
而如何度量划分數據集前后的數據集的純度以及不確定性呢?
答案:特征選擇准則,比如:信息增益,信息增益率,基尼指數
特征選擇准則:
目的:使用某特征對數據集划分之后,各數據子集的純度要比划分前的數據集D的純度高(不確定性要比划分前數據集D的不確定性低。)
注意:
1. 划分后的純度為各數據子集的純度的加和(子集占比*子集的經驗熵)。
2. 度量划分前后的純度變化 用子集的純度之和與划分前的數據集D的純度 進行對比。
特征選擇的准則就是 度量樣本集合不確定性以及純度的方法。本質相同,定義不同而已。
特征選擇的准則主要有以下三種:信息增益,信息增益率,基尼指數
首先介紹一下熵的概念以及理解:
熵:度量隨機變量的不確定性。(純度)
定義:假設隨機變量X的可能取值有x
1,x
2, ... , x
n
對於每一個可能的取值x
i,其概率 P(X=x
i) = p
i , ( i = 1,2, ... , n)
因此隨機變量X的熵:
對於樣本集合D來說,隨機變量X是樣本的類別,即,假設樣本有k個類別,每個類別的概率是
,其中|Ck|表示類別k的樣本個數,|D|表示樣本總數
則對於樣本集合D來說熵(經驗熵)為:

定義: 以某特征划分數據集前后的熵的差值
在熵的理解那部分提到了,熵可以表示樣本集合的不確定性,熵越大,樣本的不確定性就越大。因此可以使用划分前后集合熵的差值來衡量使用當前特征對於樣本集合D划分效果的好壞。
划分前樣本集合D的熵是一定的 ,entroy(前),
使用某個特征A划分數據集D,計算划分后的數據子集的熵 entroy(后)
信息增益 =
entroy(前) -
entroy(后)
書中公式:
做法:計算使用所有特征划分數據集D,得到多個特征划分數據集D的信息增益,從這些信息增益中選擇最大的,因而當前結點的划分特征便是使信息增益最大的划分所使用的特征。
信息增益的理解:
對於待划分的數據集D,其 entroy(前)是一定的,但是划分之后的熵 entroy(后)是不定的,entroy(后)越小說明使用此特征划分得到的子集的不確定性越小(也就是純度越高),因此 entroy(前) - entroy(后)差異越大,說明使用當前特征划分數據集D的話,其純度上升的更快。而我們在構建最優的決策樹的時候總希望能更快速到達純度更高的集合,這一點可以參考優化算法中的梯度下降算法,每一步沿着負梯度方法最小化損失函數的原因就是負梯度方向是函數值減小最快的方向。同理:在決策樹構建的過程中我們總是希望集合往最快到達純度更高的子集合方向發展,因此我們總是選擇使得信息增益最大的特征來划分當前數據集D。
缺點:信息增益偏向取值較多的特征
原因:當特征的取值較多時,根據此特征划分更容易得到純度更高的子集,因此划分之后的熵更低,由於划分前的熵是一定的,因此信息增益更大,因此信息增益比較 偏向取值較多的特征。
信息增益比 = 懲罰參數 * 信息增益
書中公式:
注意:其中的H
A(D),對於樣本集合D,將當前特征A作為隨機變量(取值是特征A的各個特征值),求得的經驗熵。
(之前是把集合類別作為隨機變量,現在把某個特征作為隨機變量,按照此特征的特征取值對集合D進行划分,計算熵HA(D))
信息增益比本質: 是在信息增益的基礎之上乘上一個懲罰參數。特征個數較多時,懲罰參數較小;特征個數較少時,懲罰參數較大。
懲罰參數:數據集D以特征A作為隨機變量的熵的倒數,即:將特征A取值相同的樣本划分到同一個子集中(之前所說數據集的熵是依據類別進行划分的)
缺點:信息增益比偏向取值較少的特征
原因: 當特征取值較少時H
A(D)的值較小,因此其倒數較大,因而信息增益比較大。因而偏向取值較少的特征。
使用信息增益比:基於以上缺點,
並不是直接選擇信息增益率最大的特征,而是現在候選特征中找出信息增益高於平均水平的特征,然后在這些特征中再選擇信息增益率最高的特征。
定義:基尼指數(基尼不純度):表示在樣本集合中一個隨機選中的樣本被分錯的概率。
注意: Gini指數越小表示集合中被選中的樣本被分錯的概率越小,也就是說集合的純度越高,反之,集合越不純。
即 基尼指數(基尼不純度)= 樣本被選中的概率 * 樣本被分錯的概率
書中公式:
說明:
1. pk表示選中的樣本屬於k類別的概率,則這個樣本被分錯的概率是(1-pk)
2. 樣本集合中有K個類別,一個隨機選中的樣本可以屬於這k個類別中的任意一個,因而對類別就加和
3. 當為二分類是,Gini(P) = 2p(1-p)
樣本集合D的Gini指數 : 假設集合中有K個類別,則:

基於特征A划分樣本集合D之后的基尼指數:
需要說明的是CART是個二叉樹,也就是當使用某個特征划分樣本集合只有兩個集合:1. 等於給定的特征值 的樣本集合D1 , 2 不等於給定的特征值 的樣本集合D2
實際上是對擁有多個取值的特征的二值處理。
舉個例子:
假設現在有特征 “學歷”,此特征有三個特征取值: “本科”,“碩士”, “博士”,
當使用“學歷”這個特征對樣本集合D進行划分時,划分值分別有三個,因而有三種划分的可能集合,划分后的子集如下:
-
- 划分點: “本科”,划分后的子集合 : {本科},{碩士,博士}
- 划分點: “碩士”,划分后的子集合 : {碩士},{本科,博士}
- 划分點: “碩士”,划分后的子集合 : {博士},{本科,碩士}
對於上述的每一種划分,都可以計算出基於 划分特征= 某個特征值 將樣本集合D划分為兩個子集的純度:

因而對於一個具有多個取值(超過2個)的特征,需要計算以每一個取值作為划分點,對樣本D划分之后子集的純度Gini(D,Ai),(其中Ai 表示特征A的可能取值)
然后從所有的可能划分的Gini(D,Ai)中找出Gini指數最小的划分,這個划分的划分點,便是使用特征A對樣本集合D進行划分的最佳划分點。