【西瓜書筆記】3. 決策樹

西風瘦馬1912發表於2020-12-06

3.1 決策樹基本流程

一顆決策樹包括:

  1. 根節點:包含樣本全集
  2. 若干內部節點:對應屬性測試
  3. 若干葉子結點:對應決策結果
  4. 結點包含的樣本集合根據屬性測試劃分到子節點中國

基本流程遵循分而治之

虛擬碼:

在這裡插入圖片描述
【來源:花書page74】

決策樹演算法是典型的遞迴演算法。三種遞迴返回情況:

  1. 當前節點包含的樣本權屬同一個類別,無需劃分
  2. 當前屬性集為空,或者所有樣本屬性相同,無法劃分。標記當前結點為葉子結點,類別設定為該節點所含樣本最多的類別。實質上利用當前結點的後驗分佈
  3. 當前結點包含的樣本集合為空,不能劃分。標記當前結點為葉子結點,將其類別設定為父節點所含樣本最多的類別。實質上利用父節點的樣本分佈作為當前結點的先驗分佈。

後驗概率 ∝ \propto 可能性 × \times × 先驗概率

3.2 劃分選擇

劃分標準是能不斷提高提高結點純度

3.2.1 ID3決策樹

3.2.1.1 資訊熵

定義:度量樣本集合純度最常用的一種指標,其定義如下
Ent ⁡ ( D ) = − ∑ k = 1 ∣ Y ∣ p k log ⁡ 2 p k \operatorname{Ent}(D)=-\sum_{k=1}^{|\mathcal{Y}|} p_{k} \log _{2} p_{k} Ent(D)=k=1Ypklog2pk
其中 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , … ( x m , y m ) } D=\left\{\left(\boldsymbol{x}_{1}, y_{1}\right),\left(\boldsymbol{x}_{2}, y_{2}\right), \ldots\left(\boldsymbol{x}_{m}, y_{m}\right)\right\} D={(x1,y1),(x2,y2),(xm,ym)}表示樣本集合, ∣ y ∣ |y| y表示樣本類別綜述, p k p_k pk表示第k類樣本所佔的比例,且有 0 ≤ p k ≤ 1 , ∑ k = 1 ∣ Y ∣ p k = 1 0 \leq p_{k} \leq 1, \sum_{k=1}^{|\mathcal{Y}|} p_{k}=1 0pk1,k=1Ypk=1. 而且 E n t ( D ) Ent(D) Ent(D)值越小,純度越高。為了具體量化純度高低,也就是什麼樣的情況下的取值純度高,什麼情況下純度低,我們要先求出資訊熵的最大最小值。

證明: 0 ≤ Ent ⁡ ( D ) ≤ log ⁡ 2 ∣ Y ∣ 0 \leq \operatorname{Ent}(D) \leq \log _{2}|\mathcal{Y}| 0Ent(D)log2Y

第一步,我們先求資訊熵的最大值。

∣ Y ∣ = n , p k = x k |\mathcal{Y}|=n, p_{k}=x_{k} Y=n,pk=xk,那麼資訊熵 Ent ⁡ ( D ) \operatorname{Ent}(D) Ent(D)就可以看成是一個 n n n元實值函式:
Ent ⁡ ( D ) = f ( x 1 , … , x n ) = − ∑ k = 1 n x k log ⁡ 2 x k \operatorname{Ent}(D)=f\left(x_{1}, \ldots, x_{n}\right)=-\sum_{k=1}^{n} x_{k} \log _{2} x_{k} Ent(D)=f(x1,,xn)=k=1nxklog2xk
其中 0 ≤ x k ≤ 1. ∑ k = 1 n x k = 1 0 \leq x_{k} \leq 1 . \sum_{k=1}^{n} x_{k}=1 0xk1.k=1nxk=1,下面考慮求該多元函式的最值。

