首先我們要知道,決策樹是根據訓練集構造乙個樹結構,每個分叉相當於一次判斷,每個葉子節點就是模型的輸出。如下圖所示:
以輸入特徵為離散值的分類決策樹為例,周志華老師《機器學習》給出的演算法偽**:
決策樹分類演算法選擇最優屬性演算法常用資訊增益法。
首先了解資訊熵,它的公式如下:
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
2pk
其中,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的!既是分類樹,又可以做...