作者:桂。
時間:2017-05-13 14:19:14
鏈接:http://www.cnblogs.com/xingshansi/p/6847334.html
、
前言
內容主要是CART算法的學習筆記。
CART算法是一個二叉樹問題,即總是有兩種選擇,而不像之前的ID3以及C4.5B可能有多種選擇。CART算法主要有回歸樹和分類樹,二者常用的准則略有差別:回歸樹是擬合問題,更關心擬合效果的好壞,此處用的是均方誤差准則; 分類樹是分類問題,更像是離散變量的概率估計,用與熵類似的Gini系數進行度量。
一、CART算法——回歸樹
因為是回歸問題,只要抓住兩個要點就好:
1)如何切分;
2)切分后的不同區域,如何取值;
先來分析一下一次划分的操作:
A-回歸樹切分
選擇第j個變量和它的取值s,作為切分變量和切分點,並定義兩個區域:
通過尋找最小均方誤差點,實現切分:
B-回歸樹的輸出值
對固定輸入變量j找到最優切分點s,並定義各自區域均值為輸出變量:
C-回歸樹舉例
看一下習題中的例子:
數據的切分點分別為:1.5,2.5,3.5,4.5,5.5,6.5,7.5,8.5,9.5
從公式
可以看出輸出值c就是對應類別內y的均值。
當切分點選擇s = 2.5時,區域R1有:
c1 = (4.5+4.75)/2=4.625
區域R2有:
同樣c2 = 7.17
從而計算出s = 2.5對應的估計誤差:
不同的s切分點,對應的估計誤差不同,最后選擇最小誤差對應的切分點,這就完成了一次切分:
此時的c1,c2分別對應兩類輸出值。
假設s=6.5處實現了第一次划分,第二次就是分別在子區域進一步划分,如將:
進行二次切分,步驟思路與上面完全一致。
總結一下CART回歸樹的算法思路:
二、CART算法——分類樹
A-基尼系數
CART分類樹不再是基於信息增益,而是引入了Gini系數,給出基尼系數定義:
二分問題中Gini系數與熵之半的對比:
可以看出基尼系數與熵的特性類似,也是不確定性(信息量)的一種量度。
一方面,如果對於樣本集合D,基尼系數:
其中是D中屬於第k類的樣本子集,K是類的個數。
如果D被特征A划分為D1、D2兩部分,這個時候就是統計均值,D的基尼系數:
B-CART決策樹生成
CART決策樹的生成,抓住兩個基本要點:
1)基尼系數計算,確定二叉樹;
2)確定決策樹層次結構
舉例說明:
分別以表示年齡、有工作、有自己的房子、信貸情況。
對於A1是分為中年、老年、青年,計算基尼系數
A1、A3都可以,選擇A1,,即青年是一類,非青年(中年、老年)是一類,
有工作、有自己的房子,都是二分,可以不用切分。信貸情況A4:
最小,故選為最優切分點。
至此,完成了基尼系數計算以及二叉樹划分。下面確定決策樹層次結構:
由小到大,A3為最優切分點,依次在A1,A2,A4選擇,故選擇A2為次優切分點......依次類推。
給出決策樹生成算法:
主要分兩步走:
1)計算各種情況的基尼系數,划分每個節點的二叉樹;
2)根據基尼系數的大小,確定二叉樹不同節點的層次結構,形成決策樹。
三、CART樹剪枝
回歸樹(擬合問題)與決策樹都存在過擬合問題,防止過擬合(過渡細化)都需要剪枝的操作。
先來看看剪枝用到的准則函數:
關於C(T)之前文章有分析,它是葉節點特性的度量,C4.3里它是熵的均值,CART決策樹里它是基尼系數的概率均值,原理類似。多一個正則項,就是稀疏性約束。
ID3、C4.5算法中的剪枝原理是給定α,事實上很難一次給出理想的α。CART剪枝不再給定一個α,然后選擇最優決策樹,而是通過設定不同的α,通過交叉驗證選擇最優CART樹,也就是:
訓練集:得到不同的子樹;
測試集:交叉驗證選擇最優樹.
從有限個子樹中計算最優子樹,最優子樹由驗證集得出的測試誤差決定,哪個最小就是哪個。
這里就引出了一個問題,每次剪哪一個節點呢?先看分析剪枝的兩個極端情況:
1)完全沒剪:
2)只剩根節點:
在α較小或者為0時,有:
在α取+∞大時,有:
α是連續變量,因此總有臨界點:
為了不混淆變量,重新定義:
α大於g(t)就是該剪。簡而言之:
對於同一棵樹的結點,α都是一樣的,當α從0開始緩慢增大(或者從+∞慢慢減小),總會有某棵子樹該剪,其他子樹不該剪的情況,即α超過了某個結點的g(t),但還沒有超過其他結點的g(t)。這樣隨着alpha不斷增大,不斷地剪枝,就得到了n+1棵子樹,接下來只要用獨立數據集測試這n+1棵子樹,試試哪棵子樹的誤差最小 就知道那棵是最好的方案了。
給出CART剪枝算法:
原書的算法勘誤:
(4)修改為:
(6)修改為:
參考:
- 李航《統計學習方法》