如果不考慮約束 0 ≤ x k ≤ 1 0 \leq x_{k} \leq 1 0xk1僅考慮 ∑ k = 1 n x k = 1 \sum_{k=1}^{n} x_{k}=1 k=1nxk=1的話,對 f ( x 1 , … , x n ) f\left(x_{1}, \ldots, x_{n}\right) f(x1,,xn)求最大值等價於求如下最小化問題:
min ⁡ ∑ k = 1 n x k log ⁡ 2 x k  s.t.  ∑ k = 1 n x k = 1 \begin{aligned} \min \sum_{k=1}^{n} x_{k} \log _{2} x_{k} \\ \text { s.t. } \sum_{k=1}^{n} x_{k}=1 \end{aligned} mink=1nxklog2xk s.t. k=1nxk=1
顯然,在 0 ≤ x k ≤ 1 0 \leq x_{k} \leq 1 0xk1 時,此問題為凸優化問題。【因為我們同樣可以把目標函式看成是n個一元實值函式 x log ⁡ 2 x x\log_{2} x xlog2x相加和的結果。當x取值[0, 1]區間時, ( x log ⁡ 2 x ) ′ ′ > 0 \left(x \log _{2} x\right)^{\prime \prime} > 0 (xlog2x)>0,這就說明一元函式 x log ⁡ 2 x x\log_{2}x xlog2x在區間[0, 1]上是開口向上的凸函式。因此由n個這個一元函式組成的目標函式也是凸函式。現在的約束是線性函式約束,目標函式是凸函式,這就是凸優化問題。

而對於凸優化問題來說,滿足KKT條件的點就是最優解。由於此最小化問題僅含等式約束,那麼能令其拉格朗日函式的一階偏導數等於0的點即為滿足KKT條件的點。

因此根據拉格朗日乘子法,該優化問題的拉格朗日函式為:
L ( x 1 , … , x n , λ ) = ∑ k = 1 n x k log ⁡ 2 x k + λ ( ∑ k = 1 n x k − 1 ) L\left(x_{1}, \ldots, x_{n}, \lambda\right)=\sum_{k=1}^{n} x_{k} \log _{2} x_{k}+\lambda\left(\sum_{k=1}^{n} x_{k}-1\right) L(x1,,xn,λ)=k=1nxklog2xk+λ(k=1nxk1)
對拉格朗日函式分別關於各個引數求一階偏導,並令偏導數等於0可得
∂ L ( x 1 , … , x n , λ ) ∂ x 1 = ∂ ∂ x 1 [ ∑ k = 1 n x k log ⁡ 2 x k + λ ( ∑ k = 1 n x k − 1 ) ] = 0 = log ⁡ 2 x 1 + x 1 ⋅ 1 x 1 ln ⁡ 2 + λ = 0 = log ⁡ 2 x 1 + 1 ln ⁡ 2 + λ = 0 ⇒ λ = − log ⁡ 2 x 1 − 1 ln ⁡ 2 \begin{aligned} \frac{\partial L\left(x_{1}, \ldots, x_{n}, \lambda\right)}{\partial x_{1}} &=\frac{\partial}{\partial x_{1}}\left[\sum_{k=1}^{n} x_{k} \log _{2} x_{k}+\lambda\left(\sum_{k=1}^{n} x_{k}-1\right)\right]=0 \\ &=\log _{2} x_{1}+x_{1} \cdot \frac{1}{x_{1} \ln 2}+\lambda=0 \\ &=\log _{2} x_{1}+\frac{1}{\ln 2}+\lambda=0 \\ & \Rightarrow \lambda=-\log _{2} x_{1}-\frac{1}{\ln 2} \end{aligned} x1L(x1,,xn,λ)=x1[k=1nxklog2xk+λ(k=1nxk1)]=0=log2x1+x1x1ln21+λ=0=log2x1+ln21+λ=0λ=log2x1ln21
同理
λ = − log ⁡ 2 x 1 − 1 ln ⁡ 2 = − log ⁡ 2 x 2 − 1 ln ⁡ 2 = … = − log ⁡ 2 x n − 1 ln ⁡ 2 \lambda=-\log _{2} x_{1}-\frac{1}{\ln 2}=-\log _{2} x_{2}-\frac{1}{\ln 2}=\ldots=-\log _{2} x_{n}-\frac{1}{\ln 2} λ=log2x1ln21=log2x2ln21==log2xnln21

