決策樹是一種基本的分類和回歸模型,也就是說既可以用於分類也可以用於回歸。這裡以分類為例。
決策樹的學習演算法包含三個步驟:特徵選擇,決策樹的生成,決策樹的剪枝
特徵選擇在於選取對訓練資料具有較好分類能力的特徵,如果選取的特徵進行分類的結果與隨機分類的結果沒有很大的差別,那麼就不能說這個特徵具有很好的分類能力。從經驗上來講,扔掉這些特徵,對決策樹的學習在精度上不會有影響。
通常特徵選擇的準則我們採取的是資訊增益或者資訊增益比。
首先我們給出熵的定義:熵表示的隨機變數的不確定性。
設\(x\) 是乙個取有限個值的離散隨機變數,其概率分布為:$$p(x=x_)=p_, i = 1,2,3,...,n$$
則隨機變數的熵定義為: $$ h(x) = -\sum_^p_logp_$$
通常條件下,式子中的對數我們以2或者e為底數。若\(p_ = 0, 則定義0log0=0\)。 由定義公式我們可以知道熵只依賴於x的分布,而與x的取值無關。所以我們也可以將這個式子改寫成:$$ h(p) = -\sum_^p_logp_$$
熵越大,隨機變數的不確定性就越大,從定義我們可以知道:\(0\leq h(p) \leq logn\)
條件熵 \(h(y|x)\) 表示在已知隨機變數x的條件下隨機變數y的不確定性。公式如下:
\[h(y|x) = \sum_^p_h(y|x=x_)$$. 在這裡$p_=p(x=x_), i = 1,2,...,n.$
### 資訊增益
資訊增益表示的是在得知特徵x的資訊之後而使得y的資訊不確定性減少的程度。
正規定義:特徵a對於訓練資料集d的資訊增益$g(d,a)$,定義為集合d的經驗熵$h(d)$與特徵a給定條件下d的經驗條件熵$h(d|a)$之差。也就是
$$g(d,a) =h(d)-h(d|a)\]
一般條件下,熵h(y) 與條件熵\(h(y|x)\)之差稱之為互資訊。
顯然的,對於資料集d來說,資訊增益是依賴於特徵的,不同的特徵往往會具有不同的資訊增益。從定義上來看,我們可以知道資訊增益越大,
減少的不確定性越大,那麼這個特徵的分類效果越好。
所以如果我們選擇資訊增益準則來作為特徵選擇方式,我們需要做的就是,對於訓練資料,在每一步,計算每個特徵的資訊增益,並且比較他們的大小,
最終選擇資訊增益最大的那個特徵。
正如上面所說的,我們可以使用資訊增益準則來作為我們的特徵選擇方式,但是它有乙個缺點,就是乙個特徵,它的類別數目取得越多,那麼他的資訊增益可能就會越大。
換句話講,資訊增益準則會對類別數目較多的特徵具有一定的偏袒性。為了解決這個問題,我們採取的方式是使用資訊增益比。
\[g_(d,a) = \frac
\]基尼係數代表了模型的純度,基尼係數越低,純度越高,特徵的分類效果越好。
id3演算法的核心是在決策樹的各個節點上應用資訊增益準則選擇特徵,遞迴的構建決策樹。
具體方法是從根節點開始,對節點計算所有特徵的資訊增益,選擇資訊增益最大的特徵作為節點的分類特徵,有該特徵的不同取值建立子節點,再對子節點
遞迴的呼叫以上的方法,構建決策樹,直到所有的特徵的資訊增益都足夠的小或者沒有特徵可以選擇為止,最後得到乙個決策樹。
id3演算法的不足:
(a) id3沒有考慮連續特徵,比如長度,密度都是連續值,無法在id3運用。這大大限制了id3的用途.
(b) id3採用資訊增益大的特徵優先建立決策樹的節點.正如我們上面所說的,採取資訊增益會對類別數目較多的特徵具有一定的偏袒性。
(c) 容易過擬合
(d) id3演算法對於缺失值的情況沒有做考慮
c4.5演算法 針對id3的四個缺點進行了改進。
對於第乙個問題,不能處理連續特徵, c4.5的思路是將連續的特徵離散化。比如m個樣本的連續特徵a有m個,從小到大排列為\(a_,a_,...a_\),則c4.5取相鄰兩樣本值的平均數,一共取得\(m-1\)個劃分點.其中第i個劃分點\(t_\)表示為:t_ = \frac+a_}.對於這\(m-1\)個點,分別計算以該點作為二元分類點時的資訊增益。選擇資訊增益最大的點作為該連續特徵的二元離散分類點。
比如取到的增益最大的點為\(a_\),則小於\(a_\)的值為類別1,大於\(a_\)的值為類別2,這樣我們就做到了連續特徵的離散化。要注意的是,與離散屬性不同的是,如果當前節點為連續屬性,則該屬性後面還可以參與子節點的產生選擇過程。
對於資訊增益偏袒性問題,我們採取的是資訊增益比。
對於缺失值處理的問題,主要需要解決的是兩個問題,一是在樣本某些特徵缺失的情況下選擇劃分的屬性,二是選定了劃分屬性,對於在該屬性上缺失特徵的樣本的處理。
對於第乙個子問題,對於某乙個有缺失特徵值的特徵a。c4.5的思路是將資料分成兩部分,對每個樣本設定乙個權重(初始可以都為1),然後劃分資料,一部分是有特徵值a的資料d1,另一部分是沒有特徵a的資料d2. 然後對於沒有缺失特徵a的資料集d1來和對應的a特徵的各個特徵值一起計算加權重後的資訊增益比,最後乘上乙個係數,這個係數是無特徵a缺失的樣本加權後所佔加權總樣本的比例。
對於第二個子問題,可以將缺失特徵的樣本同時劃分入所有的子節點,不過將該樣本的權重按各個子節點樣本的數量比例來分配。比如缺失特徵a的樣本a之前權重為1,特徵a有3個特徵值a1,a2,a3。 3個特徵值對應的無缺失a特徵的樣本個數為2,3,4.則a同時劃分入a1,a2,a3。對應權重調節為2/9,3/9, 4/9。
對於第4個問題,c4.5引入了正則化係數進行初步的剪枝。
機器學習實戰 決策樹
決策樹 2 python語言在函式中傳遞的是列表的引用,在函式內部對列表物件的修改,將會影響該列表物件的整個生存週期。為了消除這個不良影響,我們需要在函式的開始宣告乙個新列表物件。在本節中,指的是在劃分資料集函式中,傳遞的引數dataset列表的引用,為了不影響dataset我們重新宣告了乙個ret...
機器學習實戰決策樹
這幾天一直在學習機器學習實戰python 實現,在程式清單的3 6 獲取及誒單數程式,書上的程式是這樣的 def getnumleafs mytree numleafs 0.0 firststr list dict.keys mytree 0 seconddict mytree firststr p...
機器學習實戰 決策樹
class sklearn.tree.decisiontreeclassifier criterion gini splitter best max depth none,min samples split 2,min samples leaf 1,min weight fraction leaf ...