首页 > 其他分享 >机器学习之决策树

机器学习之决策树

时间:2024-08-07 20:55:55浏览次数:12  
标签:剪枝 机器 模型 学习 分裂 构建 节点 决策树

文章目录


决策树是一种模仿人类决策过程的机器学习算法,它通过一系列的问题将数据分割成更小的集合,直至能够做出最终决策。本文将详细探讨决策树在分类和回归任务中的应用,包括算法的具体步骤、优缺点以及实际应用案例。

决策树基础

决策树通过树状图的形式展示决策及其可能的后果。每个内部节点代表一个特征属性的判断,每个分支代表判断结果的输出,每个叶节点代表最终的决策结果。

分类决策树

构建步骤

  1. 数据预处理:清洗数据,处理缺失值和异常值,进行特征编码(如将类别特征转换为数值形式)。

  2. 特征选择:使用诸如信息增益(ID3算法)或信息增益比(C4.5算法)等标准选择最优分裂特征。

  3. 构建树模型

    • 从根节点开始,选择数据集中最优分裂特征进行分裂。
    • 对每个子集重复分裂过程,直到满足停止条件。
  4. 停止条件:当节点中的样本全部属于同一类别、达到预设的最大深度、或样本数量低于某个阈值时,停止分裂。

  5. 剪枝:通过预剪枝或后剪枝减少树的复杂度,防止过拟合。

  6. 模型评估:使用交叉验证等方法评估模型的泛化能力。

分类决策树实例:是否适合户外运动

假设我们有以下简化数据集:

ID天气温度湿度适合运动
1晴朗
2多云温暖
3下雨
4晴朗
5多云温暖

首先,我们计算每个特征的信息增益,选择信息增益最大的特征作为分裂节点。

计算信息增益

  1. 天气

    • 晴朗:2/5,需要进一步分裂。
    • 多云:1/5,不需要分裂。
    • 下雨:1/5,不需要分裂。
  2. 温度

    • 热:3/5,需要进一步分裂。
    • 温暖:1/5,不需要分裂。
    • 冷:1/5,不需要分裂。
  3. 湿度

    • 低:2/5,需要进一步分裂。
    • 中:2/5,需要进一步分裂。
    • 高:1/5,不需要分裂。

假设“天气”的信息增益最大,我们选择它作为根节点。

构建树模型

  1. 根节点:天气

    • 晴朗:2/5,全部是“是”,不需要进一步分裂。
    • 多云:1/5,进一步根据“湿度”分裂。
    • 下雨:1/5,不需要进一步分裂。
  2. 多云的子节点:湿度

    • 低:0/1,无需分裂。
    • 中:1/4,无需分裂。
    • 高:1/4,无需分裂。

最终决策树如下:

是否适合户外运动
├── 天气 = 晴朗 -> 是
├── 天气 = 多云 -> 否
└── 天气 = 下雨 -> 否

回归决策树

构建步骤

  1. 数据预处理:与分类树相似,但需要特别注意连续特征的处理。

  2. 特征选择:选择最小化均方误差或其他回归指标的特征进行分裂。

  3. 构建树模型

    • 从根节点开始,选择能够最好地预测目标值的特征和阈值进行分裂。
    • 对每个子集递归地进行分裂,直到满足停止条件。
  4. 停止条件:与分类树相同,但可能还包括均方误差低于某个阈值。

  5. 剪枝:使用与分类树相同的剪枝技术。

  6. 模型评估:评估模型在测试集上的预测性能。

回归决策树实例:预测房价

假设我们有以下简化房屋数据集:

ID面积(平方米)位置房龄(年)价格(万元)
1120市中心5300
280郊区10150
3200市中心2500
4150市中心8400

我们使用均方误差(MSE)作为分裂标准。

计算均方误差减少量

  1. 面积

    • 120平方米以下:150/2 = 75
    • 120平方米以上:(300+500-400)^2 / 2 = 50
  2. 位置

    • 市中心:(300+500-375)^2 / 2 = 87.5
    • 郊区:150^2 / 1 = 22500(无法进一步分裂)

选择“面积”作为根节点。

构建树模型

  1. 根节点:面积

    • 120平方米以下:平均价格150万
    • 120平方米以上:进一步根据“位置”分裂
  2. 120平方米以上的子节点:位置

    • 市中心:平均价格450万

最终回归决策树如下:

预测房价
├── 面积 < 120平方米 -> 价格 = 150万
└── 面积 >= 120平方米
    └── 位置 = 市中心 -> 价格 = 450万

决策树的优缺

优点

  • 易于理解和解释:决策树的结构清晰,容易转化为明确的决策规则。
  • 自动特征选择:在构建过程中,算法自动选择最有信息量的特征。
  • 处理各种数据类型:能够处理数值型和类别型数据,且对数据的分布要求不严格。