∂ L ( x 1 … . x n ⋅ λ ) ∂ λ = ∂ ∂ λ [ ∑ k = 1 n x k log ⁡ 2 x k + λ ( ∑ k = 1 n x k − 1 ) ] = 0 ⇒ ∑ k = 1 n x k = 1 \frac{\partial L\left(x_{1} \ldots . x_{n} \cdot \lambda\right)}{\partial \lambda}=\frac{\partial}{\partial \lambda}\left[\sum_{k=1}^{n} x_{k} \log _{2} x_{k}+\lambda\left(\sum_{k=1}^{n} x_{k}-1\right)\right]=0\\ \Rightarrow \sum_{k=1}^{n} x_{k}=1 λL(x1.xnλ)=λ[k=1nxklog2xk+λ(k=1nxk1)]=0k=1nxk=1
所以我們有
x 1 = x 2 = … = x n = 1 n x_{1}=x_{2}=\ldots=x_{n}=\frac{1}{n} x1=x2==xn=n1
又因為 0 ≤ x k ≤ 1 0 \leq x_{k} \leq 1 0xk1, 顯然 0 ≤ 1 n ≤ 1 0 \leq \frac{1}{n} \leq 1 0n11, 所以 x 1 = x 2 = … = x n = 1 n x_{1}=x_{2}=\ldots=x_{n}=\frac{1}{n} x1=x2==xn=n1是滿足所有約束條件的最優解,也就是當前最小化問題的最小值點,以及原函式 f ( x 1 , … , x n ) f\left(x_{1}, \ldots, x_{n}\right) f(x1,,xn)的最大值點。將最優解代入原函式 f f f中可得
f ( 1 n , … , 1 n ) = − ∑ k = 1 n 1 n log ⁡ 2 1 n = − n ⋅ 1 n log ⁡ 2 1 n = log ⁡ 2 n f\left(\frac{1}{n}, \ldots, \frac{1}{n}\right)=-\sum_{k=1}^{n} \frac{1}{n} \log _{2} \frac{1}{n}=-n \cdot \frac{1}{n} \log _{2} \frac{1}{n}=\log _{2} n f(n1,,n1)=k=1nn1log2n1=nn1log2n1=log2n
所以 f ( x 1 , … , x n ) f\left(x_{1}, \ldots, x_{n}\right) f(x1,,xn)在滿足約束 0 ≤ x k ≤ 1. ∑ k = 1 n x k = 1 0 \leq x_{k} \leq 1 . \sum_{k=1}^{n} x_{k}=1 0xk1.k=1nxk=1時的最大值為 log ⁡ 2 n \log_{2}n log2n

第二步,我們求 E n t ( D ) Ent(D) Ent(D)的最小值。

