导航:首页 > 源码编译 > 决策树算法id3实例

决策树算法id3实例

发布时间:2025-07-16 01:06:00

1. 决策树算法基础 ID3与C4.5

决策树算法基础:ID3与C4.5
设X是一个取有限个值得离散随机变量,其概率分布为P(X=xi)=pi, i=1,2,…,n。则随机变量X的信息熵为
条件熵H(Y|X)表示在已知随机变量X的条件下随机变量Y的不确定性。H(Y|X)的计算公式为
所以决策树分支后信息总熵H(D|A)=P1*H1+P2*H2+...+Pn*Hn,(特征A条件下D的经验条件熵)
所以信息增益ΔH=H(D)-H(D|A)
H(D|A)越小,ΔH越大,该特征A越适合作为当前的决策节点。
选取最佳特征伪代码:
计算信息总熵H(D)
遍历每一个特征下的关于D的经验条件熵H(D|A)
计算每一个特征的信息增益ΔH
将信息增益ΔH最大的特征作为最佳特征选为当前决策节点
ID3算法伪代码:
如果第一个标签的数量等于所有的标签数量,说明这是一个单节点树,返回这个标签作为该节点类
如果特征只有一个,说明这是一个单节点树,用多数表决法投票选出标签返回作为该节点类
否则,按信息增益最大的特征A作为当前决策节点,即决策树父节点
如果该特征的信息增益ΔH小于阈值,则用多数表决法投票选出标签返回作为该节点类
否则,对于该特征A的每一个可能值ai,将原空间D分割为若干个子空间Di
对于若干个非空子集Di,将每个Di中实例数最大的类作为标记,构建子节点
以Di为训练空间,递归调用上述步骤
由于信息增益存在偏向于选择取值较多的特征的问题,而C4.5算法中,将ID3算法里的信息增益换成信息增益比,较好地解决了这个问题。
决策树的优点在于计算量简单,适合有缺失属性值的样本,适合处理不相关的特征。而缺点是容易过拟合,可以通过剪枝来简化模型,另外随机森林也解决了这个问题。

2. 如何利用id3算法建立决策树

利用 ID3 算法构建决策树是一种有效的方法,尤其在面对复杂决策时。首先,从信息量最大的条件开始推断结果,能够以最少的步骤达到目的。在构建决策树时,通过量化信息量,使用信息熵作为度量工具,来选择最佳分叉点。

信息熵定义为集合中正反例的比例,通过公式 Entropy(S) = -p+log2(p+) - p-log2(p-)来计算,其中 p+ 是正例比例,p- 是反例比例。熵值越高,表示信息量越小;值越低,则信息量越大。这个指标在多个类别情况中同样适用,且在单一类别时熵值为零,多个类别且数量相等时熵值最大。

构建决策树时,选择信息量最大的属性作为根节点,递归地将数据集拆分为子集。每个属性取值对应的子集形成分支,最终生成纯度最高的叶子节点。在多个属性选择下,采用信息增益作为评价标准,信息增益 = 原始熵 - 子树信息熵的平均值,以判断最佳分叉属性。该过程以自顶向下的方式,不断细化决策分支,直至纯度达到预设标准或无法进一步拆分。

ID3 算法是由 J. Ross Quinlan 发明,并经过多次迭代优化。其核心在于通过信息熵和信息增益的计算,自动化地选择最优属性进行决策树构建。优化方案如 C4.5 等进一步提升了算法的性能。

为帮助理解和演示 ID3 算法,可以参考相关在线可视化工具和 PPT 材料,如 id3.js.org 或其他教育资源。

3. 决策树的原理及算法

决策树基本上就是把我们以前的经验总结出来。我给你准备了一个打篮球的训练集。如果我们要出门打篮球,一般会根据“天气”、“温度”、“湿度”、“刮风”这几个条件来判断,最后得到结果:去打篮球?还是不去?

上面这个图就是一棵典型的决策树。我们在做决策树的时候,会经历两个阶段:构造和剪枝。

构造就是生成一棵完整的决策树。简单来说,构造的过程就是选择什么属性作为节点的过程,那么在构造过程中,会存在三种节点:
根节点:就是树的最顶端,最开始的那个节点。在上图中,“天气”就是一个根节点;
内部节点:就是树中间的那些节点,比如说“温度”、“湿度”、“刮风”;
叶节点:就是树最底部的节点,也就是决策结果。

