【统计学习方法】决策树
何為決策樹(shù)?
決策樹(shù)定義
決策樹(shù)是一種用于分類(lèi)的樹(shù)結(jié)構(gòu)。如圖所示,它由結(jié)點(diǎn)(node)和有向邊(directed edge)組成,結(jié)點(diǎn)包括內(nèi)部結(jié)點(diǎn)(internal node)和葉結(jié)點(diǎn)(leaf node),內(nèi)部結(jié)點(diǎn)表示一個(gè)特征或?qū)傩?#xff0c;葉結(jié)點(diǎn)表示一個(gè)類(lèi)。
決策樹(shù)示意圖
如何分類(lèi)?
那么決策樹(shù)如何進(jìn)行分類(lèi)呢?首先,從根結(jié)點(diǎn)開(kāi)始,根據(jù)待分類(lèi)數(shù)據(jù)的某一特征值對(duì)其進(jìn)行劃分,分配到相應(yīng)子結(jié)點(diǎn),因此,每一個(gè)子結(jié)點(diǎn)都對(duì)應(yīng)了該特征的一個(gè)取值。像這樣遞歸進(jìn)行,直到到達(dá)葉結(jié)點(diǎn)。
決策樹(shù)的特征選擇
上一部分提到?jīng)Q策樹(shù)根據(jù)特征值對(duì)數(shù)據(jù)進(jìn)行劃分,不同的特征選擇方式可以得到不同的決策樹(shù),而我們想得到的決策樹(shù),它不僅能很好地?cái)M合訓(xùn)練數(shù)據(jù),還有較好的泛化能力。
那么該怎么選特征呢?一個(gè)基本準(zhǔn)則是,每一步都遞歸地選擇最優(yōu)特征,可以對(duì)各個(gè)子數(shù)據(jù)集達(dá)到最后的分類(lèi)結(jié)果。
如何評(píng)價(jià)特征的優(yōu)劣呢?這就不得不提到信息增益和信息增益比這兩個(gè)概念了。
熵&條件熵
說(shuō)到信息增益,不得不先提一提熵(entropy)和條件熵(conditional entropy)。
熵是表示隨機(jī)變量不確定性的度量,定義如下:
條件熵表示在已知隨機(jī)變量X的條件下,隨機(jī)變量Y的不確定性,定義如下:
當(dāng)熵和條件熵中的概率由數(shù)據(jù)估計(jì)得到時(shí),就分別稱(chēng)為經(jīng)驗(yàn)熵(empirical entropy)和經(jīng)驗(yàn)條件熵(empirical conditional entropy)。
信息增益&信息增益比
信息增益(information gain)表示得知特征X的信息而使得類(lèi)Y的信息的不確定性減少程度。定義如下:
回到原來(lái)的問(wèn)題,該如何評(píng)價(jià)特征的優(yōu)劣呢?我們就用信息增益!在這里,信息增益表示了由于特征A而使得對(duì)數(shù)據(jù)集D的分類(lèi)的不確定性減少的程度。信息增益大的特征就具有更強(qiáng)的分類(lèi)能力啦~
具體如何根據(jù)信息增益選擇特征呢?用這個(gè)方法:對(duì)訓(xùn)練數(shù)據(jù)集(或子集)D,計(jì)算其每個(gè)特征的信息增益,比較它們的大小,選擇信息增益最大的特征。
如何計(jì)算信息增益呢?下面給出信息增益的算法:
了解了信息增益后,信息增益比就很好理解了,信息增益比是信息增益關(guān)于特征的值的熵之比,具體如下:
決策樹(shù)生成算法
ID3算法
ID3算法的基本思想是從根結(jié)點(diǎn)開(kāi)始,在每一個(gè)結(jié)點(diǎn)上都計(jì)算所有可能的特征的信息增益,然后選出信息增益最大的一個(gè)特征作為該結(jié)點(diǎn)的特征;然后不斷遞歸進(jìn)行,構(gòu)建決策樹(shù)。也就是說(shuō) ,ID3算法每一步都選擇信息增益最大的特征作為結(jié)點(diǎn)的分類(lèi)特征,構(gòu)建子結(jié)點(diǎn)。
具體算法步驟如下:
C4.5算法
C4.5算法與ID3算法相似,區(qū)別在于,C4.5算法用信息增益比來(lái)選擇特征。
具體算法步驟如下:
決策樹(shù)剪枝算法
按以上生成方式遞歸地產(chǎn)生決策樹(shù)容易過(guò)擬合,即在訓(xùn)練集上分類(lèi)效果非常好,但是泛化能力不強(qiáng),對(duì)于其他數(shù)據(jù)集分類(lèi)效果并沒(méi)有那么準(zhǔn)確。其原因是,構(gòu)建出的決策樹(shù)往往過(guò)于復(fù)雜,那么解決這個(gè)問(wèn)題的辦法就是通過(guò)剪枝算法降低樹(shù)結(jié)構(gòu)的復(fù)雜度。
剪枝是一個(gè)從已生成的樹(shù)上裁掉一些子樹(shù)或者葉結(jié)點(diǎn),并將其根結(jié)點(diǎn)或父節(jié)點(diǎn)作為新的葉結(jié)點(diǎn)的過(guò)程。
損失函數(shù)
剪枝往往通過(guò)最小化整體損失函數(shù)(loss function)或代價(jià)函數(shù)(cost function)來(lái)實(shí)現(xiàn)。損失函數(shù)具體定義如下:
C(T)表示模型預(yù)測(cè)誤差,衡量了擬合程度;|T|表示模型復(fù)雜度。損失函數(shù)制衡了擬合程度和模型復(fù)雜度之間的平衡。
剪枝算法
剪枝的總體目標(biāo)是令損失函數(shù)最小化,因此剪枝算法的基本思想是如果剪枝回縮后損失的函數(shù)值比不剪枝更小,那么就剪枝回縮,不然不剪枝。
具體算法為:
分類(lèi)樹(shù)與回歸樹(shù)CART
分類(lèi)樹(shù)與回歸樹(shù)(classification and regression tree, CART)模型是應(yīng)用廣泛的決策樹(shù)學(xué)習(xí)方法,既可用于分類(lèi),也可用于回歸。
CART算法由兩步組成:
(1)決策樹(shù)生成:基于訓(xùn)練數(shù)據(jù)生成決策樹(shù),決策樹(shù)要盡可能大,擬合度盡可能高
(2)決策樹(shù)剪枝:用驗(yàn)證數(shù)據(jù)集對(duì)已生成的樹(shù)進(jìn)行剪枝并選擇最優(yōu)子樹(shù),剪枝的標(biāo)準(zhǔn)為令損失函數(shù)最小。
接下來(lái)我們分別來(lái)看看CART生成算法和剪枝算法。
CART生成算法
對(duì)于回歸樹(shù),用平方誤差最小化準(zhǔn)則;對(duì)于分類(lèi)樹(shù),用基尼指數(shù)(Gini index)最小化準(zhǔn)則,進(jìn)行特征選擇,遞歸地構(gòu)建決策樹(shù)。
回歸樹(shù)的生成
在輸出變量Y為連續(xù)變量時(shí),我們選用回歸樹(shù)。
給定訓(xùn)練數(shù)據(jù)集為D=(x1,y1),(x2,y2),…,(xN,yN)D=(x1,y1),(x2,y2),…,(xN,yN)
假設(shè)輸入空間被劃分為m個(gè)單元R1,R2,…,RmR1,R2,…,Rm,每個(gè)單元的輸出值為cmcm,II為指示函數(shù),回歸樹(shù)模型可表示為
f(x)=∑m=1McmI(x∈Rm)f(x)=∑m=1McmI(x∈Rm)
訓(xùn)練誤差為∑xi∈Rm(y?f(xi))2∑xi∈Rm(y?f(xi))2
cmcm最優(yōu)值為 cm^=ave(yi|xi∈Rm)cm^=ave(yi|xi∈Rm)
如何對(duì)輸入空間進(jìn)行劃分呢?采用的辦法是,遍歷所有特征和特征的取值,找到最優(yōu)切分變量x(j)x(j)和最優(yōu)切分點(diǎn)ss,滿(mǎn)足
minj,s[minc1Loss(yi,c1)2+minc2Loss(yi,c2)2]minj,s[minc1Loss(yi,c1)2+minc2Loss(yi,c2)2]
其中
c2^=ave(yi|xi∈R2(j,s))c2^=ave(yi|xi∈R2(j,s))
對(duì)于每一個(gè)區(qū)域都迭代地重復(fù)上述劃分過(guò)程,直到滿(mǎn)足停止條件,就生成了一棵回歸樹(shù)。
具體算法步驟為:
分類(lèi)樹(shù)的生成
分類(lèi)樹(shù)用基尼指數(shù)來(lái)選擇最優(yōu)特征,同時(shí)確定最優(yōu)二值切分點(diǎn)。其中,基尼指數(shù)定義如下:
分類(lèi)樹(shù)的算法步驟與回歸樹(shù)算法步驟相似,只不過(guò)分類(lèi)樹(shù)用基尼指數(shù)來(lái)選擇最優(yōu)特征和確定切分點(diǎn)。具體算法步驟如下:
CART剪枝算法
CART剪枝算法由兩步構(gòu)成:
(1)從決策樹(shù)T0T0底端不斷剪枝,直到到達(dá)根結(jié)點(diǎn),得到子樹(shù)序列T0,T1,…,TnT0,T1,…,Tn
(2)通過(guò)交叉驗(yàn)證法,在獨(dú)立的驗(yàn)證集上對(duì)子樹(shù)序列進(jìn)行測(cè)試,從中選擇最優(yōu)子樹(shù)TαTα。
具體剪枝算法為:
參考:
李航 - 統(tǒng)計(jì)學(xué)習(xí)方法
總結(jié)
以上是生活随笔為你收集整理的【统计学习方法】决策树的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【Leetcode | easy】有效的
- 下一篇: 如何解决tmux中Anaconda虚拟环