如果不考慮 ∑ k = 1 n x k = 1 \sum_{k=1}^{n} x_{k}=1 k=1nxk=1,僅考慮 0 ≤ x k ≤ 1 0 \leq x_{k} \leq 1 0xk1, f ( x 1 , … , x n ) f\left(x_{1}, \ldots, x_{n}\right) f(x1,,xn)可以看做是n個互不相關的一員函式的加和,也就是
f ( x 1 , … , x n ) = ∑ k = 1 n g ( x k ) g ( x k ) = − x k log ⁡ 2 x k , 0 ≤ x k ≤ 1 f\left(x_{1}, \ldots, x_{n}\right)=\sum_{k=1}^{n} g\left(x_{k}\right)\\ g\left(x_{k}\right)=-x_{k} \log _{2} x_{k}, \quad 0 \leq x_{k} \leq 1 f(x1,,xn)=k=1ng(xk)g(xk)=xklog2xk,0xk1
因此當 g ( x 1 ) , g ( x 2 ) , … , g ( x n ) g\left(x_{1}\right), g\left(x_{2}\right), \ldots, g\left(x_{n}\right) g(x1),g(x2),,g(xn)分別取到其最小值時, f ( x 1 , … , x n ) f\left(x_{1}, \ldots, x_{n}\right) f(x1,,xn)也就取到了最小值。由於 g ( x 1 ) , g ( x 2 ) , … , g ( x n ) g\left(x_{1}\right), g\left(x_{2}\right), \ldots, g\left(x_{n}\right) g(x1),g(x2),,g(xn)的定義域和函式表示式相同,所以只需要求出 g ( x 1 ) g(x_1) g(x1)的最小值,也就求出了 g ( x 1 ) , g ( x 2 ) , … , g ( x n ) g\left(x_{1}\right), g\left(x_{2}\right), \ldots, g\left(x_{n}\right) g(x1),g(x2),,g(xn)的最小值。為了求 g ( x 1 ) g(x_1) g(x1)的最小值,我們先求 g ( x 1 ) g(x_1) g(x1)關於與 x 1 x_1 x1的一階與二階導數
g ′ ( x 1 ) = d ( − x 1 log ⁡ 2 x 1 ) d x 1 = − log ⁡ 2 x 1 − x 1 ⋅ 1 x 1 ln ⁡ 2 = − log ⁡ 2 x 1 − 1 ln ⁡ 2 g ′ ′ ( x 1 ) = d ( g ′ ( x 1 ) ) d x 1 = d ( − log ⁡ 2 x 1 − 1 ln ⁡ 2 ) d x 1 = − 1 x 1 ln ⁡ 2 \begin{array}{c} g^{\prime}\left(x_{1}\right)=\dfrac{d\left(-x_{1} \log _{2} x_{1}\right)}{d x_{1}}=-\log _{2} x_{1}-x_{1} \cdot \dfrac{1}{x_{1} \ln 2}=-\log _{2} x_{1}-\dfrac{1}{\ln 2} \\ g^{\prime \prime}\left(x_{1}\right)=\dfrac{d\left(g^{\prime}\left(x_{1}\right)\right)}{d x_{1}}=\dfrac{d\left(-\log _{2} x_{1}-\dfrac{1}{\ln 2}\right)}{d x_{1}}=-\dfrac{1}{x_{1} \ln 2} \end{array} g(x1)=dx1d(x1log2x1)=log2x1x1x1ln21=log2x1ln21g(x1)=dx1d(g(x1))=dx1d(log2x1ln21)=x1ln21
顯然,當 0 ≤ x k ≤ 1 0 \leq x_{k} \leq 1 0xk1時, g ′ ′ g^{\prime \prime} g恆小於0,所以 g ( x 1 ) g(x_1) g(x1)是一個在其定義域範圍內開口向下的凹函式,那麼其最小值必然在邊界取,於是分別取 x 1 = 0 x_1=0 x1=0 x 1 = 1 x_1=1 x1=1,代入 g ( x 1 ) g(x_1) g(x1)可有
g ( 0 ) = − 0 log ⁡ 2 0 = 0 g ( 1 ) = − 1 log ⁡ 2 1 = 0 \begin{array}{l} g(0)=-0 \log _{2} 0=0 \\ g(1)=-1 \log _{2} 1=0 \end{array} g(0)=0log20=0g(1)=1log21=0
所以 g ( x 1 ) g(x_1) g(x1)的最小值是0,同理, g ( x 2 ) , … , g ( x n ) g\left(x_{2}\right), \ldots, g\left(x_{n}\right) g(x2),,g(xn)的最小值也為0, 那麼在約束條件 0 ≤ x k ≤ 1 0 \leq x_{k} \leq 1 0xk1下, f ( x 1 , … , x n ) f\left(x_{1}, \ldots, x_{n}\right) f(x1,,xn)的最小值此時也為0.如果加上約束條件 ∑ k = 1 n x k = 1 \sum_{k=1}^{n} x_{k}=1 k=1nxk=1,那麼 f ( x 1 , … , x n ) f\left(x_{1}, \ldots, x_{n}\right) f(x1,,xn)的最小值一定大於等於0. 如果令 x k = 1 x_{k}=1 xk=1,那麼根據約束 ∑ k = 1 n x k = 1 \sum_{k=1}^{n} x_{k}=1 k=1nxk=1可有 x 1 = x 2 = … = x k − 1 = x k + 1 = … = x n = 0 x_{1}=x_{2}=\ldots=x_{k-1}=x_{k+1}=\ldots=x_{n}=0 x1=x2==xk1=xk+1==xn=0,將其代入 f ( x 1 , … , x n ) f\left(x_{1}, \ldots, x_{n}\right) f(x1,,xn)
f ( 0 , 0 , … , 0 , 1 , 0 , … , 0 ) = − 0 log ⁡ 2 0 − 0 log ⁡ 2 0 … − 0 log ⁡ 2 0 − 1 log ⁡ 2 1 − 0 log ⁡ 2 0 … − 0 log ⁡ 2 0 = 0 f(0,0, \ldots, 0,1,0, \ldots, 0)=-0 \log _{2} 0-0 \log _{2} 0 \ldots-0 \log _{2} 0-1 \log _{2} 1-0 \log _{2} 0 \ldots-0 \log _{2} 0=0 f(0,0,,0,1,0,,0)=0log200log200log201log210log200log20=0
所以 x = 1 , x 1 = x 2 = … = x k − 1 = x k + 1 = … = x n = 0 x_=1, x_{1}=x_{2}=\ldots=x_{k-1}=x_{k+1}=\ldots=x_{n}=0 x=1,x1=x2==xk1=xk+1==xn=0一定是 f ( x 1 , … , x n ) f\left(x_{1}, \ldots, x_{n}\right) f(x1,,xn)在滿足約束 0 ≤ x k ≤ 1 , ∑ k = 1 n x k = 1 0 \leq x_{k} \leq 1 , \sum_{k=1}^{n} x_{k}=1 0xk1,k=1nxk=1的條件下的最小值點,最小值為0.