缺点

  • 容易过拟合:尤其是在数据特征多或数据量少的情况下。
  • 对噪声数据敏感:决策树可能在噪声数据上构建出过于复杂的模型。
  • 可能产生不稳定的树:微小的数据变化可能导致生成完全不同的树。

总结

决策树作为一种直观且易于实现的算法,在分类和回归任务中都有着广泛的应用。通过细致的特征选择、递归分裂和剪枝技术,决策树能够在保持模型简洁的同时,提供准确的预测结果。然而,决策树的性能受多种因素影响,包括特征选择、数据质量和模型参数等,因此在实际应用中需要仔细调整和验证。

标签:剪枝,机器,模型,学习,分裂,构建,节点,决策树
From: https://blog.csdn.net/qq_57143062/article/details/141000930

相关文章

  • 人工智能深度学习系列—深入探索IoU Loss及其变种:目标检测与分割的精度优化利器
    人工智能深度学习系列—深度解析:交叉熵损失(Cross-EntropyLoss)在分类问题中的应用人工智能深度学习系列—深入解析:均方误差损失(MSELoss)在深度学习中的应用与实践人工智能深度学习系列—深入探索KL散度:度量概率分布差异的关键工具人工智能深度学习系列—探索余弦相似度损......
  • Halcon学习——显示查看两点云差异
    dev_open_window_fit_size(0,0,800,800,-1,-1,WindowHandle)打开窗口 read_object_model_3d('D:/wechat/chatfile/WeChatFiles/wxid_yuyesap6fm5t22/FileStorage/File/2024-08/pointCloud.ply','m',[],[],ObjectModel3D,Status)read_obje......
  • 第三方库--Numpy学习-day9
    一.广播(Broadcast)NumPy的广播机制是一个强大的功能,使得不同形状的数组之间进行运算变得更加便利。通过广播,较小的数组将自动扩展以适应较大的数组,而无需显式地复制数据。NumPy的广播机制简化了数组间的操作,使得可以更灵活地进行数学计算。广播的基本规则维度匹......
  • 函数的学习(三)
    1.函数的声明和定义在C语言中,函数的声明和定义是分开的。函数的声明是指在程序中提前告诉编译器有一个函数存在,并且指定了函数的名称、参数类型和返回值类型。函数的声明一般放在头文件中,它的作用是告诉编译器有一个函数存在,并且在其他地方可能会用到这个函数。函数的声明的......
  • js学习
    变量通过prompt收集输入信息声明变量特殊情况八股文字符类型可以随时变换js中数字前补0为八进制,补0x为十六进制方法:isNaN(),如果是数字返回false,反之返回true字符串转义符字符串与别的类型拼接,拼接后为字符串字符串内设置变量布尔值数据类型,true参与运算时作为1,f......
  • 音频应用编程-I.MX6U嵌入式Linux C应用编程学习笔记基于正点原子阿尔法开发板
    音频应用编程Linux下ALSA框架概述ALSA简介:ALSA是AdvancedLinuxSoundArchitecture(高级的Linux声音体系)的缩写地位与功能:现已成为Linux下的主流音频体系架构,提供音频和MIDI支持,替代了旧版本中的OSS(开放声音系统)框架设计:ALSA是Linux系统下标准且先进的......
  • 英语真题在线解决查词限制次数(仅供学习参考)
    在我学习四级的时候发现了一个在线四六级题库网站,而且还自带翻译功能,实在是太贴心了。网站地址如下:英语真题在线-试卷排版设计|官网(burningvocabulary.cn)但是它每天查词次数有限  所以我想看看能不能让我多查几次,然后我觉着它不可能联网记录我的查询次数,那么肯定在......
  • Visionpro二次开发学习笔记7-使用CogToolDisplay控件
    CogToolDisplay控件可显示与视觉工具记录相关的图像,图形和其他状态信息。它使用CogRecord和ICogTool接口将图像和图形连接到CogDisplay。图片清单控件的CogComboBox列出当前记录及其子记录中的图像和图形。您可以单击列表并选择要显示的图像或图形。如果记录层次结构仅包......
  • 四、神经网络(深度学习算法)
    4.1认识神经网络必要性当特征值只有两个时,我们仍可以用之前学过的算法去解决但当特征值很多,且含有很多个多次多项式时,用之前的算法就很难解决了例子:图像感知Recogonitionimage计算机识别汽车是靠像素点的亮度值  神经网络做法:4.2如何在神经网络上推理4.2.1......
  • 数据结构——猫树 学习笔记
    数据结构——猫树学习笔记喵~使用情景没有修改,只有区间查询;且维护的信息可以快速合并且满足结合律。我们直接抛出猫树的复杂度:预处理\(\mathcalO(n\logn)\),查询\(\mathcalO(1)\)如果询问的操作是可重复贡献问题(RMQ),那么她和ST表是理论复杂度相同的。如果询问的操......