监督学习 | CART 分类回归树原理
文章目錄
- CART 算法
- 1. CART 生成
- 1.1 回歸樹生成
- 最小二乘回歸樹生成算法
- 1.2 分類樹生成
- 基尼指數
- CART 生成算法
- 參考文獻
相關文章:
機器學習 | 目錄
監督學習 | ID3 決策樹原理及Python實現
監督學習 | ID3 & C4.5 決策樹原理
監督學習 | 決策樹之Sklearn實現
監督學習 | 決策樹之網絡搜索
本文大部分內容搬運自李航老師的《統計學習方法》[1],以給出決策樹算法較為完整的定義,關于決策樹算法的 Sklearn 實現,可以參考這篇文章。
CART 算法
分類與回歸樹(classification and regression tree, CART)模型由 Beriman 等人在 1984 年提出,是應用廣泛的決策樹學習方法,CART 同樣由特征選擇、樹的生成及剪枝組成,既可以用于分類也可以用于回歸,以下將用于分類與回歸的樹統稱為決策樹。
CART 是在給定輸入隨機變量 X 條件下輸出隨機變量 Y 的條件概率分布的學習方法。CART 假設決策樹是二叉樹,內部結點特征的取值為“是”和“否”,左分支是取值為“是”的分支,右分支是取值為“否”的分支。這樣的決策樹等價于遞歸地二分每個特征,將輸入空間即特征空間劃分為有限個單元,并在這些單元上確定預測的概率分布,也就是在輸入給定的條件下輸出的條件概率分布。
CART 算法由以下兩部組成:
(1)決策樹生成:基于訓練數據集生成決策樹,生成的決策樹要盡量大;
(2)決策樹剪枝:用驗證數據集對已生成的樹進行剪枝并選擇最優子樹,這是用損失函數最小作為剪枝的標準。
1. CART 生成
決策樹的生成就是遞歸地構建二叉決策樹的過程。對回歸樹用平方誤差最小化準則,對分類樹用基尼指數(Gini index)最小化準則,進行特征選擇,生成二叉樹。
1.1 回歸樹生成
假設 XXX 與 YYY分別是輸入和輸出變量,并且 YYY 是連續變量,給定訓練數據集:
D={(x1,y1),(x2,y2),...,(xN,yN)}D=\{(x_1,y_1),(x_2,y_2),...,(x_N,y_N)\}D={(x1?,y1?),(x2?,y2?),...,(xN?,yN?)}
一個回歸樹對應著輸入空間(即特征空間)的一個劃分以及在劃分的單元上的輸出值。假設已將輸入空間劃分為 MMM 個單元 R1,R2,...,RMR_1,R_2,...,R_MR1?,R2?,...,RM? 并且在每個單元 RmR_mRm? 上有一個固定的輸出值 CmC_mCm?,于是回歸樹模型可表示為:
f(x)=∑m=1McmI(x∈Rm)(1)f(x)=\sum_{m=1}^M c_mI(x \in R_m) \tag{1}f(x)=m=1∑M?cm?I(x∈Rm?)(1)
當輸入空間的劃分確定時,可以用平方誤差 ∑xi∈Rm(yi?f(xi))2\sum_{x_i\in R_m}(y_i-f(x_i))^2∑xi?∈Rm??(yi??f(xi?))2 來表示回歸樹對于訓練數據的預測誤差,用平方誤差最小的準則求解每個單元上的最優輸出值。
因此,單元 RmR_mRm? 上的 cmc_mcm? 的最優值 c^m\hat{c}_mc^m? 是 RmR_mRm? 上所有輸入實例 xix_ixi? 對應的輸出 yiy_iyi? 的均值,即:
c^m=ave(yi∣xi∈Rm)(2)\hat{c}_m = ave(y_i|x_i \in R_m) \tag{2}c^m?=ave(yi?∣xi?∈Rm?)(2)
這里采用啟發式的方法對輸入空間進行劃分:選擇第 jjj 個變量 x(j)x^{(j)}x(j) 和它取的值 sss,作為切分變量(splitting variable)和切分點(splitting point),并定義兩個區域:
R1(j,s)={x∣x(j)≤s}和R2(j,s)={x∣x(j)>s}(3)R_1(j,s)=\{x|x^{(j)}\leq s\} \quad 和 \quad R_2(j,s)=\{x|x^{(j)}> s\} \tag{3}R1?(j,s)={x∣x(j)≤s}和R2?(j,s)={x∣x(j)>s}(3)
然后尋找最優切分變量 jjj 和最優切分點 sss:
min?j[min?cj∑xi∈R1(j,s)(yi?c1)2+min?cj∑xi∈R2(j,s)(yi?c2)2](4)\min \limits_{j}\bigg[ \min \limits_{c_j} \sum_{x_i\in R_1(j,s)}(y_i-c_1)^2 + \min \limits_{c_j} \sum_{x_i\in R_2(j,s)}(y_i-c_2)^2 \bigg] \tag{4}jmin?[cj?min?xi?∈R1?(j,s)∑?(yi??c1?)2+cj?min?xi?∈R2?(j,s)∑?(yi??c2?)2](4)
對固定輸入變量 jjj 可以找到最優切分點 sss。
因此有:
c^1=ave(yi∣xi∈R1(j,s))和c^2=ave(yi∣xi∈R2(j,s))(5)\hat{c}_1=ave(y_i|x_i\in R_1(j,s)) \quad 和 \quad \hat{c}_2=ave(y_i|x_i\in R_2(j,s)) \tag{5}c^1?=ave(yi?∣xi?∈R1?(j,s))和c^2?=ave(yi?∣xi?∈R2?(j,s))(5)
遍歷所有輸入變量,找到最優的切分變量 jjj,構造一個對 (j,s)(j,s)(j,s)。依次將輸入空間劃分為兩個區域。接著,最每個區域重復上述劃分過程,直到滿足停止條件為止,這樣就生成一顆回歸樹。這樣的回歸樹通常稱為最小二乘回歸樹(least squares regression tree)。
最小二乘回歸樹生成算法
輸入:訓練數據集 DDD;
輸出:回歸樹 f(x)f(x)f(x).
在訓練數據集所在的輸入空間中,遞歸地將每個區域劃分為兩個子區域并決定每個子區域熵的輸出值,構建二叉決策樹;
(1)選擇最優切分變量 jjj 和最優切分點 sss,求解:
min?j[min?cj∑xi∈R1(j,s)(yi?c1)2+min?cj∑xi∈R2(j,s)(yi?c2)2](6)\min \limits_{j}\bigg[ \min \limits_{c_j} \sum_{x_i\in R_1(j,s)}(y_i-c_1)^2 + \min \limits_{c_j} \sum_{x_i\in R_2(j,s)}(y_i-c_2)^2 \bigg] \tag{6}jmin?[cj?min?xi?∈R1?(j,s)∑?(yi??c1?)2+cj?min?xi?∈R2?(j,s)∑?(yi??c2?)2](6)
\quad 遍歷變量 jjj,對固定的切分變量 jjj 掃描切分點 sss,選擇使上式達到最小的對 (j,s)(j,s)(j,s);
(2)用選定的對 (j,s)(j,s)(j,s) 劃分區域并決定相應的輸出值:
R1(j,s)={x∣x(j)≤s}R2(j,s)={x∣x(j)>s}(7)R_1(j,s)=\{x|x^{(j)}\leq s\} \quad R_2(j,s)=\{x|x^{(j)}> s\} \tag{7}R1?(j,s)={x∣x(j)≤s}R2?(j,s)={x∣x(j)>s}(7)
c^m=1Nm∑xi∈Rm(j,s)yi,x∈Rm,m=1,2(8)\hat{c}_m=\frac{1}{N_m} \sum_{x_i \in R_m(j,s)}y_i,\quad x\in R_m,\quad m=1,2 \tag{8}c^m?=Nm?1?xi?∈Rm?(j,s)∑?yi?,x∈Rm?,m=1,2(8)
(3)繼續對兩個子區域調用步驟 (1),(2),直至滿足停止條件;
(4)將輸入空間劃分為 MMM 個單元 R1,R2,...,RMR_1,R_2,...,R_MR1?,R2?,...,RM? ,生成決策樹:
f(x)=∑m=1McmI(x∈Rm)(9)f(x)=\sum_{m=1}^M c_mI(x \in R_m) \tag{9}f(x)=m=1∑M?cm?I(x∈Rm?)(9)
1.2 分類樹生成
分類樹用基尼指數選擇最優特征,同時決定該特征的最優二值切分點。
基尼指數
分類問題中,假設有 KKK 個類,樣本點屬于第 kkk 類的概率為 pkp_kpk?,則概率分布的基尼指數定義為:
Gini(p)=∑k=1Kpk(1?pk)=1?∑k=1Kpk2(10)Gini(p)=\sum_{k=1}^Kp_k(1-p_k)=1-\sum_{k=1}^Kp_k^2 \tag{10}Gini(p)=k=1∑K?pk?(1?pk?)=1?k=1∑K?pk2?(10)
對于二類分類問題,若樣本點屬于第 1 個類的概率是 ppp,則概率分布的基尼指數為:
Gini(p)=2p(1?p)(11)Gini(p)=2p(1-p) \tag{11}Gini(p)=2p(1?p)(11)
對于給定的樣本集合 DDD,其基尼指數為:
Gini(D)=1?∑k=1K(∣Ck∣∣D∣)2(12)Gini(D)=1-\sum_{k=1}^K\bigg(\frac{|C_k|}{|D|} \bigg)^2 \tag{12}Gini(D)=1?k=1∑K?(∣D∣∣Ck?∣?)2(12)
這里,CkC_kCk? 是 DDD 中屬于第 kkk 類的樣本子集,KKK 是類的個數。
如果樣本集合 DDD 根據特征 AAA 是否取某一可能值 α\alphaα 被分割成 D1D_1D1? 和 D2D_2D2? 來那個部分,即:
D1={(x,y)∈D∣A(x)=a},D2=D?D1(13)D_1=\{(x,y)\in D|A(x)=a\}, \quad D_2=D-D_1 \tag{13}D1?={(x,y)∈D∣A(x)=a},D2?=D?D1?(13)
則在特征 AAA 的條件下,集合 DDD 的基尼指數定義為:
Gini(D,A)=∣D1∣∣D∣Gini(D1)+∣D2∣∣D∣Gini(D2)(14)Gini(D,A)=\frac{|D_1|}{|D|}Gini(D_1)+\frac{|D_2|}{|D|}Gini(D_2) \tag{14}Gini(D,A)=∣D∣∣D1?∣?Gini(D1?)+∣D∣∣D2?∣?Gini(D2?)(14)
基尼指數 Gini(D)Gini(D)Gini(D) 表示集合 DDD 的不確定性,基尼指數值越大,樣本集合的不確定性也就越大,這一點與熵相似。
CART 生成算法
輸入:訓練數據集 DDD,停止計算的條件;
輸出:CART 分類決策樹。
根據訓練數據集,從根結點開始,遞歸地對每個結點進行以下操作,構建二叉決策樹:
(1)設結點的訓練數據集為 DDD,計算現有特征對該數據集的基尼指數。此時,對每一個特征 AAA,對其可能取的每個值 aaa,根據樣本點對 A=aA=aA=a 的測試為“是”或“否”將 DDD 分割成 D1D_1D1? 和 D2D_2D2?兩部分,利用式 (14) 計算 A=aA=aA=a 時的基尼指數;
(2)在所有可能的特征 AAA 以及它們所有可能的切分點 aaa 中,選擇基尼指數最小的特征及其對應的切分點作為最優特征與最優切分點。依最優特征與最優切分點,從現生成兩個子結點,將訓練數據集依特征分配到兩個子結點中去;
(3)對兩個子結點遞歸地調用 (1) ,(2),直到滿足停止條件;
(4)生成 CART 決策樹。
算法停止計算的條件是結點中的樣本個數小于預定閾值,或樣本集的基尼指數小于預定閾值(樣本基本屬于同一類),或者沒有更多特征。
參考文獻
[1] 李航. 統計學習方法[M]. 北京: 清華大學出版社, 2012: 55-66.
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的监督学习 | CART 分类回归树原理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 列表后移问题
- 下一篇: 一套完整的基于随机森林的机器学习流程(特