3.2.1.2 條件熵

定義: 在已知樣本屬性 a a a的取值情況下,度量樣本集合純度的一種指標
H ( D ∣ a ) = ∑ v = 1 V ∣ D v ∣ ∣ D ∣ Ent ⁡ ( D v ) H(D \mid a)=\sum_{v=1}^{V} \frac{\left|D^{v}\right|}{|D|} \operatorname{Ent}\left(D^{v}\right) H(Da)=v=1VDDvEnt(Dv)
其中 a a a表示樣本的某個屬性,假定屬性 a a a V V V個可能的取值 { a 1 , a 2 … , a V } \left\{a^{1}, a^{2} \ldots, a^{V}\right\} {a1,a2,aV}, 樣本集合 D D D中在屬性 a a a上取值為 a v a^{v} av的樣本記為 D v D^{v} Dv E n t ( D v ) Ent(D^{v}) Ent(Dv)表示樣本集合 D v D^{v} Dv的資訊熵。 H H H值越小,純度越高。

資訊增益:
Gain ⁡ ( D , a ) = Ent ⁡ ( D ) − ∑ v = 1 V ∣ D v ∣ ∣ D ∣ Ent ⁡ ( D v ) = Ent ⁡ ( D ) − H ( D ∣ a ) \begin{aligned} \operatorname{Gain}(D, a) &=\operatorname{Ent}(D)-\sum_{v=1}^{V} \frac{\left|D^{v}\right|}{|D|} \operatorname{Ent}\left(D^{v}\right) \\ &=\operatorname{Ent}(D)-H(D \mid a) \end{aligned} Gain(D,a)=Ent(D)v=1VDDvEnt(Dv)=Ent(D)H(Da)
選擇資訊增益值最大的屬性作為劃分屬性,因為資訊增益越大,該屬性用作劃分所獲得的的”純度提升“越大。【注意這裡的加和,對v加和是對a屬性中不同的取值加和,資訊熵中是對劃分後的樣本集合中的目標類別標籤加和

以資訊增益為劃分準則的ID3決策樹對可取值數目較多的屬性有所偏好
Gain ⁡ ( D , a ) = Ent ⁡ ( D ) − ∑ v = 1 V ∣ D v ∣ ∣ D ∣ Ent ⁡ ( D v ) = Ent ⁡ ( D ) − ∑ v = 1 V ∣ D v ∣ ∣ D ∣ ( − ∑ k = 1 ∣ Y ∣ p k log ⁡ 2 p k ) = Ent ⁡ ( D ) − ∑ v = 1 V ∣ D v ∣ ∣ D ∣ ( − ∑ k = 1 ∣ y ∣ ∣ D k v ∣ ∣ D v ∣ log ⁡ 2 ∣ D k v ∣ ∣ D v ∣ ) \begin{aligned} \operatorname{Gain}(D, a) &=\operatorname{Ent}(D)-\sum_{v=1}^{V} \frac{\left|D^{v}\right|}{|D|} \operatorname{Ent}\left(D^{v}\right) \\ &=\operatorname{Ent}(D)-\sum_{v=1}^{V} \frac{\left|D^{v}\right|}{|D|}\left(-\sum_{k=1}^{|\mathcal{Y}|} p_{k} \log _{2} p_{k}\right) \\ &=\operatorname{Ent}(D)-\sum_{v=1}^{V} \frac{\left|D^{v}\right|}{|D|}\left(-\sum_{k=1}^{|y|} \frac{\left|D_{k}^{v}\right|}{\left|D^{v}\right|} \log _{2} \frac{\left|D_{k}^{v}\right|}{\left|D^{v}\right|}\right) \end{aligned} Gain(D,a)=Ent(D)v=1VDDvEnt(Dv)=Ent(D)v=1VDDvk=1Ypklog2pk=Ent(D)v=1VDDvk=1yDvDkvlog2DvDkv
其中 D k v D_{k}^{v} Dkv是樣本集合 D D D中在屬性 a a a上取值為 a v a^{v} av且類別為 k k k的樣本。