剪枝就是给决策树瘦身,防止过拟合。分为“预剪枝”(Pre-Pruning)和“后剪枝”(Post-Pruning)。

预剪枝是在决策树构造时就进行剪枝。方法是在构造的过程中对节点进行评估,如果对某个节点进行划分,在验证集中不能带来准确性的提升,那么对这个节点进行划分就没有意义,这时就会把当前节点作为叶节点,不对其进行划分。

后剪枝就是在生成决策树之后再进行剪枝,通常会从决策树的叶节点开始,逐层向上对每个节点进行评估。如果剪掉这个节点子树,与保留该节点子树在分类准确性上差别不大,或者剪掉该节点子树,能在验证集中带来准确性的提升,那么就可以把该节点子树进行剪枝。

1是欠拟合,3是过拟合,都会导致分类错误。

造成过拟合的原因之一就是因为训练集中样本量较小。如果决策树选择的属性过多,构造出来的决策树一定能够“完美”地把训练集中的样本分类,但是这样就会把训练集中一些数据的特点当成所有数据的特点,但这个特点不一定是全部数据的特点,这就使得这个决策树在真实的数据分类中出现错误,也就是模型的“泛化能力”差。

p(i|t) 代表了节点 t 为分类 i 的概率,其中 log2 为取以 2 为底的对数。这里我们不是来介绍公式的,而是说存在一种度量,它能帮我们反映出来这个信息的不确定度。当不确定性越大时,它所包含的信息量也就越大,信息熵也就越高。

ID3 算法计算的是信息增益,信息增益指的就是划分可以带来纯度的提高,信息熵的下降。它的计算公式,是父亲节点的信息熵减去所有子节点的信息熵。

公式中 D 是父亲节点,Di 是子节点,Gain(D,a) 中的 a 作为 D 节点的属性选择。

因为 ID3 在计算的时候,倾向于选择取值多的属性。为了避免这个问题,C4.5 采用信息增益率的方式来选择属性。信息增益率 = 信息增益 / 属性熵,具体的计算公式这里省略。

当属性有很多值的时候,相当于被划分成了许多份,虽然信息增益变大了,但是对于 C4.5 来说,属性熵也会变大,所以整体的信息增益率并不大。

ID3 构造决策树的时候,容易产生过拟合的情况。在 C4.5 中,会在决策树构造之后采用悲观剪枝(PEP),这样可以提升决策树的泛化能力。

悲观剪枝是后剪枝技术中的一种,通过递归估算每个内部节点的分类错误率,比较剪枝前后这个节点的分类错误率来决定是否对其进行剪枝。这种剪枝方法不再需要一个单独的测试数据集。

C4.5 可以处理连续属性的情况,对连续的属性进行离散化的处理。比如打篮球存在的“湿度”属性,不按照“高、中”划分,而是按照湿度值进行计算,那么湿度取什么值都有可能。该怎么选择这个阈值呢,C4.5 选择具有最高信息增益的划分所对应的阈值。

针对数据集不完整的情况,C4.5 也可以进行处理。

暂无

请你用下面的例子来模拟下决策树的流程,假设好苹果的数据如下,请用 ID3 算法来给出好苹果的决策树。

“红”的信息增益为:1“大”的信息增益为:0
因此选择“红”的作为根节点,“大”没有用,剪枝。

数据分析实战45讲.17 丨决策树(上):要不要去打篮球?决策树来告诉你

阅读全文

与决策树算法id3实例相关的资料

热点内容
phpsocket并发多少 浏览:576
tomcat安装php 浏览:76
clay黏土服务器怎么加黏土 浏览:763
androidsetcolor 浏览:172
手机如何登陆主机服务器 浏览:529
云服务器被停用怎么办 浏览:236
转发app源码 浏览:29
怎么在主页弄个文件夹 浏览:104
java对象转为字符串 浏览:398
山西贫困户用什么app 浏览:482
学好单片机可以做什么东西 浏览:220
云服务器开放公网带宽安全么 浏览:17
java字节乱码 浏览:305
荣耀50什么时候升级安卓12 浏览:75
pdf文件怎么转成jpg 浏览:259
比泽尔压缩机代理商 浏览:629
什么app能下载多邻国 浏览:234
服务器蓝色什么意思 浏览:226
vb组态软件源码 浏览:699
加密蚊帐防蚊门帘 浏览:829