数据挖掘--分类之决策树算法ID3

一、决策树:一棵决策树由一个根节点,一组内部节点和一组叶节点组成。每个内部节点(包括根节点)表示在一个属性上的测试,每个分枝表示一个测试输出,每个叶节点表示一个类,有时不同的叶节点可以表示相同的类。建立一棵决策树,需要解决的问题主要有:1)如何选择测试属性?测试属性的选择顺序影响决策树的结构甚至决策树的准确率,一般使用信息增益度量来选择测试属性。2)如何停止划分样本?
摘要由CSDN通过智能技术生成


一、决策树:

一棵决策树由一个根节点,一组内部节点和一组叶节点组成。每个内部节点(包括根节点)表示在一个属性上的测试,每个分枝表示一个测试输出,每个叶节点表示一个类,有时不同的叶节点可以表示相同的类。


建立一棵决策树,需要解决的问题主要有:
1)如何选择测试属性?
测试属性的选择顺序影响决策树的结构甚至决策树的准确率,一般使用信息增益度量来选择测试属性。
2)如何停止划分样本?
从根节点测试属性开始,每个内部节点测试属性都把样本空间划分为若干个(子)区域,一般当某个(子)区域的样本同类时,就停止划分样本,有时也通过阈值提前停止划分样本。

二、算法:

1. 算法思想及描述
首先,在整个训练数据集S、所有描述属性A1, A2, …, Am上递归地建立决策树。即将S作为根节点;如果S中的样本属于同一类别,则将S作为叶节点并用其中的类别标识,决策树建立完成(递归出口);
否则在S上计算当给定Ak(1≤k≤m)时类别属性C的信息增益G(C, Ak),选择信息增益最大的Ai作为根节点的测试属性;如果Ai的取值个数为v(取值记为a1, a2, …, av),则Ai将S划分为v个子集S1, S2, …, Sv(Sj(1≤j≤v)为S中Ai=aj的样本集合),同时根节点产生v个分枝与之对应。其次,分别在训练数据子集S1, S2, …, Sv、剩余描述属性A1, …, Ai-1, Ai+1, …, Am上采用相同方法递归地建立决策树子树(递归)。

可能出现如下情况,需要停止建立决策(子)树的递归过程。
1)某节点对应的训练数据(子)集为空。此时,该节点作为叶节点并用父节点中占多数的样本类别标识。
2)某节点没有对应的(剩余)描述属性。此时,该节点作为叶节点并用该节点中占多数的样本类别标识。 


算法:决策树分类算法Generate_decision_tree(S, A)
输入:训练数据集S,描述属性集合A
输出:决策树
步骤:
(1)创建对应S的节点Node;
(2)if  S中的样本属于同一类别c  then
以c标识Node并将Node作为叶节点返回;
(3)if  A为空  then
以S中占多数的样本类别c标识Node并将Node作为叶节点返回;

(4)从A中选择对S而言信息增益最大的描述属性Ai作为Node的测试属性;
(5)for  Ai的每个可能取值aj(1≤j≤v ) //设Ai的可能取值为a1, a2, …, av
(5.1)产生S的一个子集Sj      //Sj(1≤j≤v)为S中Ai=aj的样本集合;
(5.2)if  Sj为空 then
创建对应Sj的节点Nj,以S中占多数的样本类别c标识Nj,并将Nj作为叶节点形成Node的一个分枝
(5.3)else  由Generate_decision_tree(Sj, A-{Ai})创建子树形成Node的一个分枝;


三、 信息增益

    在决策树分类算法中使用信息增益度量来选择测试属性。
从信息论角度看,通过描述属性可以减少类别属性的不确定性。

3.1 离散型随机变量X的无条件熵定义为
 式中,p(xi)为X= xi的概率;u为X的可能取值个数。


3.2 给定离散型随机变量Y,离散型随机变量X的条件熵定义为
式中,p(xiyj)为X=xi, Y=yj的联合概率;p(xi/yj)为已知Y=yj时,X= xi的条件概率;u、v分别为X、Y的可能取值个数。
可以证明,H(X/Y)≤H(X)。所以,通过Y可以减少X的不确定性。


3.3 假设训练数据集是关系数据表r1, r2, …, rn,其中描述属性为A1, A2, …, Am、类别属性为C,类别属性C的无条件熵定义为
    式中,u为C的可能取值个数,即类别个数,类别记为c1, c2, …, cu;si为属于类别ci的记录集合,|si|即为属于类别ci的记录总数。


3.4 给定描述属性Ak(1≤k≤m),类别属性C的条件熵定义为 
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值