然後我們就可以把決策樹基本演算法的第8行選擇屬性設定為: a ∗ = arg ⁡ max ⁡ a ∈ A Gain ⁡ ( D , a ) a_{*}=\underset{a \in A}{\arg \max } \operatorname{Gain}(D, a) a=aAargmaxGain(D,a).

缺點:如果某個屬性的取值類別太多,就可能把每一個取值類別劃分後就導致每個分支節點的純度很高(只有一兩個樣本),雖然資訊增益很大,但是因為結點劃分太多,得到一個龐大且淺的樹,失去了泛化能力

3.2.2 C4.5決策樹

定義:以資訊增益率為準則來選擇劃分屬性的決策樹。為了解決ID3的缺點。

資訊增益率:
KaTeX parse error: Expected '}', got '_' at position 14: \text { Gain_̲ratio }(D, a)=\…
其中
I V ( a ) = − ∑ v = 1 V ∣ D v ∣ ∣ D ∣ log ⁡ 2 ∣ D v ∣ ∣ D ∣ \mathrm{IV}(a)=-\sum_{v=1}^{V} \frac{\left|D^{v}\right|}{|D|} \log _{2} \frac{\left|D^{v}\right|}{|D|} IV(a)=v=1VDDvlog2DDv
如果屬性a的可能取值數目越多,也就是V變大,那麼IV的值也變大。

缺點:資訊增益率對可取值數目較少的屬性有所偏好。無法處理迴歸問題、使用較為複雜的熵來作為特徵選擇的標準、生成的決策樹是一顆較為複雜的多叉樹結構

因此C4.5演算法並不是直接選擇增益率最大的候選劃分屬性,而是採用了一個啟發式:

  1. 先從候選屬性中找到資訊增益高於平均水平的屬性集合
  2. 再從這個屬性集合中選擇增益率最高的屬性

3.2.3 CART決策樹

3.2.3.1 定義:

以基尼指數為準則來選擇劃分屬性的決策樹

基尼值:
Gini ⁡ ( D ) = ∑ k = 1 ∣ Y ∣ ∑ k ′ ≠ k p k p k ′ = ∑ k = 1 ∣ Y ∣ p k ∑ k ′ ≠ k p k ′ = ∑ k = 1 ∣ Y ∣ p k ( 1 − p k ) = 1 − ∑ k = 1 ∣ Y ∣ p k 2 \operatorname{Gini}(D)=\sum_{k=1}^{|\mathcal{Y}|} \sum_{k^{\prime} \neq k} p_{k} p_{k^{\prime}}=\sum_{k=1}^{|\mathcal{Y}|} p_{k} \sum_{k^{\prime} \neq k} p_{k^{\prime}}=\sum_{k=1}^{|\mathcal{Y}|} p_{k}\left(1-p_{k}\right)=1-\sum_{k=1}^{|\mathcal{Y}|} p_{k}^{2} Gini(D)=k=1Yk=kpkpk=k=1Ypkk=kpk=k=1Ypk(1pk)=1k=1Ypk2
直觀來說,基尼值反映了從資料集 D D D中隨機抽取兩個樣本,其類別標記不一致的概率。

基尼指數:
KaTeX parse error: Expected '}', got '_' at position 14: \text { Gini_̲index }(D, a)=\…
基尼值和基尼指數越小,樣本集合純度越高。

