機器學習演算法基礎 實戰系列 決策樹演算法

2022-05-07 01:27:10 字數 2595 閱讀 3150

決策樹是一種基本的分類和回歸模型,也就是說既可以用於分類也可以用於回歸。這裡以分類為例。

決策樹的學習演算法包含三個步驟:特徵選擇,決策樹的生成,決策樹的剪枝

特徵選擇在於選取對訓練資料具有較好分類能力的特徵,如果選取的特徵進行分類的結果與隨機分類的結果沒有很大的差別,那麼就不能說這個特徵具有很好的分類能力。從經驗上來講,扔掉這些特徵,對決策樹的學習在精度上不會有影響。

通常特徵選擇的準則我們採取的是資訊增益或者資訊增益比。

首先我們給出熵的定義:熵表示的隨機變數的不確定性。

設\(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 ...