【十大經典資料探勘演算法】系列
c4.5
k-means
svmapriori
empagerank
adaboost
knnnaïve bayes
cart
分類與回歸樹(classification and regression trees, cart)是由四人幫leo breiman, jerome friedman, richard olshen與charles stone於2023年提出,既可用於分類也可用於回歸。本文將主要介紹用於分類的cart。cart被稱為資料探勘領域內里程碑式的演算法。
不同於c4.5,cart本質是對特徵空間進行二元劃分(即cart生成的決策樹是一棵二叉樹),並能夠對標量屬性(nominal attribute)與連續屬性(continuous attribute)進行**。
前一篇提到過決策樹生成涉及到兩個問題:如何選擇最優特徵屬性進行**,以及停止**的條件是什麼。
cart對特徵屬性進行二元**。特別地,當特徵屬性為標量或連續時,可選擇如下方式**:
an instance goes left if condition, and goes right otherwise即樣本記錄滿足condition則**給左子樹,否則則**給右子樹。
標量屬性
進行**的condition可置為不等於屬性的某值
;比如,標量屬性car type
取值空間為,二元**與多路**如下:
連續屬性
condition可置為不大於
ε」 role=」presentation」 style=」position: relative;」>ε
ε取屬性相鄰值的平均值,其二元**結果如下:
接下來,需要解決的問題:應該選擇哪種特徵屬性及定義condition,才能分類效果比較好。cart採用gini指數來度量**時的不純度,之所以採用gini指數,是因為較於熵而言其計算速度更快一些。對決策樹的節點
t」 role=」presentation」 style=」position: relative;」>t
t,gini指數計算公式如下:
(1)gini(t)=1−∑k[p(ck|t)]2」 role=」presentation」 style=」width: 100%; position: relative;」>gin
i(t)
=1−∑
k[p(
ck|t
)]2(1)
(1)gini(t)=1−∑k[p(ck|t)]2
\begin gini(t)=1-\sum\limits_[p(c_k|t)]^2
gini指數即為
1」 role=」presentation」 style=」position: relative;」>1
1;**後的gini指數定義如下:
(2)g(d,a)=|dl||d|gini(dl)+|dr||d|gini(dr)」 role=」presentation」 style=」width: 100%; position: relative;」>g(d
,a)=
|dl|
|d|g
ini(
dl)+
|dr|
|d|g
ini(
dr)(2)
(2)g(d,a)=|dl||d|gini(dl)+|dr||d|gini(dr)
\begin g(d,a)= \right| \over \left| \right|}gini(d_l)+ \right| \over \left| \right|}gini(d_r)
其中,|⋅|」 role=」presentation」 style=」position: relative;」>|⋅|
|⋅|表示樣本集合的記錄數量。
cart演算法流程與c4.5演算法相類似:
若滿足停止**條件(樣本個數小於預定閾值,或gini指數小於預定閾值(樣本基本屬於同一類,或沒有特徵可供**),則停止**;
否則,選擇最小gini指數進行**;
遞迴執行1-2步驟,直至停止**。
cart剪枝與c4.5的剪枝策略相似,均以極小化整體損失函式實現。同理,定義決策樹
t」 role=」presentation」 style=」position: relative;」>t
t的損失函式為:
(3)lα(t)=c(t)+α|t|」 role=」presentation」 style=」width: 100%; position: relative;」>lα(
t)=c
(t)+
α|t|
(3)(3)lα(t)=c(t)+α|t|
\begin l_\alpha (t)=c(t)+\alpha \left| t \right|
其中,c(t)」 role=」presentation」 style=」position: relative;」>c(t
)c(t)
為模型的複雜度。
cart演算法採用遞迴的方法進行剪枝,具體辦法:
如何計算最優子樹為
ti」 role=」presentation」 style=」position: relative;」>titi
為單節點的損失函式為
lα(t)=c(t)+α」 role=」presentation」 style=」position: relative;」>lα(
t)=c
(t)+
αlα(t)=c(t)+α
l_\alpha (t)=c(t)+\alpha 以
t」 role=」presentation」 style=」position: relative;」>t
t的損失函式為
lα(tt)=c(tt)+α|tt|」 role=」presentation」 style=」position: relative;」>lα(
tt)=
c(tt
)+α|
tt|lα(tt)=c(tt)+α|tt|
l_\alpha (t_t)=c(t_t)+\alpha \left| t_t \right| 令
lα(t)=lα(tt)」 role=」presentation」 style=」position: relative;」>lα(
t)=l
α(tt
)lα(t)=lα(tt)
,則得到
α=c(t)−c(tt)|tt|−1」 role=」presentation」 style=」position: relative;」>α=c
(t)−
c(tt
)|tt
|−1α=c(t)−c(tt)|tt|−1
\alpha =
此時,單節點
t」 role=」presentation」 style=」position: relative;」>t
t的剪枝後整體損失函式減少程度為
g(t)=c(t)−c(tt)|tt|−1」 role=」presentation」 style=」position: relative;」>g(t
)=c(
t)−c
(tt)
|tt|
−1g(t)=c(t)−c(tt)|tt|−1
g(t) =
剪枝流程如下:
關於cart剪枝演算法的具體描述請參看[1],其中關於剪枝演算法的描述有誤:
(6)如果t不是由根節點單獨構成的樹,則回到步驟(4)應改為
回到步驟(3)
,要不然所有
α」 role=」presentation」 style=」position: relative;」>α
α均一樣了。
———————————————–update ——————————————————
李航老師已經在勘誤表給出修改了。
[1] 李航,《統計學習方法》.
[2] pang-ning tan, michael steinbach, vipin kumar, introduction to data mining.
[3] dan steinberg, the top ten algorithms in data mining.
CART回歸樹與分類樹
輸出是連續變數的是回歸樹,輸出是離散變數的是分類樹。cart決策樹是乙個二叉樹。輸入空間劃分為m個單元 單元對應輸出 是其對應的輸入空間。輸出取 上所有輸出的均值 下面,看輸入空間的劃分方法。假設最優切分變數 最優切分點 輸入空間被劃分為兩部分 它們的輸出是各自輸入空間中樣本標籤值 的均值和 因此,...
CART分類回歸樹
cart分類回歸樹1984年提出,id3演算法1986年提出,c4.5演算法1993年提出 cart由特徵選擇 樹的生成及剪枝組成。cart假設決策樹是二叉樹,內部結點特徵取值為是和否 cart使用損失函式最小作為剪枝的標準。回歸樹的生成 使用平方誤差最小化準則。對於任意劃分特徵a,對應的任意劃分點...
CART分類和回歸樹
cart演算法根據類標號屬性的型別,當類標號屬性是連續型時,生成的模型是回歸樹 離散型則是分類樹。不同於id3演算法可以產生多個分支,cart每次 只能產生兩個分支,所以cart產生的決策樹是一棵二叉樹。雜度 不純度 gini t 1 各類數量在資料集中的概率 的平方和。標準問題集 所有候選分支方案...