3.2.3.2 CART決策樹分類演算法:

  1. 根據基尼指數公式找出基尼指數最小的屬性【虛擬碼演算法第8行變成 a ∗ = arg ⁡ min ⁡ a ∈ A G i n i i n d e x ⁡ ( D , a ) a_{*}=\underset{a \in A}{\arg \min } \operatorname{Gini_index}(D, a) a=aAargminGiniindex(D,a)
  2. 計算屬性 a ∗ a_{*} a的所有可能取值的基尼值 Gini ⁡ ( D v ) , v = 1 , 2 , … , V \operatorname{Gini}\left(D^{v}\right), v=1,2, \ldots, V Gini(Dv),v=1,2,,V, 選擇基尼指數最小的取值 a ∗ v a^{v}_{*} av作為劃分點,將集合 D D D劃分為 D 1 , D 2 D_1, D_{2} D1,D2兩個集合(分支結點),其中 D 1 D_1 D1集合的樣本為 a ∗ = a ∗ v a_{*}=a_{*}^{v} a=av的樣本, D 2 D_2 D2集合為 a ∗ ≠ a ∗ v a_{*} \neq a_{*}^{v} a=av
  3. 對集合 D 1 D_1 D1 D 2 D_2 D2重複遞迴步驟1,2,直到滿足停止條件

3.2.3.3 CART決策樹迴歸演算法:

  1. 根據以下公式找到最優劃分特徵 a ∗ a_{*} a和最優劃分點 a ∗ v a_{*}^{v} av

a ∗ , a ∗ ′ ′ = arg ⁡ min ⁡ a , a v [ min ⁡ c 1 ∑ x i ∈ D 1 ( a , a v ) ( y i − c 1 ) 2 + min ⁡ c 2 ∑ x , ∈ D 2 ( a , a v ) ( y i − c 2 ) 2 ] a_{*}, a_{*}^{\prime \prime}=\underset{a, a^{v}}{\arg \min }\left[\operatorname{min}_{c_{1}} \sum_{x_i \in D_{1}\left(a, a^{v}\right)}\left(y_{i}-c_{1}\right)^{2}+\min _{c_{2}} \sum_{x, \in D_{2}\left(a, a^{v}\right)}\left(y_{i}-c_{2}\right)^{2}\right] a,a=a,avargminminc1xiD1(a,av)(yic1)2+c2minx,D2(a,av)(yic2)2

其中, D 1 ( a , a v ) D_{1}\left(a, a^{v}\right) D1(a,av)表示在屬性 a a a上取值小於等於 a v a^{v} av的樣本集合, D 2 ( a , a v ) D_2(a, a^{v}) D2(a,av)表示在屬性 a a a上取值大於 a v a^{v} av的樣本集合, c 1 c_1 c1表示 D 1 D_1 D1的樣本輸出均值, c 2 c_2 c2表示 D 2 D_2 D2的樣本輸出均值

  1. 根據劃分點 a ∗ v a_{*}^{v} av將集合 D D D劃分為 D 1 D_1 D1 D 2 D_2 D2兩個集合(分支節點)
  2. 對集合 D 1 D_1 D1 D 2 D_2 D2重複遞迴步驟1,2,直到滿足停止條件

3.3 決策樹剪枝處理

剪枝是決策樹學習演算法對付過擬合的主要手段

3.3.1 預剪枝

在決策樹生成過程中,對每個結點在劃分前先進行估計,若當前結點的劃分不能帶來決策樹泛化效能提升,則停止劃分並將當前結點標註為葉結點。基於資訊增益準則

看是否提高在驗證集上的準確率

缺點:有些分支的當前劃分雖不能提升泛化效能,但是在其基礎上的後續劃分卻有可能導致效能提高。預剪枝基於貪心本質禁止這些分支繼續劃分,因此有可能導致模型欠擬合

3.3.2後剪枝

先從訓練集生成一顆完整的決策樹,然後自底向上地對非葉結點進行考察,若將該結點對應的子樹替換為葉結點能帶來決策樹泛化效能提升,則將子樹替換為葉子結點

缺點:時間複雜度比預剪枝更高

預剪枝後剪枝
時間開銷訓練 ↓ \downarrow , 測試 ↓ \downarrow 訓練 ↑ \uparrow , 測試 ↓ \downarrow
過/欠擬合風險 ↓ \downarrow , 欠 ↑ \uparrow ↓ \downarrow , 欠不變
泛化能力更好

3.4 決策樹處理連續值、缺失值

to be continued

相關文章