決策樹是機器學習中一種基本的分類和回歸演算法,是依託於策略抉擇而建立起來的樹。其主要優點是模型具有可讀性,分類速度快,易於理解。決策樹的思想主要**於quinlan在2023年提出的id3演算法和2023年提出的c4.5演算法,以及有breiman等人在2023年提出的cart演算法。由於本章內容較多,將分兩篇介紹決策樹的原理和演算法實現。
1.什麼是決策樹
決策樹簡單來說就是帶有判決規則(if-then)的一種樹,可以依據樹中的判決規則來**未知樣本的類別和值。用乙個網上通俗易懂的例子(相親)來說明:
2.決策樹模型和學習
在了解決策樹的乙個直觀定義後,我們來看在數學上如何表達這種分類方法。
定義:決策樹是乙個屬性結構的**模型,代表物件屬性和物件值之間的一種對映關係。它又節點(node)和有向邊(directed edge)組成,其節點有兩種型別:內節點(internal node)和葉節點(leaf node),內部節點表示乙個特徵或屬性,葉節點表示乙個類。
如上圖所示的相親例子,藍色的橢圓內節點表示的是物件的屬性,橘黃色的矩形葉節點表示分類結果(是否相親),有向邊上的值則表示物件每個屬性或特徵中可能取的值。
決策樹的學習本質上是從訓練集中歸納出一組分類規則,得到與資料集矛盾較小的決策樹,同時具有很好的泛化能力。決策樹學習的損失函式通常是正則化的極大似然函式,通常採用啟發式方法,近似求解這一最優化問題。
決策樹學習演算法包含特徵選擇、決策樹生成與決策樹的剪枝。決策樹表示的是乙個條件概率分布,所以深淺不同的決策樹對應著不同複雜程度的概率模型。決策樹的生成對應著模型的區域性選擇(區域性最優),決策樹的剪枝對應著全域性選擇(全域性最優)。決策樹常用的演算法有id3,c4.5,cart,下面通過乙個簡單的例子來分別介紹這幾種演算法。
上圖是乙個比較典型的決策樹分類用的貸款申請樣本資料集:樣本特徵x(
i)的型別有年齡、是否有工作、是否有房子和信貸情況,樣本類別y(
i)取值是兩類是、否,最終的分類結果就是根據樣本的特徵來**是否給予申請人貸款。在介紹演算法之前,我們先介紹幾個相關的概念:
3.演算法介紹
id3演算法
在前面我已經介紹了資訊增益計算的方法,在id3演算法中,我們通過資訊增益來選取相應的特徵,首先計算每個特徵對樣本類別的資訊增益:
(1)年齡: g(
y,x1
)=h(
y)−h
(y|x
1)=0.971
−0.888
=0.083
(2)工作: g(
y,x2
)=h(
y)−h
(y|x
2)=0.971−(
515∗0
+1015∗
(−410
∗log410
−610∗
log610)
)=0.324
(3)房子: g(
y,x3
)=h(
y)−h
(y|x
3)=0.971−(
615∗0
+915∗
(−39
∗log39
−69∗
log69)
)=0.420
(2)貸款情況: g(
y,x4
)=h(
y)−h
(y|x
4)=0.971−(
415∗0
+615∗
(−46
∗log46
−26∗
log26)
+515∗
(−45
∗log45
−15∗
log15)
)=0.363
比較各特徵的資訊增益值,可以看到房子作為先知條件時,資訊增益值最大,所以選取房子作為最優特徵,選取出來的分類樹為:
從圖中可以看到,有房子的是肯定能夠借到貸款的,沒房子的,要依據別的條件繼續判斷。在沒有房子的樣本中,我們繼續計算每個特徵在此表上的增益,這樣一直到所有樣本完全分開就能得到乙個適應樣本集的決策樹。本示例的最終決策樹為:
演算法具體實現將在下一章進行詳細的說明。id3演算法只有樹的生成,沒有樹的剪枝,所以容易產生過擬合現象。
c4.5演算法
c4.5演算法與id3演算法在整體流程上很相似,不同之處在於特徵選擇用的是資訊增益,然後最後有剪枝的過程。依據資訊增益率,我們來計算上述例子:
(1)年齡: h(
x1)=
−515log515
−515log515
−515log515
=1.585 g
r(y,
x1)=
h(y)
−h(y
|x1)
h(x1
)=0.052
(2)工作: h(
x2)=
−515log515
−1015log
1015
=0.9183 g
r(y,
x2)=
h(y)
−h(y
|x2)
h(x2
)=0.3529
(3)房子: h(
x3)=
−615log615
−915log915
=0.9709 g
r(y,
x3)=
h(y)
−h(y
|x3)
h(x3
)=0.4325
(2)貸款情況: h(
x4)=
−515log515
−615log615
−415log415
=1.5656 g
r(y,
x4)=
h(y)
−h(y
|x4)
h(x4
)=0.2254
通過上述計算可以看出,增益比最大的還是第三個特徵:房子,因此還是選擇第三個特徵作為最優特徵進行初始決策。
c4.5演算法流程圖與id3相似,在此就不贅述。
cart演算法
cart演算法主要有兩部分組成:
(1) 決策樹的生成:基於訓練資料集生成決策樹,生成的決策樹要盡量打。這與id3演算法類似,不同之處也是特徵選取的方式;
(2) 決策樹的剪枝:用驗證資料集對已生成的樹進行剪枝並選擇最優子樹,此時用損失函式最小作為剪枝的標準。
cart演算法可以用於回歸,即建立回歸樹。在終於分類時,其演算法流程與id3較為類似,不同的是特徵選取,選擇的是最小基尼指數。
4.決策樹剪枝
決策樹生成演算法是遞迴地生成決策樹,知道不能終止。這樣產生的決策樹往往分類精細,對訓練資料集分類準確,但是對未知資料集卻沒有那麼準確,有比較嚴重的過擬合問題。因此,為了簡化模型的複雜度,使模型的泛化能力更強,需要對已生成的決策樹進行剪枝。
剪枝的過程是通過極小化決策樹整體損失函式來實現的。假設樹的葉節點數為|t
| ,
t 是樹
t的葉節點,該葉節點上有nt
個樣本點,其中屬於
k 類的樣本點有nt
k個,ht
(t) 為葉節點的經驗熵,α≥
0 為引數。則決策樹學習的整體損失函式可以定義為: ca
(t)=
∑i=1
|t|n
tht(
t)+α
|t|
其中經驗熵ht
(t)=
−∑kn
tknt
logntk
nt,則第一項可以表示為: c(
t)=∑
i=1|
t|nt
ht(t
)=−∑
i=1|
t|∑k
ntklognt
knt
ca(t
)=c(
t)+α
|t|
其中c(t
) 表示模型對訓練資料的**誤差,|t
| 表示模型的複雜度,引數α≥
0 控制兩者之間的影響,當
α 較大時,促使模型變得簡單,α=
0 時表示模型損失函式只與訓練資料集擬合程度相關,與模型複雜度無關。
決策樹的剪枝,就是在
α 確定時,選擇損失函式最小的決策樹。當
α 確定時,子樹越大,模型複雜度越高,往往與訓練資料擬合越好,但是在未知資料集上表現可能會較差;相反,子樹越小,模型複雜度越低,訓練資料擬合不好,但是泛化能力好。
ps:
機器學習 十二 決策樹(上)
決策樹 decision tree 是在已知各種情況發生概率的基礎上,通過構成決策樹來求取淨現值的期望值大於等於零的概率,評價專案風險,判斷其可行性的決策分析方法,是直觀運用概率分析的一種 法。由於這種決策分支畫成圖形很像一棵樹的枝幹,故稱決策樹。在機器學習中,決策樹是乙個 模型,他代表的是物件屬性...
機器學習筆記 決策樹生成原理
決策樹是一種屬性結構的輔助決策工具。樹枝節點表示決策規則,也有叫屬性 樹葉節點表示結果,也有叫類別。自上而下由根節點依次延伸,根據屬性閾值不同延伸到不同的方向,到達下乙個屬性節點,並繼續延伸,直至最終的葉子節點,也就是分類完成。決策樹學習是一種逼近離散值目標函式的方法,該方法學習到的函式被表示為乙個...
機器學習 決策樹原理與應用
決策樹是一種基於規則的方法,它用一組巢狀的規則進行。在樹的每個決策節點處,根據判斷結果進入乙個分支,反覆執行這種操作直到到達葉子節點,得到 結果。這些規則是通過訓練得到的而不是人工制定的。一般將決策樹設計成二叉樹。與樹的葉子節點,非葉子節點相對應,決策樹的的節點,分為兩種型別。1 決策節點 在這些節...