決策樹(分類與回歸)

2021-09-29 16:08:21 字數 2350 閱讀 3238

首先我們要知道,決策樹是根據訓練集構造乙個樹結構,每個分叉相當於一次判斷,每個葉子節點就是模型的輸出。如下圖所示:

以輸入特徵為離散值的分類決策樹為例,周志華老師《機器學習》給出的演算法偽**:

決策樹分類演算法選擇最優屬性演算法常用資訊增益法。

首先了解資訊熵,它的公式如下:

e nt

(d)=

−∑k=

1∣y∣

pklo

g2pk

\right) } =- \limits_ } ^ \right| } } } } \nolimits_ } log\mathop } \nolimits_ } p\mathop } \nolimits_ } } } }

ent(d)

=−k=

1∑∣y

∣​pk

​log

2​pk

​其中,d為當前訓練樣本集合,集合中的真實值有|y|類。

從公式可見,資訊熵越小,集合的純度越高,如果資訊熵為0,那麼訓練集d是屬於同一類。

每一次樹的劃分的時候,需要以輸入的乙個特徵a *來對樹進行劃分,也就是說,劃分成的子數將不含特徵a *。對於去掉任意屬性a對樣本集d劃分的資訊增益可以用下式表示:

g ai

n(d,

a)=e

nt(d

)−∑v

=1∣v

∣∣dv

∣∣d∣

ent(

dv)\right) } \text =\text ent \right) } - \limits_ } ^ \right| } } } } \nolimits^ } } \right| } } } \right| } } } ent } \nolimits^ } } \right) } } } }

gain(d

,a)=

ent(

d)−v

=1∑∣

v∣​∣

d∣∣d

v∣​e

nt(d

v)其中,dv是d中在a屬性取值為v的樣本集合。

那麼我們如何選取當前節點劃分特徵呢?很顯然,應該把讓資訊熵變化最小的特徵去掉。舉個極端的例子,如果有乙個特徵的資訊熵為0,那麼利用這個特徵進行節點**就可以直接劃分出結果,所以這個特徵是優先被考慮的。所以在每次選劃分當前節點的時候,我們只需要去掉的特徵a *滿足:

a ∗=

argm

axa∈

agai

n(d,

a)} \nolimits_ } =\mathop } \limits_ } gain \right) } \text }

a∗​=a∈

aarg

max​

gain

(d,a

)其中,a為當前劃分節點剩餘的特徵集合。(如果輸入特徵為離散的屬性,則a的個數為特徵的維度)

決策樹求解回歸問題的方法有以下兩種: min

∑v=1

∣v∣∣

dv∣∣

d∣va

r(dv

)\limits_ } ^ \right| } } } } \nolimits^ } } \right| } } } \right| } } } var } \nolimits^ } } \right) } } } }

minv=1

∑∣v∣

​∣d∣

∣dv∣

​var

(dv)

​ 其中,dv是d中在某一屬性二分後的某一部分的樣本集合,由於是二分所以|v|=2。可以看出,此方法得到是輸出也是有限個離散的值。

給出此演算法的**節點的偽**:

input: i, instance set of current node

input: m, the number of feature

for k=1 to m do

for j in sort(i,by x[j,k]) do

il = i[0:j,:]

ir = i[j:-1,:]

splitscore = min(splitscore, var(il)+var(ir))

endendoutput il,ir

決策樹 分類 回歸

決策樹,主要用來分類和回歸 一 首先看下分類決策樹 載入鳶尾花資料集 from sklearn.datasets import load iris iris load iris x,y iris.data,iris.target features iris.feature names 載入交叉驗證莫...

決策樹 決策樹引數介紹(分類和回歸)

前面總結了資訊熵,資訊增益和基尼資訊的定義,以及決策樹三大演算法的原理及迭代過程,今天介紹下python中機器學習sklearn庫中決策樹的使用引數 決策樹既可以做分類,也可以做回歸,兩者引數大體相近,下面會先介紹分類,再對回歸不一樣的引數做單獨說明 1 criterion 特徵選取方法,可以是gi...

決策樹實現 分類與回歸樹(CART)

決策樹是一種很基礎而又重要的機器學習演算法,是眾多更高階演算法實現的基礎,比較famous的決策樹演算法有id3,c4.5和分類與回歸樹 classify and regression tree 要理解哪些更高階的演算法,對這些決策樹演算法有個好的理解是very useful的!既是分類樹,又可以做...