5-4 决策树 C4.5决策树的生成算法
Posted windmissing
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了5-4 决策树 C4.5决策树的生成算法相关的知识,希望对你有一定的参考价值。
C4.5的生成算法
C4.5算法对ID3做了改进,使用信息增益比来选择特征
信息增益比计算公式:
g
R
(
D
,
A
)
=
g
(
D
,
A
)
H
(
D
)
g_R(D, A) = \\fracg(D, A)H(D)
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 = 0
for value in a:
yDi = y[X[:,feature]==value]
HDA += yDi.shape[0]/y.shape[0] * H(yDi)
return (HD - HDA)/HD
def C45(X, y, epsilon):
# 若D中所有实例属于同一类
if len(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 = 'feature':feature
# 对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
以上是关于5-4 决策树 C4.5决策树的生成算法的主要内容,如果未能解决你的问题,请参考以下文章
决策树ID3决策树C4.5决策树CARTCART树的生成树的剪枝从ID3到CART从决策树生成规则决策树优缺点
决策树算法 CART和C4.5决策树有啥区别?各用于啥领域?