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

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

硬件环境

完整代码: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. 算法在选择分裂属性时没有考虑到条件属性间的相关性,只计算数据集中每一个条件 属性与决策属性之间的期望信息,有可能影响到属性选择的正确性。
相关文章
|
19天前
|
机器学习/深度学习 TensorFlow API
机器学习实战:TensorFlow在图像识别中的应用探索
【10月更文挑战第28天】随着深度学习技术的发展,图像识别取得了显著进步。TensorFlow作为Google开源的机器学习框架,凭借其强大的功能和灵活的API,在图像识别任务中广泛应用。本文通过实战案例,探讨TensorFlow在图像识别中的优势与挑战,展示如何使用TensorFlow构建和训练卷积神经网络(CNN),并评估模型的性能。尽管面临学习曲线和资源消耗等挑战,TensorFlow仍展现出广阔的应用前景。
47 5
|
1月前
|
机器学习/深度学习 人工智能 算法
揭开深度学习与传统机器学习的神秘面纱:从理论差异到实战代码详解两者间的选择与应用策略全面解析
【10月更文挑战第10天】本文探讨了深度学习与传统机器学习的区别,通过图像识别和语音处理等领域的应用案例,展示了深度学习在自动特征学习和处理大规模数据方面的优势。文中还提供了一个Python代码示例,使用TensorFlow构建多层感知器(MLP)并与Scikit-learn中的逻辑回归模型进行对比,进一步说明了两者的不同特点。
64 2
|
1月前
|
机器学习/深度学习 数据挖掘 Serverless
手把手教你全面评估机器学习模型性能:从选择正确评价指标到使用Python与Scikit-learn进行实战演练的详细指南
【10月更文挑战第10天】评估机器学习模型性能是开发流程的关键,涉及准确性、可解释性、运行速度等多方面考量。不同任务(如分类、回归)采用不同评价指标,如准确率、F1分数、MSE等。示例代码展示了使用Scikit-learn库评估逻辑回归模型的过程,包括数据准备、模型训练、性能评估及交叉验证。
68 1
|
1月前
|
机器学习/深度学习 算法 数据挖掘
【Python篇】深度探索NumPy(下篇):从科学计算到机器学习的高效实战技巧1
【Python篇】深度探索NumPy(下篇):从科学计算到机器学习的高效实战技巧
51 5
|
1月前
|
机器学习/深度学习 数据采集 分布式计算
【Python篇】深入机器学习核心:XGBoost 从入门到实战
【Python篇】深入机器学习核心:XGBoost 从入门到实战
100 3
|
1月前
|
机器学习/深度学习 算法 数据可视化
【Python篇】深度探索NumPy(下篇):从科学计算到机器学习的高效实战技巧2
【Python篇】深度探索NumPy(下篇):从科学计算到机器学习的高效实战技巧
40 1
|
1月前
|
数据采集 机器学习/深度学习 TensorFlow
声纹识别实战:从数据采集到模型训练
【10月更文挑战第16天】声纹识别技术通过分析个人的语音特征来验证其身份,具有无接触、便捷的特点。本文将带你从零开始,一步步完成声纹识别系统的构建,包括数据采集、音频预处理、特征提取、模型训练及评估等关键步骤。我们将使用Python语言和相关的科学计算库来进行实践。
135 0
|
9天前
|
机器学习/深度学习 人工智能 算法
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
手写数字识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Flask框架,开发网页端操作平台,实现用户上传一张图片识别其名称。
30 0
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
【MM2024】阿里云 PAI 团队图像编辑算法论文入选 MM2024
阿里云人工智能平台 PAI 团队发表的图像编辑算法论文在 MM2024 上正式亮相发表。ACM MM(ACM国际多媒体会议)是国际多媒体领域的顶级会议,旨在为研究人员、工程师和行业专家提供一个交流平台,以展示在多媒体领域的最新研究成果、技术进展和应用案例。其主题涵盖了图像处理、视频分析、音频处理、社交媒体和多媒体系统等广泛领域。此次入选标志着阿里云人工智能平台 PAI 在图像编辑算法方面的研究获得了学术界的充分认可。
【MM2024】阿里云 PAI 团队图像编辑算法论文入选 MM2024
|
30天前
|
机器学习/深度学习 算法 Java
机器学习、基础算法、python常见面试题必知必答系列大全:(面试问题持续更新)
机器学习、基础算法、python常见面试题必知必答系列大全:(面试问题持续更新)

热门文章

最新文章

下一篇
无影云桌面