c4.5演算法對id3做了改進,使用資訊增益比來選擇特徵
資訊增益比計算公式:
g r(
d,a)
=g(d
,a)h
(d
)g_r(d, a) = \frac
gr(d,
a)=h
(d)g
(d,a
)訓練資料集d
特徵集a
閾值ϵ
\epsilon
ϵ決策樹t
過程與id3決策樹的生成演算法完全相同。
除了在第3步中使用資訊增益比來選擇特徵。
def
grda
(x, y, feature)
:# 計算x的每個特徵可取到的值
a =set(x[
:,feature]
)# 計算資料集的經驗熵
hd = h(y)
# 計算特徵a對資料集d的經驗條件熵h(d|a)
hda =
0for value in a:
ydi = y[x[
:,feature]
==value]
hda += ydi.shape[0]
/y.shape[0]
* h(ydi)
return
(hd - hda)
/hddef
c45(x, y, epsilon)
:# 若d中所有例項屬於同一類
iflen
(set
(y))==1
:# 將類$$c_k$$作為該結點的類標記
return y[0]
# 若$$a=\emptyset$$
if x.shape[1]
==0:# 例項數最大的類$$c_k$$作為該結點的類標記
return multi(y)
bestinfo =
0# 計算a中各個特徵對d的資訊增益
for feature in
range
(x.shape[1]
):info = grda(x, y, feature)
# 選擇資訊特徵最大的ag
if svm(x, y, feature)
> bestinfo:
bestinfo = info
bestfeature = feature
# 如果ag的資訊增益小於閾值$$\epsilon$$
if bestinfo < epsilon:
# 將d中例項數最大的類$$c_k$$作為該結點的類標記
return multi(y)
feature = bestfeature
ret =
# 對ag的每乙個可能的值ai
a =set(x[
:, feature]
)for ai in a:
yai = y[x[
:,feature]
== ai]
xai = x[x[
:,feature]
== ai]
ret[ai]
= c45(xai, yai, epsilon)
return ret
決策樹 C4 5演算法
c4.5演算法是用於生成決策樹的的一種經典演算法,是id3演算法的一種延伸和優化。改進了點 1 通過資訊增益率選擇 屬性,克服了id3演算法中通過資訊增益傾向於選擇擁有多個屬性值的屬性作為 屬性的不足 2 能夠處理離散型和連續型的屬性型別,即將連續型的屬性進行離散化處理 3 構造決策樹之後進行剪枝操...
決策樹之C4 5演算法
c4.5演算法是機器學習中的乙個重要的決策樹演算法,它是對id3演算法的改進,相對於id3演算法主要有以下幾個改進 1 用資訊增益率來選擇屬性 2 在決策樹的構造過程中對樹進行剪枝 3 對非離散資料也能處理 4 能夠對不完整資料進行處理 接下來分別詳細講述這幾點的改進方案 1 用資訊增益率來選擇屬性...
C4 5決策樹演算法思想
前幾天有小夥伴問到這個演算法,於是想總結一下好了,畢竟是乙個如此著名的演算法,這裡就重在思想啦 建議配合實際例子學習。參考 1 周志華 機器學習 2 決策樹 decision tree 是在已知各種情況發生概率的基礎上,通過構成決策樹來評價專案風險,判斷其可行性的決策分析方法,是直觀運用概率分析的一...