決策樹是一種基本的分類回歸方法,很很多相關的方法。這里我們只是以條脈絡進行分析。主要分析ID3,C4.5,CART等一些常見的決策樹算法。
一、小析決策樹
決策樹以實例為基礎的歸納學習算法。着眼於從一組無次序、無規則的事例中,推理出以決策樹為表示形式的分類規則。圖1就是決策樹的一般流程圖:
圖1
決策樹主要可以分為三個部分:分別是特征選擇、決策樹構建和決策樹剪枝。
1.特征選擇:在構建決策樹時,每個節點需要屬性特征進行分裂。被選擇分裂的屬性,將作為該節點的分裂依據。然后,通過該分裂屬性值,生成對應的分支。
2.決策樹構建:決策樹的構建可以視為是一種自上而下的遞歸分裂過程。每次通過屬性計算選擇分裂屬性,然后使用該分裂屬性對節點進行分裂。直到節點中的數據屬於同一類,或者滿足停止分裂要求為止。
3.決策樹剪枝:決策樹剪枝分為前剪枝和后剪枝。前剪枝通過設定一定的閾值條件,讓決策樹停止節點分裂。后剪枝則通過計算代價函數來獲取最適合的的決策樹。該決策樹在測試誤差和決策樹的復雜上都得到一個很好的折衷。決策樹剪枝是為了防止,所構建的樹過擬合。(過擬合是指該決策樹只是更適合對於訓練數據,對於未知數據(或者實際情況)難以有較好地適應性)。
下面分析決策樹的一些常見算法時候都會通過這三個方面進行分析。
二、ID3算法
在介紹ID3算法之前,我們需要介紹一些相關的信息論基礎知識。主要是信息熵、信息增益和信息增益率等基本概念。
信息熵:假定為訓練集,
的目標屬性
具有
個可能的類標號值,
。信息熵是在樣本集合中對目標屬性類別情況的一種衡量。其計算公式如下:
信息增益:是划分前樣本數據集的不確定性程度(熵)和划分后樣本數據集的不確定性程度(熵)的差值。即:
信息增益率:特征A對訓練數據集S的信息增益率的定義如公式(4)所示:
ID3算法是一個較為經典的決策樹算法。和一般的決策樹算法相比,其沒有進行決策樹的剪枝。ID3算法的核心是使用信息增益進行特征選擇,然后進行構建決策樹。其算法大意如下:
(1)計算訓練集中以當前屬性集中的各個屬性為准,獲取每個屬性作為分裂屬性的信息增益。
(2)從中找到一個信息增益最大的屬性作為該節點決策樹的分裂屬性。
(3)重復步驟(1)和步驟(2),直到每個節點中已無屬性可以作為分裂屬性或者節點中所有數據都是屬於同一類的。
當然可以通過設置一定的信息增益閾值,來判斷節點是否無需再需要進行分裂。當決策樹不能繼續進行分裂,但是其中又含有不止一個類別的數據時,則一般是通過選擇該節點中,同類最多的數據的屬性作為該節點的屬性。
ID3算法的缺點:
(1)ID3算法的所選的分類屬性偏向於特征值數目多的分類屬性。
(2)ID3算法沒有對數據進行一定的預處理,因而,對噪聲數據比較敏感。
(3)ID3算法沒有進行剪枝,可能會出現規則過擬合的情況。
(4)ID3可算法能收斂於局部最優解而丟失全局最優解。主要是因為在分類屬性選擇時,都是采用的是貪心策略,具體說就是自頂向下的深度優先搜索策略。
對於ID3算法的缺點,其中我們可以看出(1)和(2)是其固定的缺點。對於缺點(3),則可以通過設置一定的信息增益閾值來限定節點的分裂條件,就可以減緩。而對於缺點(4)則是決策樹算法共有的缺點。決策樹本身就是使用貪心策略進行屬性的選擇。如果要做到選擇最優的分裂屬性,那么這個問題將是NP問題,極為難解決。
三、C4.5算法
由於ID3算法只是選擇信息增益作為節點選擇分裂屬性的定義,而這種屬性選擇方式會讓節點的屬性偏向於屬性值比較多的那些屬性。這個對決策樹的構建是極為不利的。C4.5是基於ID3算法之上的另外一種構建決策樹的方法。
在C4.5算法中,使用信息增益率作為決策樹在選擇分裂屬性時的計算方法。和ID3算法相比,C4.5則有決策樹算法常有的三個部分。C4.5算法的算法大意如下:
(1)計算訓練集中以當前屬性集中的各個屬性為准,獲取每個屬性作為分裂屬性的信息增益率。
(2)從中找到一個信息增益最大的屬性作為該節點決策樹的分裂屬性。
(3)重復步驟(1)和步驟(2),直到每個節點中已無屬性可以作為分裂屬性或者節點中所有數據都是屬於同一類的或者節點滿足無需再進行分裂的條件。其中第一個條件和第三個條件可能出現該節點中含有不同類型的數據。這種情況下,一般是選擇同一類屬性最多的數據集所對應的屬性作為該節點的屬性。
(4)在構建好一顆決策樹之后,對決策樹進行剪枝操作。決策樹的損失函數可以定義為預測誤差函數和決策樹代價函數。其中預測誤差使用經驗熵進行處理。代價函數使用復雜度函數進行衡量。
樹的剪枝算法:
(1)計算每個節點的經驗熵;
(2)遞歸地從樹的葉結點向上回縮;
設一組葉結點回縮到其父節點之前與之后的整體樹分別為 與
,其對應的損失函數值分別是
與
,如果
則進行剪枝,即將父節點變為新的葉節點。
(3)返回(2),直到不能繼續位置,得到損失函數最小的子樹 ;
使用該方法就可以完成對樹的剪枝操作。由於C4.5的優秀性能,所以有人對其又進行改進使其更適合於商業應用中,這個算法叫C5.0。有興趣可以搜索相關內容。
四、CART算法
CART算法又稱為分類與回歸樹。以上ID3算法和C4.5算法構建的是一顆多叉樹,而CART算法則構建的是一顆二叉樹。多叉樹在指示給人們查看時雖然方便,但是在計算機表示和編寫對應的代碼時,卻非常麻煩。因而,我一直認為CART算法是對ID3和C4.5算法的彌補,但是其實不是。因為CART出現的時間是比ID3和C4.5更要早。只能是將其看成不同的類型。
在介紹CART算法之前,需要先介紹經濟學中的一種指數:基尼指數。基尼和信息熵有點類似是用來衡量數據中類別的不確定度。其值越大說明不確定度越高,或者數據集中每類數據的分布越均勻。
假設第k類數據對應的概率為 ,則概率分布定義的基尼指數是:
。對於給定的樣本結合C,其集合的基尼指數是:
CART算法成為分類與回歸樹,因而其的作用就可以分為這兩個部分。其中回歸樹部分,可以參看李航博士編寫的《統計學習方法》一書中的p69頁,最小二乘回歸樹生成算法。其算法的核心是,子啊訓練數據集所在的輸入空間中,遞歸地講每個區域划分為兩個子區域並決定每個子區域上的輸出值,構建二叉樹策略。其步驟如下:
遍歷變量j,對固定的切分變量j掃描切分點s,選擇使式子(5)達到最小值的對(j,s)。
(2)用選定的對(j,s)划分區域並決定相應的輸出值:
(3)繼續對兩個子區域調用步驟(1),(2),直至滿足停止條件。
對於CART算法進行生成CART分類樹,則其生成樹的過程大致和ID3和C4.5算法一直。所不同的是因為CART算法構建的是一顆二叉樹。因而,需要將屬性的多個值進行處理。對於每個值,我們通過判斷其是否等於后不等於該值,計算其的基尼指數。獲取基尼指數最小的屬性值進行划分。對於所划分的兩個子區域再使用該方法進行處理,就可以構建一顆CART樹。
在構建完決策樹之后,CART算法仍是需要對其進行剪枝操作。對於CART剪枝算法,可以參看李航博士編寫的《統計學習方法》中的p73頁。這里不重復進行說明。
五、小結
對於決策樹算法的一些基本算法先講解到這里。之后將會有一篇文章,講解一些較為實用的決策樹算法。