模式识别与机器学习--决策树实战

简介: 模式识别与机器学习--决策树实战

硬件环境

完整代码:https://download.csdn.net/download/pythonyanyan/87390405

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,其信息熵是


eb4ad34620033c5e58c8ca59512e4985.png

现在假定按照属性 A 划分 D 中的元组,划分为 V 的不同的类,新的信息熵为

23b298e4d739b4953625869ad8aab819.png


由此得到按照属性 A 划分 D 所获得的信息增益为原熵与新熵之差


b42d9b6474ce1fe311a0679bd6f6e725.png

信息增益率使用“分裂信息”值将信息增益规范化。分类信息类似于 Info*(*D),定义为

a41d632299beac95d5a8d3b3755cc4fb.png


由此定义信息增益率为


6cf1ab603193f5e4dcba32ceb2ac40df.png

过上述计算,最终选择具有最大信息增益率的属性作为分裂属性。


cd706ef4f62dd209b48c41c12bd9eda8.png

(a)熵


a31320ae5686dbdf54cd83a968fd1822.png

(b)信息增益


1.2 连续型属性的离散化处理


当属性类型为离散型,无须对数据进行离散化处理;当属性类型为连续型,则需要对数据进行离散化处理。


C4.5 算法针对连续属性的离散化处理的核心思想是:


1.将属性 A 的 N 个属性值按照升序排列,得到属性 A 的属性值取值序列

2031c077d59ed4431a43c28fe7f651ba.png


2.在序列

b78e47540c6d87b502b5689154103f64.png


中共有 N1 种二分方法,产生 N1 种分隔阈值,对于第 i 种二分方法,其阈值

3ab89696215b6db5499617863927ba8e.png


,它将该节点上的数据集划分为 2 个子数据集


49834993f7c714d64924f5728aa6120e.png

3.计算每种划分方法对应的信息增益,选取信息增益最大的划分方法的阈值作为属性 A 二分的阈值。

34fb35c16ac7932390fa919bff212d61.png

1.3 剪枝


由于决策树的建立完全是依赖于训练样本,因此该决策树对训练样本能够产生完美的拟合效果。但这样的决策树对于测试样本来说过于庞大而复杂,可能产生较高的分类错误率。这种现象就称为过拟合。因此需要将复杂的决策树进行简化,即去掉一些节点解决过拟合问题,这个过程称为剪枝。剪枝方法分为预剪枝和后剪枝两大类。预剪枝是在构建决策树的过程中,提前终止决策树的生长,从而避免过多的节点产生。预剪枝方法虽然简单但实用性不强,因为很难精确的判断何时终止树的生长。后剪枝是在决策树构建完成之后,对那些置信度不达标的节点子树用叶子结点代替,该叶子结点的类标号用该节点子树中频率最高的类标记。


47aa96ce4115c0206f4df15b7863c087.png


2 K 折交叉验证

将训练集数据划分为 K 部分,利用其中的 K**1 份做为训练,剩余的一份作为测试,最后取平均测试误差做为泛化误差。K 折交叉验证利用了无重复抽样技术的好处:每次迭代过程中每个样本点只有一次被划入训练集或测试集的机会。



00c914ef2a8386556a2ab231e049e328.png


3 可视化决策树

由于我个人的决策树实现不能像 sklearn 库中的那么完美,最终成型的决策树过于庞大, 但是经过 10 折交叉验证,准确率有 83%


15d0d7c91893ad42389cf5f65ef20e3b.png

结论与分析

C4.5 决策树算法优缺点分析

优点:


  1. 通过信息增益率选择分裂属性,克服了 ID3 算法中通过信息增益倾向于选择拥有多个 属性值的属性作为分裂属性的不足。

2.能够处理离散型和连续型的属性类型,即将连续型的属性进行离散化处理。


3.构造决策树之后进行剪枝操作。

  1. 能够处理具有缺失属性值的训练数据

