一、原理
決策樹是一種非引數的監督學習方法,它主要用於分類和回歸。決策樹的目的是構造一種模型,使之能夠從樣本資料的特徵屬性中,通過學習簡單的決策規則——if then規則,從而**目標變數的值。
圖1 決策樹
例如,在某醫院內,對因心臟病發作而入院**的患者,在住院的前24小時內,觀測記錄下來他們的19個特徵屬性——血壓、年齡、以及其他17項可以綜合判斷病人狀況的重要指標,用圖1所示的決策樹判斷病人是否屬於高危患者。在圖1中,圓形為中間節點,也就是樹的分支,它代表if then規則的條件;方形為終端節點(葉節點),也就是樹的葉,它代表if then規則的結果。我們也把第乙個節點稱為根節點。
決策樹往往採用的是自上而下的設計方法,每迭代迴圈一次,就會選擇乙個特徵屬性進行分叉,直到不能再分叉為止。因此在構建決策樹的過程中,選擇最佳(既能夠快速分類,又能使決策樹的深度小)的分叉特徵屬性是關鍵所在。這種「最佳性」可以用非純度(impurity)進行衡量。如果乙個資料集合中只有一種分類結果,則該集合最純,即一致性好;反之有許多分類,則不純,即一致性不好。有許多指標可以定量的度量這種非純度,最常用的有熵,基尼指數(gini index)和分類誤差,它們的公式分別為:
上述所有公式中,值越大,表示越不純,這三個度量之間並不存在顯著的差別。式中d表示樣本資料的分類集合,並且該集合共有j種分類,pj表示第j種分類的樣本率:
式中n和nj分別表示集合d中樣本資料的總數和第j個分類的樣本數量。把式4帶入式2中,得到:
目前常用的決策樹的演算法包括id3(iterative dichotomiser 3,第3代迭戈二叉樹)、c4.5和cart(classificationand regression tree,分類和回歸樹)。前兩種演算法主要應用的是基於熵的方法,而第三種應用的是基尼指數的方法。下面我們就逐一介紹這些方法。
id3是由ross quinlan首先提出,它是基於所謂「occam'srazor」(奧卡姆剃刀),即越簡單越好,也就是越是小型的決策樹越優於大型的決策樹。如前所述,我們已經有了熵作為衡量樣本集合純度的標準,熵越大,越不純,因此我們希望在分類以後能夠降低熵的大小,使之變純一些。這種分類後熵變小的判定標準可以用資訊增益(information gain)來衡量,它的定義為:
該式表示在樣本集合d下特徵屬性a的資訊增益,n表示針對特徵屬性a,樣本集合被劃分為n個不同部分,即a中包含著n個不同的值,ni表示第i個部分的樣本數量,e(di)表示特徵屬性a下第i個部分的分類集合的熵。資訊增益越大,分類後熵下降得越快,則分類效果越好。因此我們在d內遍歷所有屬性,選擇資訊增益最大的那個特徵屬性進行分類。在下次迭代迴圈中,我們只需對上次分類剩下的樣本集合計算資訊增益,如此迴圈,直至不能再分類為止。
c4.5演算法也是由quinlan提出,它是id3演算法的擴充套件。id3應用的是資訊增益的方法,但這種方法存在乙個問題,那就是它會更願意選擇那些包括很多種類的特徵屬性,即哪個a中的n多,那麼這個a的資訊增益就可能更大。為此,c4.5使用資訊增益率這一準則來衡量非純度,即:
式中,si(d, a)表示**資訊值,它的定義為:
該式中的符號含義與式6相同。同樣的,我們選擇資訊增益率最大的那個特徵屬性作為分類屬性。
cart演算法是由breiman等人首先提出,它包括分類樹和回歸樹兩種。我們先來討論分類樹,針對特徵屬性a,分類後的基尼指數為:
該式中的符號含義與式6相同。與id3和c4.5不同,我們選擇分類基尼指數最小的那個特徵屬性作為分類屬性。當我們每次只想把樣本集合分為兩類時,即每個中間節點只產生兩個分支,但如果特徵屬性a中有多於2個的值,即n> 2,這時我們就需要乙個閾值β,它把d分割成了d1和d2兩個部分,不同的β得到不同的d1和d2,我們重新設d1的樣本數為l,d2的樣本數為r,因此有l+r = n,則式9可簡寫為:
我們把式5帶入上式中,得到:
式中,∑lj = l,∑rj = r。式11只是通過不同特徵屬性a的不同閾值β來得到樣本集d的不純度,由於d內的樣本數量n是一定的,因此對式11求最小值問題就轉換為求式12的最大值問題:
以上給出的是分類樹的計算方法,下面介紹回歸樹。兩者的不同之處是,分類樹的樣本輸出(即響應值)是類的形式,如判斷蘑菇是有毒還是無毒,週末去看電影還是不去。而回歸樹的樣本輸出是數值的形式,比如給某人發放房屋貸款的數額就是具體的數值,可以是0到120萬元之間的任意值。為了得到回歸樹,我們就需要把適合分類的非純度度量用適合回歸的非純度度量取代。因此我們將熵計算用均方誤差替代:
式中n表示d集合的樣本數量,yi和ri分別為第i個樣本的輸出值和**值。如果我們把樣本的**值用樣本輸出值的平均來替代,則式13改寫為:
上式表示了集合d的最小均方誤差。
(我覺14得此處的運算貌似有點小問題,第二步到第三步中間項的計算,把累加號提進去之後)
如果針對於某種特徵屬性a,我們把集合d劃分為s個部分,則劃分後的均方誤差為:
式中ni表示被劃分的第i個集合di的樣本數量。式15與式14的差值為劃分為s個部分後的誤差減小:
與式6所表示的資訊增益相似,我們尋求的是最大化的誤差減小,此時就得到了最佳的s個部分的劃分。
同樣的,當我們僅考慮二叉樹的情況時,即每個中間節點只有兩個分支,此時s= 2,基於特徵屬性a的值,集合d被閾值β劃分為d1和d2兩個集合,每個集合的樣本數分別為l和r,則:
把式14帶入上式,得:
式中,yi是屬於集合d的樣本響應值,li和ri分別是屬於集合d1和d2的樣本響應值。對於某個節點來說,它的樣本數量以及樣本響應值的和是乙個定值,因此式18的結果完全取決於方括號內的部分,即:
因此求式18的最大值問題就轉變為求式19的最大值問題。
決策樹詳解(三)
訓練決策樹有三個關鍵問題 為了避免這種情況的出現,我們設定先驗概率 例如根據今天的天氣,來 明天的天氣 異常出現的情況,我們人為進行增加,這樣決策樹就會被適當的增加。設qj為設定的第j個先驗概率,nj為該分類的樣本數,則考慮了樣本率並進行歸一化處理的先驗概率qj為 把先驗概率帶入到 可以得到 下面說...
決策樹原理詳解
決策樹是機器學習中一種基本的分類和回歸演算法,是依託於策略抉擇而建立起來的樹。其主要優點是模型具有可讀性,分類速度快,易於理解。決策樹的思想主要 於quinlan在1986年提出的id3演算法和1993年提出的c4.5演算法,以及有breiman等人在1984年提出的cart演算法。1.什麼是決策樹...
詳解決策樹
本科人工智慧和研究生的高階人工智慧課中都學習到了決策樹,現在再來根據西瓜書中的內容詳細的總結一下。決策樹學習的目的是為了產生一顆泛化能力強,即處理未見示例能力強的決策樹,其基本流程遵循簡單且直觀的 分而治之 策略 輸入 訓練集d 屬性集a 過程 函式treegenerate d,a 1 生成結點no...