# 机器学习
## 硬件环境
LenovoLegionY7000P2020H(16GBDDR4),IntelCorei7‐10750H
Windows10,Chineseversion
## 软件环境
VisualStudioCode1.55.2
## 实验目的
利用已有的数据集 winedata 实现决策树
利用 k=10 折交叉验证评估决策树
决策树可视化
## 实验记录
### 1C4.5 决策树
C4.5 算法是用于生成决策树的一种经典算法,是 ID3 算法的一种延伸和优化。
C4.5 算法对 ID3 算法主要做了一下几点改进:
1.通过信息增益率选择分裂属性,克服了 ID3 算法中通过信息增益倾向于选择拥有多个属性值的属性作为分裂属性的不足。
2.能够处理离散型和连续型的属性类型,即将连续型的属性进行离散化处理。
3.构造决策树之后进行剪枝操作。
4.能够处理具有缺失属性值的训练数据。
通过读取 ex6Data.csv 的数据,可以发现 11 个特征均为连续型属性,且整体数据量庞大需要剪枝操作,因此本次实验选用 C4.5 决策树是十分合适的。
#### 1.1 分裂属性的选择:信息增益率
分裂属性选择的评判标准是决策树算法之间的根本区别。区别于 ID3 算法通过信息增益选择分裂属性,C4.5 算法通过信息增益率选择分裂属性。
设 *D* 是类标记元组训练集,类标号属性具有 *m* 个不同值,m 个不同类 Ci,i=1,2,.....,m,*D* 是 D 中 C'类的元组的集合,|D| 和 |C'D| 分别是是 D 和 C'D 中的元组个数,对于一个数据集合 D,其信息熵是
![](https://www.writebug.com/myres/static/uploads/2021/11/11/8aa792029aa1fdd8063028587e40b0f8.writebug)
现在假定按照属性 A 划分 D 中的元组,划分为 V 的不同的类,新的信息熵为
![](https://www.writebug.com/myres/static/uploads/2021/11/11/09eb7ac71085fbc3bbc1925bd5ed5615.writebug)
由此得到按照属性 *A* 划分 *D* 所获得的信息增益为原熵与新熵之差
![](https://www.writebug.com/myres/static/uploads/2021/11/11/a329f7e7529d447e1a2e770bb0e47139.writebug)
信息增益率使用“分裂信息”值将信息增益规范化。分类信息类似于 Info*(*D),定义为
![](https://www.writebug.com/myres/static/uploads/2021/11/11/54849f7ddfbfd6c62954db17e31e65b9.writebug)
由此定义信息增益率为
![](https://www.writebug.com/myres/static/uploads/2021/11/11/7c063eab3b498f875b631fcb5e4db44d.writebug)
过上述计算,最终选择具有最大信息增益率的属性作为分裂属性。
![](https://www.writebug.com/myres/static/uploads/2021/11/11/fc1dd2cb0a231599ab7cb0b861c17404.writebug)
(a)熵
![](https://www.writebug.com/myres/static/uploads/2021/11/11/c60ea3aee89f4da65f67edc94d2880c9.writebug)
(b)信息增益
### 1.2 连续型属性的离散化处理
当属性类型为离散型,无须对数据进行离散化处理;当属性类型为连续型,则需要对数据进行离散化处理。
C4.5 算法针对连续属性的离散化处理的核心思想是:
1.将属性 *A* 的 *N* 个属性值按照升序排列,得到属性 *A* 的属性值取值序列
![](https://www.writebug.com/myres/static/uploads/2021/11/11/016c3a55bf6995ffb1950b33ce4bfb5e.writebug)
2.在序列![](https://www.writebug.com/myres/static/uploads/2021/11/11/6493739e370ae6fbc0b31bb969a0be38.writebug)中共有 *N***1 种二分方法,产生* N***1 种分隔阈值,对于第* i* 种二分方法,其阈值![](https://www.writebug.com/myres/static/uploads/2021/11/11/c96289e83a790648cb395b711b6ac2b5.writebug),它将该节点上的数据集划分为 2 个子数据集![](https://www.writebug.com/myres/static/uploads/2021/11/11/b16e781b46907aee33f5d8a656705bbf.writebug)
3.计算每种划分方法对应的信息增益,选取信息增益最大的划分方法的阈值作为属性 *A* 二分的阈值。
![](https://www.writebug.com/myres/static/uploads/2021/11/11/b048f9c75d66414cd32f688391965333.writebug)
### 1.3 剪枝
由于决策树的建立完全是依赖于训练样本,因此该决策树对训练样本能够产生完美的拟合效果。但这样的决策树对于测试样本来说过于庞大而复杂,可能产生较高的分类错误率。这种现象就称为过拟合。因此需要将复杂的决策树进行简化,即去掉一些节点解决过拟合问题,这个过程称为剪枝。剪枝方法分为预剪枝和后剪枝两大类。预剪枝是在构建决策树的过程中,提前终止决策树的生长,从而避免过多的节点产生。预剪枝方法虽然简单但实用性不强,因为很难精确的判断何时终止树的生长。后剪枝是在决策树构建完成之后,对那些置信度不达标的节点子树用叶子结点代替,该叶子结点的类标号用该节点子树中频率最高的类标记。
![](https://www.writebug.com/myres/static/uploads/2021/11/11/26ebd1fbe6f9bc30092ef27ca3e2a551.writebug)
### 2 K 折交叉验证
将训练集数据划分为 *K* 部分,利用其中的 *K***1 份做为训练,剩余的一份作为测试,最后取平均测试误差做为泛化误差。K 折交叉验证利用了无重复抽样技术的好处:每次迭代过程中每个样本点只有一次被划入训练集或测试集的机会。
![](https://www.writebug.com/myres/static/uploads/2021/11/11/a16df62dcf183bebe626574c9c25bbbe.writebug)
### 3 可视化决策树
由于我个人的决策树实现不能像 sklearn 库中的那么完美,最终成型的决策树过于庞大, 但是经过 10 折交叉验证,准确率有 83%
![](https://www.writebug.com/myres/static/uploads/2021/11/11/5d33f51c1f7693a2688c2dc01a92a072.writebug)
## 结论与分析
C4.5 决策树算法优缺点分析
优点:
1. 通过信息增益率选择分裂属性,克服了 ID3 算法中通过信息增益倾向于选择拥有多个 属性值的属性作为分裂属性的不足。
2.能够处理离散型和连续型的属性类型,即将连续型的属性进行离散化处理。
3.构造决策树之后进行剪枝操作。
4. 能够处理具有缺失属性值的训练数据
缺点:
1. 算法的计算效率较低,特别是针对含有连续属性值的训练样本时表现的尤为突出。
2. 算法在选择分裂属性时没有考虑到条件属性间的相关性,只计算数据集中每一个条件 属性与决策属性之间的期望信息,有可能影响到属性选择的正确性。
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
LenovoLegionY7000P2020H(16GBDDR4),IntelCorei7‐10750H Windows10,Chineseversion VisualStudioCode1.55.2 利用已有的数据集 winedata 实现决策树 利用 k=10 折交叉验证评估决策树 决策树可视化 C4.5 算法是用于生成决策树的一种经典算法,是 ID3 算法的一种延伸和优化。 C4.5 算法对 ID3 算法主要做了一下几点改进: 1.通过信息增益率选择分裂属性,克服了 ID3 算法中通过信息增益倾向于选择拥有多个属性值的属性作为分裂属性的不足。 2.能够处理离散型和连续型的属性类型,即将连续型的属性进行离散化处理。 3.构造决策树之后进行剪枝操作。 4.能够处理具有缺失属性值的训练数据。 通过读取 ex6Data.csv 的数据,可以发现 11 个特征均为连续型属性,且整体数据量庞大需要剪枝操作,因此本次实验选用 C4.5 决策树是十分合适的。 详细介绍参考:https://blog.csdn.net/newlw/article/details/125068180
资源推荐
资源详情
资源评论
收起资源包目录
基于latex实现的决策树设计(模式识别与机器学习).zip (56个子文件)
machine
实验
image
b1.png 23KB
5.7.4.jpg 94KB
5.7.2.jpg 73KB
5.7.6.jpg 23KB
1.png 84KB
b2.png 23KB
5.7.3.jpg 84KB
L2.png 12KB
L1.png 13KB
5.7.1.jpg 29KB
demo.png 79KB
5.7.5.jpg 66KB
main.pdf 510KB
fonts
SourceHanSansHWSC-Regular.otf 16.44MB
SourceHanSansHWSC-Bold.otf 17.01MB
main.log 30KB
indent.log 2KB
main.synctex.gz 20KB
sdureport.cls 4KB
main.tex 7KB
main.aux 3KB
main.out 689B
LICENSE 1KB
.gitignore 41B
project
1.jpg 22KB
心跳信号分类预测.ipynb 142KB
处理后数据.jpg 101KB
原数据.jpg 48KB
randomforest.jpg 4KB
赛题分析.md 6KB
Project.pdf 473KB
label图.png 57KB
adaboost2.jpg 3KB
adaboost1.jpg 36KB
slides
slides.synctex.gz 44KB
image
1.jpg 22KB
rfc_after_adjust.jpg 3KB
处理后数据.jpg 101KB
原数据.jpg 48KB
randomforest.jpg 4KB
label图.png 57KB
adaboost2.jpg 3KB
adaboost1.jpg 36KB
n_estimators.png 31KB
n_estimators_final.png 64KB
slides.aux 8KB
slides.tex 10KB
slides-blx.bib 341B
slides.log 59KB
slides.out 359B
slides.pdf 408KB
slides.snm 0B
slides.nav 4KB
slides.toc 514B
slides.run.xml 3KB
README.md 6KB
共 56 条
- 1
资源评论
shejizuopin
- 粉丝: 8372
- 资源: 1289
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功