缺点:

  1. 算法的计算效率较低,特别是针对含有连续属性值的训练样本时表现的尤为突出。
  2. 算法在选择分裂属性时没有考虑到条件属性间的相关性,只计算数据集中每一个条件 属性与决策属性之间的期望信息,有可能影响到属性选择的正确性。
相关文章
|
机器学习/深度学习 存储 运维
机器学习异常检测实战:用Isolation Forest快速构建无标签异常检测系统
本研究通过实验演示了异常标记如何逐步完善异常检测方案和主要分类模型在欺诈检测中的应用。实验结果表明,Isolation Forest作为一个强大的异常检测模型,无需显式建模正常模式即可有效工作,在处理未见风险事件方面具有显著优势。
1168 46
|
机器学习/深度学习 数据可视化 TensorFlow
Python 高级编程与实战:深入理解数据科学与机器学习
本文深入探讨了Python在数据科学与机器学习中的应用,介绍了pandas、numpy、matplotlib等数据科学工具,以及scikit-learn、tensorflow、keras等机器学习库。通过实战项目,如数据可视化和鸢尾花数据集分类,帮助读者掌握这些技术。最后提供了进一步学习资源,助力提升Python编程技能。
|
机器学习/深度学习 人工智能 Java
Java机器学习实战:基于DJL框架的手写数字识别全解析
在人工智能蓬勃发展的今天,Python凭借丰富的生态库(如TensorFlow、PyTorch)成为AI开发的首选语言。但Java作为企业级应用的基石,其在生产环境部署、性能优化和工程化方面的优势不容忽视。DJL(Deep Java Library)的出现完美填补了Java在深度学习领域的空白,它提供了一套统一的API,允许开发者无缝对接主流深度学习框架,将AI模型高效部署到Java生态中。本文将通过手写数字识别的完整流程,深入解析DJL框架的核心机制与应用实践。
1069 3
|
机器学习/深度学习 数据可视化 算法
Python 高级编程与实战:深入理解数据科学与机器学习
在前几篇文章中,我们探讨了 Python 的基础语法、面向对象编程、函数式编程、元编程、性能优化和调试技巧。本文将深入探讨 Python 在数据科学和机器学习中的应用,并通过实战项目帮助你掌握这些技术。
|
数据可视化 API 开发者
R1类模型推理能力评测手把手实战
R1类模型推理能力评测手把手实战
594 2
|
人工智能 自然语言处理 网络安全
基于阿里云 Milvus + DeepSeek + PAI LangStudio 的低成本高精度 RAG 实战
阿里云向量检索服务Milvus版是一款全托管向量检索引擎,并确保与开源Milvus的完全兼容性,支持无缝迁移。它在开源版本的基础上增强了可扩展性,能提供大规模AI向量数据的相似性检索服务。凭借其开箱即用的特性、灵活的扩展能力和全链路监控告警,Milvus云服务成为多样化AI应用场景的理想选择,包括多模态搜索、检索增强生成(RAG)、搜索推荐、内容风险识别等。您还可以利用开源的Attu工具进行可视化操作,进一步促进应用的快速开发和部署。
1399 1
|
数据可视化 API 开发者
R1类模型推理能力评测手把手实战
随着DeepSeek-R1模型的广泛应用,越来越多的开发者开始尝试复现类似的模型,以提升其推理能力。
1550 2
|
机器学习/深度学习 存储 搜索推荐
利用机器学习算法改善电商推荐系统的效率
电商行业日益竞争激烈,提升用户体验成为关键。本文将探讨如何利用机器学习算法优化电商推荐系统,通过分析用户行为数据和商品信息,实现个性化推荐,从而提高推荐效率和准确性。
832 14
|
机器学习/深度学习 算法 数据可视化
实现机器学习算法时,特征选择是非常重要的一步,你有哪些推荐的方法?
实现机器学习算法时,特征选择是非常重要的一步,你有哪些推荐的方法?
829 1
|
机器学习/深度学习 算法 搜索推荐
Machine Learning机器学习之决策树算法 Decision Tree(附Python代码)
Machine Learning机器学习之决策树算法 Decision Tree(附Python代码)

热门文章

最新文章