# 机器学习
## 硬件环境
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 折交叉验证评估决策树 决策树可视化 实验记录 1C4.5 决策树 C4.5 算法是用于生成决策树的一种经典算法,是 ID3 算法的一种延伸和优化。 C4.5 算法对 ID3 算法主要做了一下几点改进: 1.通过信息增益率选择分裂属性,克服了 ID3 算法中通过信息增益倾向于选择拥有多个属性值的属性作为分裂属性的不足。 2.能够处理离散型和连续型的属性类型,即将连续型的属性进行离散化处理。 3.构造决策树之后进行剪枝操作。 4.能够处理具有缺失属性值的训练数据。
资源推荐
资源详情
资源评论
收起资源包目录
模式识别与机器学习--决策树.zip (56个子文件)
machine
实验报告
main.aux 3KB
main.tex 7KB
image
5.7.5.jpg 66KB
b1.png 23KB
b2.png 23KB
5.7.6.jpg 23KB
L1.png 13KB
1.png 84KB
L2.png 12KB
5.7.1.jpg 29KB
5.7.4.jpg 94KB
demo.png 79KB
5.7.3.jpg 84KB
5.7.2.jpg 73KB
main.log 30KB
sdureport.cls 4KB
indent.log 2KB
main.pdf 510KB
fonts
SourceHanSansHWSC-Regular.otf 16.44MB
SourceHanSansHWSC-Bold.otf 17.01MB
main.out 689B
main.synctex.gz 20KB
LICENSE 1KB
.gitignore 41B
README.md 6KB
project
randomforest.jpg 4KB
心跳信号分类预测.ipynb 142KB
label图.png 57KB
adaboost1.jpg 36KB
adaboost2.jpg 3KB
1.jpg 22KB
slides
slides.tex 10KB
slides.nav 4KB
slides.log 59KB
image
randomforest.jpg 4KB
rfc_after_adjust.jpg 3KB
label图.png 57KB
adaboost1.jpg 36KB
adaboost2.jpg 3KB
1.jpg 22KB
n_estimators.png 31KB
n_estimators_final.png 64KB
处理后数据.jpg 101KB
原数据.jpg 48KB
slides.run.xml 3KB
slides.snm 0B
slides.synctex.gz 44KB
slides.aux 8KB
slides.out 359B
slides-blx.bib 341B
slides.pdf 408KB
slides.toc 514B
赛题分析.md 6KB
处理后数据.jpg 101KB
Project.pdf 473KB
原数据.jpg 48KB
共 56 条
- 1
资源评论
程序员奇奇
- 粉丝: 3w+
- 资源: 294
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功