5 6 CART樹的生成

2021-10-04 20:23:23 字數 1950 閱讀 3538

輸入:

訓練資料集x,樣本標籤y

輸出:回歸樹f(x)

若d中所有例項屬於同一類c

kc_k

ck​,則t為單結點樹,並將類c

kc_k

ck​作為該結點的類標記,返回t

對每個特徵feature的每個取值value,將y分為r

1r_1

r1​和r

2r_2

r2​兩個集合,因為現在還不是真正的split,只是要計算split後的基尼指數,只需要用到split之後的y

y 1(

feat

ure,

valu

e)=y

2(fe

atur

e,va

lue)

=y_1(feature, value) = \ \le value\} \\ y_2(feature, value) = \ \gt value\}

y1​(fe

atur

e,va

lue)

=y2​

(fea

ture

,val

ue)=

計算y

1y_1

y1​和y

2y_2

y2​的基尼指數之和 gin

i(p)

=∑kp

k(1−

pk)=

1−∑k

pk

2gini(p) = \sum^k p_k(1-p_k) = 1 - \sum^kp_k^2

gini(p

)=∑k

​pk​

(1−p

k​)=

1−∑k

​pk2

​ 選擇基尼指數計算結果最小的(feature, value)作為當前的最優劃分

基於最優劃分生成2個子結點,將資料分配到兩個子結點中

對子結點遞迴呼叫cart演算法

def

gini

(y):

yset =

set(y)

ret, n =

1, y.shape[0]

for yi in yset:

ret -=

(y[y==yi]

.shape[0]

/n)**

2return ret

defcart

(x, y)

:# 若d中所有例項屬於同一類$$c_k$$

iflen

(set

(y))==1

:# 將類$$c_k$$作為該結點的類標記

return y[0]

bestgini = np.inf

# 對每個特徵feature的每個取值value

for feature in

range

(x.shape[1]

):for value in

set(x[

:,feature]):

# 將x分為$$r_1$$和$$r_2$$兩個集合

y1 = y[x[

:,feature]

<= value]

y2 = y[x[

:,feature]

> value]

# 計算$$r_1$$和$$r_2$$的基尼指數之和

sumgini = gini(y1)

+ gini(y2)

# 選擇基尼指數計算結果最小的(feature, value)作為當前的最優劃分

if sumgini < bestgini:

bestfeature, bestvalue, bestgini = feature, value, sumgini

# 基於最優劃分生成2個子結點,將資料分配到兩個子結點中

node =

return node

二叉樹剪枝 決策樹,生成剪枝,CART演算法

決策樹 1.原理 1.1模型簡介 決策樹是一種基本的回歸和分類演算法。在分類問題中,可以認為是一系列 if then 規則的幾何。決策樹學通常包括三個步驟 特徵選擇,決策樹的生成,決策樹的修剪。定義 決策樹由結點和有向邊組成,內部節點表示乙個特徵和屬性,葉子 結點表示乙個類。性質 決策樹路徑 或者對...

分類回歸樹 CART 的快速理解

回歸樹 回歸樹是乙個回歸模型,模型具有二叉樹結構。實際思想就是將特徵空間劃分為若干個子空間,並計算每個子空間內樣本標註的均值。時,只需判斷樣本落入哪個子空間,其對應的子空間標註均值即是其 值。如何劃分特徵空間?以連續性特徵空間為例,要選擇合適的特徵維度和合適的劃分點。具體方法就是遍歷所有的特徵維度和...

決策樹CART的python實現

cart演算法只做二元切分,因此每個樹節點包含待切分的特徵,待切分的特徵值,左子樹,右子樹。import numpy as np class treenode object def init self,feat,val,right,left featuretospliton feat valueof...