決策樹(一):分類決策樹

決策樹模型就是需要通過樣本數據構建一棵樹,數中除了葉子節點的每個節點都是一個數據特徵的劃分點,將待測數據的對應的特徵和該節點上的劃分特徵做對比,然後將待測節點分到該節點的某個子節點上,然後再進行對比,直到葉子節點爲止,然後判斷待測數據的類型集合。

決策樹是一種基本的分類和迴歸的方法,所以可以分爲分類決策樹和迴歸決策樹。分類決策樹主要適用於標稱型數據(如蘋果的顏色、形狀、口味等特徵數據),可以理解爲非數值化的,迴歸樹就適用於數值型數據,可以是連續型的數據。

決策樹的學習過程是利用樣本數據,依據損失函數最小化的原則建立決策樹模型,其學習過程分爲特徵選擇、決策樹生成、決策樹剪枝。特徵選擇就是依據損失最小化選擇當前節點的劃分標準是依據那個特徵劃分的;決策樹的生成就是對每個節點選擇合適的劃分特徵,直到結束的過程;決策樹的剪枝就是防止過擬合,增加決策樹泛化能力的過程。

下面先介紹分類迴歸樹:

  1. 特徵選擇

    特徵選擇就是爲當前節點選擇合適的劃分屬性,以符合損失最小的原則。通常在分類迴歸樹的特徵選擇過程用到的是信息增益熵和信息增益比。

信息增益熵:

    先從信息熵說起。在信息論與統計中,熵是隨機變量不確定的度量。設X爲隨機變量,其概率分佈爲P(X=xi) = pi則X對應的信息熵爲

             

從等式的右側我們可以看出,熵的大小隻與p值有關,所以修改上面的信息熵的形式:

       

熵越大,隨機變量的不確定性越大,也就越不能用該屬性來分類。

條件熵H(Y|X)是衡量在隨機條件X的情況下,隨機條件Y的不確定性。其定義爲X給定條件下Y的條件概率分佈的熵對X的數學期望

這裏還用區分蘋果和梨的例子,假設一共100個水果樣本。

這裏的n表示對應特徵的值的種類數(樣本的顏色特徵:紅色,綠色,灰色,黃色),此時n=4,pi表示第i個特徵值佔總的樣本的頻率,如果綠色的水果一共10個,那麼綠色特徵的p=1/10。後面的H(Y|X=xi)表示該特徵值的信息熵,表示綠色水果對應的信息熵。各個特徵值的頻率乘以對應特徵值的信息熵,然後求和就得到了該特徵的信息熵,也就是顏色特徵的信息熵。

信息增益

    我們上面說了信息熵和條件信息熵,這些都是對於單個屬性來說的,怎樣衡量所有特徵之間的比較關係以及對整體的影響,就是下來要說的信息增益的概念:

特徵A對訓練數據集D的信息增益g(D,A),定義爲集合D的經驗熵H(D)與特徵A給定條件下D的經驗條件熵H(D|A)之差,即:

信息熵H(D)表示對於數據集D進行分類的額不確定性,而經驗條件熵表示在特徵A給定的條件下對數據及D進行分類的不確定性,他們的差就是信息增益,表示由於特徵A而使得對數據集D的分類的不確定性的減少程度。顯然信息增益熵越大,對數據集D不確定性減少越多,也就是我們希望選擇的分類特徵。

信息增益作爲劃分訓練數據集的特徵,存在偏向於選擇取值較多的特徵的問題(這個爲什麼這麼說,沒有太想明白)。可以使用信息增益比來對這一問題進行校正:

,分子很好理解是信息增益,那麼分母呢?,n是A取值的個數,A是分類的特徵,也就是特徵值的個數|Di|也就是特徵值Di的個數,|D|也就是樣本的個數。

  1. 決策樹的生成

決策樹的生成過程就是從根節點開始,根據特徵選擇的標準,依次選擇每個節點的合適的分割特徵,直到滿足相應的條件爲止;常用的有ID3算法和C4.5算法,兩算法基本都差不多,只是過程中選擇特徵值的標準不一樣。

ID3:

    ID3算法用的是信息增益來選擇每個節點的分割特徵。其具體過程爲:從根節點開始,計算數據集D所有特徵的信息增益,然後選擇信息增益最大的那個特徵,作爲根節點的劃分特徵,將待測數據劃分爲n個子集{D1,D2,…,Dn},然後這是個遞歸的過程,分別在各個子集上計算剩餘特徵的信息熵,在進行子集的劃分,直到信息增益都特別小或者沒有特徵可以選擇爲止。

決策樹停止劃分條件信息增益是否小於某個閾值ε,需要我們提前指定;如果是沒有特徵可選的停止,那極端情況就是每個葉子節點只有一個樣本。

C4.5算法:

    C4.5算法和ID3算法的過程是一樣的,只不過是將特徵選擇的標準換成了信息增益比,閾值ε,變成了信息增益比的閾值,其他過程相同。

  1. 決策樹的剪枝

    我們通過上述的兩種算法構建出來的決策樹,都是在訓練數據上做的,換句話說就是對訓練數據擬合度特別好,但是對測試數據集就不一定了,這就會出現對訓練數據過擬合的情況;過擬合也是模型複雜的表現,所以就需要簡化模型,使其具有更好的泛化能力;解決這個問題就是對已經生成的樹進行剪枝,減掉某些子樹或者葉子節點,從而簡化模型。

我們通過剪枝前後的損失函數來衡量是否進行剪枝,接下來搬上枯燥的公式:

決策樹的損失函數定義爲:

公式解釋:T是決策樹的葉子節點,|T|是葉子節點的個數,Nt是葉子節點樣本的個數,其中:,Ntk表示在對應的子集中分類爲k的子集的個數,所以合併兩各式子,得到如下公式:

 

其中對數係數的分母Nt抵消了,將上式簡寫爲:

 

C(T)表示對訓練數據的預測誤差,|T|表示模型複雜度,α>=0應該叫做調和係數(其實我覺得也可以看做是一個正則化係數),控制兩者之間的影響。當α較大時,促使選擇較簡單的模型,較小的子樹,當α交到時促使選擇較複雜的模型,較大的樹。α=0意味着只考慮模型與訓練數據的擬合程度,不考慮模型複雜度。在α確定後,較大的子樹,模型複雜度也高,與訓練數據擬合程度好,較小的子樹模型複雜度也低,與訓練數據擬合程度不好。

模型建立我們一般要有訓練數據和測試數據,剪枝是我們用測試數據對生成的決策樹進行剪枝。其中C(T)我們可以看到是對所有的進行求預測誤差,所以在每次剪枝,我們都需要衡量剪枝前後的Cα(T)即決策樹的損失函數,如果剪枝後損失更小,就剪枝,否則不剪。

  1. 總結

分類決策樹,由於特徵值的個數是不確定的,所以每個節點的子節點的個數也是不確定的。而回歸樹就不一樣了,迴歸樹一般都是二叉樹模型的。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章