分类算法之决策树介绍
實習(xí)了一段時間,接觸了一些數(shù)據(jù)挖掘、機器學(xué)習(xí)的算法,先記錄下來方便以后的復(fù)習(xí)回顧:
?
一:決策樹概念
決策樹可以看做一個樹狀預(yù)測模型,它是由節(jié)點和有向邊組成的層次結(jié)構(gòu)。樹中包含3中節(jié)點:根節(jié)點、內(nèi)部節(jié)點、葉子節(jié)點。決策樹只有一個根節(jié)點,是全體訓(xùn)練數(shù)據(jù)的集合。樹中每個內(nèi)部節(jié)點都是一個分裂問題:指定了對實例的某個屬性的測試,它將到達(dá)該節(jié)點的樣本按照某個特定的屬性進(jìn)行分割,并且該節(jié)點的每一個后繼分支對應(yīng)于該屬性的一個可能值。每個葉子節(jié)點是帶有分類標(biāo)簽的數(shù)據(jù)集合即為實例所屬的分類。
決策樹算法很多,例如:ID3、C4.5、CART等。這些算法均采用自上而下的貪婪算法,每個內(nèi)部節(jié)點選擇分類效果最好的屬性來分裂節(jié)點,可以分成兩個或者更多的子節(jié)點,繼續(xù)此過程直到這棵決策樹能夠?qū)⑷康挠?xùn)練數(shù)據(jù)準(zhǔn)確的分類,或所有屬性都被用到為止。該算法的簡化版本是在使用了全部樣本的假設(shè)來構(gòu)建決策樹的。具體步驟如下:
(1):假設(shè)T為訓(xùn)練樣本集。
(2):從屬性集合Attributes中選擇一個最能區(qū)別T中樣本的屬性。
(3):創(chuàng)建一個樹節(jié)點,它的值為所選擇的屬性。創(chuàng)建此節(jié)點的子節(jié)點,每個子鏈代表所選屬性的一個唯一值(唯一區(qū)間),使用子鏈的值進(jìn)一步將樣本細(xì)分為子類。
? 對于每一個分支繼續(xù)重復(fù)(2)(3)的過程,直到滿足以下兩個條件之一:
(a):所有屬性已經(jīng)被這條路徑包括。
(b):與這個節(jié)點關(guān)聯(lián)的所有訓(xùn)練樣本都具有相同的目標(biāo)屬性(熵為0)。
下面借用《數(shù)據(jù)挖掘概念與技術(shù)》書中的一個列子來方便理解:
圖1-1
圖1-1是一個典型的決策樹,它表示概念buys_computer,即它目的是預(yù)測顧客是否可能購買計算機。內(nèi)部節(jié)點用矩形表示,葉子節(jié)點用橢圓表示。
為了對未知的樣本分類,樣本的屬性值在決策樹上測試。我們用一些訓(xùn)練樣本構(gòu)造了圖1-1中的決策樹,每個內(nèi)部節(jié)點表示一個屬性上的測試,每個葉子節(jié)點代表一個分類(buys_computer = yes, buys_computer = no ).
?
二:決策樹的適用情況
通常決策樹學(xué)習(xí)最適合具有以下特征的問題:
(1):實例是由“屬性-值”對表示的。
(2):目標(biāo)函數(shù)具有離散的輸出值。例如上面的yes和no
(3):實例的所有屬性都是離散值。如果是連續(xù)值或者離散值種類太多,可以把它分為不同的區(qū)間,例如上面的age分為了3個區(qū)間而不是每個獨立的值為一個判斷分支。
?
三:決策屬性的選擇
建樹算法中屬性的選擇非常重要。屬性選擇方法很多種,例如信息增益(information gain)、信息增益比(information gain ratio)、Gini 指標(biāo)(Gini Index)等方法。
ID3算法依據(jù)的是信息增益來選擇屬性,每次計算所有剩余候選屬性的信息增益,然后根據(jù)信息增益最大的一個作為此次的分類屬性。信息增益是用熵作為尺度,是衡量屬性對訓(xùn)練數(shù)據(jù)分類能力的標(biāo)準(zhǔn)。
假設(shè)表3-1為圖1-1中的訓(xùn)練樣本集:共有14條數(shù)據(jù),屬性有:age、income、student、credit_rating,目標(biāo)屬性是:buys_computer
表3-1
下面根據(jù)表3-1和圖1-1的例子來講解某具體屬性的信息增益的計算過程:
對于某個具體的屬性A,它的信息增益計算表達(dá)式是:
?
(1)是對給定樣本分類所需的期望信息,計算過程如下:
設(shè)S是s個訓(xùn)練樣本的集合,S也就是對于表3-1中的數(shù)據(jù),s = 14。假定類標(biāo)號屬性有m個不同值,定義m個不同類Ci(i=1,2,...m).設(shè)si是類Ci中的樣本數(shù),對應(yīng)表3-1和圖1-1實例中m=2,其中 C1 = yes C2 = no s1 = 9 s2 = 5 。
則:
其中pi是任意樣本屬于Ci的概率,pi = si/s .公式中的對數(shù)函數(shù)以2為底,因為信息用二進(jìn)位編碼。
在該實例中?
?
?
(2)是根據(jù)A劃分子集的熵或期望值,計算過程如下:
設(shè)屬性A有v個不同的值{a1,...av},對應(yīng)實例中的數(shù)據(jù),例如屬性age,分為3個不同的值:
a1為?<=30
a2為?30..40
a3為?>40 ;
屬性A把訓(xùn)練樣本集合S劃分為v個子集{S1,...Sv};其中Sj包含訓(xùn)練樣本集S中在屬性A上有值aj的樣本。Sij是子集Sj中屬于類Ci的樣本數(shù)。
其中充當(dāng)?shù)趈個子集的權(quán)值,等于子集(即A值為aj)的樣本總數(shù)除以S中的樣本總數(shù) 即 Sj/S。
對于給定的子集Sj有
其中,Pij=Sij/Sj ,是Sj中的樣本屬于Ci的概率。
該實例中:
? ? ? ? 因此屬性age的信息增益為:Gain(age)= I(s1,s2) - E(age) = 0.246
類似的我們可以計算出Gain(income)=0.029 Gain(student)=0.151 Gain(credit_rating)=0.048.由于age在屬性中具有最高信息增益,因此它被選作為第一個測試屬性。
圖1-1是最終生成的決策樹。
?
四:決策樹的剪枝
為了防止決策樹和訓(xùn)練樣本集的過度擬合,需要對決策樹進(jìn)行剪枝。剪枝通常有事先剪枝法和事后剪枝法。
事先剪枝法: 是建樹過程中判斷當(dāng)前節(jié)點是否需要繼續(xù)劃分的剪枝方法。通常是通過重要性檢測判斷是否停止分裂節(jié)點。
?事后剪枝法:?是讓樹充分生長之后,再判斷是否將某些分支變成節(jié)點。常用方法是根據(jù)錯誤分裂率(或者決策樹編碼長度)進(jìn)行決策樹的事后修剪。
?
參考資料:機器學(xué)習(xí)? Mitchell T.M
數(shù)據(jù)挖掘:概念與技術(shù) 第三版 ?Jiawei Han ?
?
?
?
?
?
?
?
?
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/justcxtoworld/p/3346271.html
總結(jié)
以上是生活随笔為你收集整理的分类算法之决策树介绍的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 统计在从1到n的正整数中1出现的次数
- 下一篇: 第五章(1)Libgdx应用框架之生命周