决策树

决策树是一种树形结构,其中的每个内部节点表示在一个属性上的测试,每个分支代表一个测试输出,每个叶节点代表一种类别。它是以实例为基础的归纳学习,采用自顶向下的递归方法,基本思想是以信息熵为度量构造一棵熵值下降最快的树,到叶子节点的熵值为零,此时每个叶节点中的实例都属于同一类。在学习过程中,仅需对训练实例做较好的标注,算法就能进行自学习,决策树算法的代码清晰,逻辑简单,在胜任分类问题的同时,往往也作为对数据分布探索的首要尝试算法。

建立决策树的关键,即在当前状态下选择的哪个属性作为分类依据,根据不同的目标函数建立决策树主要有以下三种算法。

ID3

ID3(Iterative Dichotomiser)是利用信息增益(互信息) g(D,A) 进行特征选择。

信息增益 g(D,A) 表示已知特征A使得数据集D的不确定性降低的程度。定义为集合D的经验熵与特征A给定下D的经验条件熵之差,即:

g(D,A)=H(D)H(D|A)

显然,数据集D与特征A的信息增益即为二者的互信息。

信息增益的计算方法:
1、计算数据集D的经验熵

H(D)=k=1K|Ck||D|log|Ck||D|

其中 , K 表示类别个数,|D|表示样本个数, Ck 表示第k类数据集样本个数。
2、遍历所有特征,对特征A:
1>计算特征A对数据集D的经验条件熵
H(D|A)=n=1N|Dn|Dk=1K|Dnk||Dn|log|Dnk||Dn|

其中 , N 表示特征A的取值个数,Dnk表示特征A取第n个值时属于第k类的数据集样本个数。
2>计算A的信息增益:
g(D,A)=H(D)H(D|A)

信息增益越大,表明属性对熵减少的能力越强,属性使数据由不确定性变为确定的能力越强,该特征则优先作为分裂属性。

C4.5

C4.5是利用信息增益率 gr(D,A)=g(D,A)/H(A) 做特征选择,同样,信息增益率越大的特征优先作为分裂属性。

CART

CART(Classification And Regression Tree)是利用基尼指数做特征选择,是通过优化熵来计算信息增益。
基尼指数使用 lnx x=1 处的一阶泰勒展开 1x 近似。
pk=|Ck||D|

H(D)=k=1Kpklogpkk=1Kpk(1pk)=1k=1Kp2k

同理可得到H(D|A),同样,基尼指数越大的特征优先作为分裂属性。

决策树的评价

通过对所有叶节点的熵求和,该值越小说明对样本的分类越精确。
由于各节点包含的样本数可能不同,所以也使用样本数加权求熵和。

评价函数:

C(t)=tleafNtH(t)

Nt 表示某一个叶节点的样本点, H(t) 表示该叶节点的熵值,该评价函数越小越好,所以也可以作为损失函数。

剪枝

有时候过多的考虑对训练样本的正确分类,会导致决策树过拟合,从而构建过于复杂的决策树。解决这个问题的办法是考虑决策树的复杂度,从而简化决策树。

在决策树学习中简化已生成的树的方法称为剪枝(pruning)。剪枝是在已生成的树上裁掉一些子树或叶节点。剪枝也分为前剪枝与后剪枝,前剪枝是在生成树之前就定义了树的高度,或单个叶节点样本个数或叶节点熵值。后剪枝是通过极小化决策树整体的损失函数来实现。

由于叶节点数越多表示决策树越复杂,于是对损失函数引入剪枝系数 α 做修正:

Cα(t)=tleafNtH(t)+α|Tleaf|

Tleaf 表示叶节点的样本点,当 α=0 ,未剪枝的决策树损失最小,当 α= ,单根节点的决策树损失最小。

α 可理解成树分支被裁剪后的误差增加率,假设对以r为根的子树剪枝,剪枝后只保留根节点r,剪枝后的损失函数为:

Cα(r)=c(r)+α

剪枝前的损失函数为:
Cα(R)=c(R)+α|Rleaf|

令二者相等,则得到剪枝系数
α=C(r)C(R)|Rleaf1|

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值