机器学习——决策树(笔记)

news2024/9/25 3:20:17

目录

一、认识决策树

1. 介绍

2. 决策树生成过程

二、sklearn中的决策树

1. tree.DecisionTreeClassifier(分类树)

(1)模型基本参数

(2)模型属性

(3)接口

2. tree.DecisionTreeRegressor(回归树)

3. tree.export_graphviz(将生成的决策树导出为DOT格式,画图专用)

4. 其他(补充)

三、决策树的优缺点

1. 优点

2. 缺点


一、认识决策树

1. 介绍

        决策树(Decision Tree)是一种非参数的有监督学习方法,它能够从一系列 有特征和标签的数据中总结出决策规则,并用树状图的结构来呈现这些规则,以解决分类和回归问题。决策树算法容易理解,适用各种数据,在解决各种问题时都有良好表现,尤其是以树模型为核心的各种集成算法,在各个行业和领域都有广泛的应用。

2. 决策树生成过程

        上面这组数据集为 一系列已知物种以及所属类别的数据。我们现在的目标是,将动物们分为哺乳类和非哺乳类。根据已经收集到的数据,决策树算法 可以算出了下面的 这棵决策树:

        假如我们现在发现了一种 新物种 A,它是冷血动物,体表带鳞片,并且不是胎生,我们就可以通过这棵决策树来判断它的 所属类别

涉及关键概念:节点

   ① 根节点:没有进边,有出边。包含最初的,针对特征的提问。

   ② 中间节点:既有进边也有出边,进边只有一条,出边可以有很多条。都是针对特征的提问。

   ③ 叶子节点:有进边,没有出边,每个叶子节点都是一个类别标签。

   ④ 子节点和父节点:在两个相连的节点中,更接近根节点的是父节点,另一个是子节点。

二、sklearn中的决策树

        涉及模块:sklearn.tree

1. tree.DecisionTreeClassifier(分类树)

(1)模型基本参数

(2)模型属性

(3)接口

2. tree.DecisionTreeRegressor(回归树)

重要参数criterion

        回归树 衡量分枝质量的 指标,支持的标准有三种:

    ① 输入“mse”使用均方误差mean squared error(MSE),父节点和叶子节点之间的 均方误差的差额 将被用来作为 特征选择的标准,这种方法通过使用 叶子节点的均值来 最小化 L2损失。

     ② 输入“friedman_mse”,使用费尔德曼均方误差,这种指标使用弗里德曼针对潜在分枝中的问题改进后的均方误差。

     ③ 输入“mae”使用绝对平均误差MAE (mean absolute error),这种指标使用叶节点的中值来 最小化 L1损失。

3. tree.export_graphviz(将生成的决策树导出为DOT格式,画图专用)

4. 其他(补充)

        ① 信息熵的计算比基尼系数缓慢一些,因为基尼系数的计算不涉及对数。另外,因为信息熵对不纯度更加敏感,所以信息熵作为指标时,决策树的生长会更加“精细”,因此对于高维数据或者噪音很多的数据,信息熵很容易过拟合,基尼系数在这种情况下效果往往比较好。

        ② random_state用来设置分枝中的随机模式的参数,默认None,在高维度时随机性会表现更明显,低维度的数据(比如鸢尾花数据集),随机性几乎不会显现。输入任意整数,会一直长出同一棵树,让模型稳定下来。

        ③ splitter也是用来控制决策树中的随机选项的,有两种输入值,输入“best”,决策树在分枝时虽然随机,但是还是会优先选择更重要的特征进行分枝(重要性可以通过属性feature_importances_查看),输入“random”,决策树在分枝时会更加随机,树会因为含有更多的不必要信息而更深更大,并因这些不必要信息而降低对训练集的拟合。

        ④ 在不加限制的情况下,一棵决策树会生长到衡量不纯度的指标最优,或者没有更多的特征可用为止,这样的决策树往往会过拟合。为了让决策树有更好的泛化性,需要要对决策树进行剪枝。剪枝策略对决策树的影响巨大,正确的剪枝策略是优化决策树算法的核心

三、决策树的优缺点

1. 优点

    ① 易于 理解和解释,因为树木可以画出来被看见。

    ② 需要 很少的 数据准备。其他很多算法 通常都需要 数据规范化,需要 创建虚拟变量并删除空值 等。但 sklearn中的决策树模块 不支持对缺失值的处理

    ③ 使用 树的成本(比如说,在预测数据的时候)是用于 训练树的数据点的 数量的 对数,相比于 其他算法,这是一个 很低的成本。

    ④ 能够同时 处理数字 和 分类 数据,既可以做 回归又可以 做分类。其他技术通常专门用于分析仅具有 一种变量类型的 数据集。

    ⑤ 能够处理 多输出问题,即含有 多个标签的问题(注意与一个标签中含有多种标签分类的问题区别开)

    ⑥ 是一个 白盒模型,结果很容易 能够被解释。如果 在模型中可以观察 到给定的情况,则可以通过布尔逻辑 轻松解释 条件。相反,在 黑盒模型中(例如,在人工神经网络中),结果可能更难以解释。

    ⑦ 可以 使用统计测试验证 模型,这让 我们可以 考虑模型的 可靠性。即使 其假设 在某种程度上 违反了生成数据的 真实模型,也能够表现良好。

2. 缺点

    ① 决策树学习者 可能创建 过于复杂的树,这些 树不能很好地 推广数据。这称为过度拟合。修剪,设置叶节点所需的最小样本数或设置树的最大深度等机制是 避免此问题所必需的。

    ② 决策树 可能不稳定,数据中 微小的变化 可能导致 生成完全 不同的树,这个问题需要通过 集成算法来解 决。

    ③ 决策树的 学习是 基于贪婪算法,它靠 优化局部最优(每个节点的最优)来 试图达到整体的最优,但这种 做法 不能保证返回 全局最优决策树。这个问题 也可以 由集成算法 来解决,在随机森林中,特征和样本会 在分枝过程中 被随机采样。

    ④ 有些概念 很难学习,因为决策树 不容易表达它们,例如 XOR,奇偶校验 或多路复用器问题。

    ⑤ 如果标签中的 某些类占 主导地位,决策树学习者 会创建偏向 主导类的树。因此,建议在 拟合决策树 之前 平衡数据集

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1920668.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

289个地级市-资源型城市划分数据

资源型城市:经济地理的独特现象与可持续发展的挑战 资源型城市是指那些以丰富的自然资源为基础,对国家经济和工业化进程有着重要影响的城市。这些城市在国家现代化建设中扮演着关键角色,其发展状况直接关系到区域经济的繁荣与社会的稳定。 资…

Go-知识测试-模糊测试

Go-知识测试-模糊测试 1. 定义2. 例子3. 数据结构4. tesing.F.Add5. 模糊测试的执行6. testing.InternalFuzzTarget7. testing.runFuzzing8. testing.fRunner9. FuzzXyz10. RunFuzzWorker11. CoordinateFuzzing12. 总结 建议先看:https://blog.csdn.net/a1879272183…

GitHub连接超时问题 Recv failure: Connection was reset

用手机热点WIF拉取git项目的时候,遇到Recv failure: Connection was reset问题。 解决办法 一、手动开启本地代理 二、在终端(cmd)输入命令 git config --global http.proxy http://127.0.0.1:7890 git config --global https.proxy https:…

QT实现自定义带有提示信息的透明环形进度条

1. 概述 做界面开发的童鞋可能都会遇到这样的需求,就是有一些界面点击了之后比较耗时的操作,需要界面给出一个环形进度条的进度反馈信息. 如何来实现这样的需求呢,话不多说,上效果 透明进度条 2. 代码实现 waitfeedbackprogressba…

2006-2021年 291个地级市资源错配指数、劳动和资本相对扭曲指数do文件和结果

资源错配指数:衡量生产要素配置效率的关键指标 资源错配指数(Misallocation Index)是一个衡量资源配置效率的指标,它反映了生产要素是否得到了合理配置,以及是否达到了生产效率的最优状态。一个较高的资源错配指数意味…

three-tile: 一个开源的轻量级三维瓦片库

three-tile 介绍 three-tile 是一个开源的轻量级三维瓦片库,它基于threejs使用typescript开发,提供一个三维地形模型,能轻松给你的应用增加三维瓦片地图。 https://blog.csdn.net/HZGJF/article/details/140280844 源码:https:/…

malloc与free函数的用法(精简全面 · 一看即懂)

前言:Hello大家好😘,我是心跳sy,今天为大家带来malloc函数与free函数的用法,我们一起来看看吧! 目录 一、malloc函数 💫 1、⭐️malloc函数对应的头文件⭐️ 2、⭐️malloc函数的作用⭐️ 3…

高职计算机网络实训室

一、高职计算机网络实训室建设的背景 如今,数字化发展已成为国家发展的战略方向,是推动社会进步和经济发展的重要动力。在这一时代背景下,计算机网络技术作为数字化发展的基础设施,其地位和作用愈发凸显。因此,高职院…

Windows中nvm的安装配置和卸载

文章目录 Windows中安装配置,和卸载nvm一、卸载node二、安装vnm三、配置环境(配置路径和下载源)四、使用nvm安装node五、nvm常见的命令六、nvm的卸载 Windows中安装配置,和卸载nvm 一、卸载node 如果没有node可以直接了跳过该步…

<数据集>Udacity交通目标识别数据集<目标检测>

数据集格式:VOCYOLO格式 图片数量:13239张(实际有15000张,但其中1761张无标签的图片被我去除掉) 标注数量(xml文件个数):13239 标注数量(txt文件个数):13239 标注类别数:11 标注…

全开源TikTok跨境商城源码/TikTok内嵌商城+搭建教程/前端uniapp+后端

多语言跨境电商外贸商城 TikTok内嵌商城,商家入驻一键铺货一键提货 全开源完美运营 海外版抖音TikTok商城系统源码,TikToK内嵌商城,跨境商城系统源码 接在tiktok里面的商城。tiktok内嵌,也可单独分开出来当独立站运营 二十一种…

Tomcat下载安装配置教程(零基础超详细)

「作者简介」:冬奥会网络安全中国代表队,CSDN Top100,就职奇安信多年,以实战工作为基础著作 《网络安全自学教程》,适合基础薄弱的同学系统化的学习网络安全,用最短的时间掌握最核心的技术。 Tomcat 1、下载…

Docker 镜像构建报 exec xxx.sh: no such file or directory

问题记录 场景: 处于对nacos docker 部署最新版本的探究,但是nacos/nacos-server镜像拉取不到最新版本,官网也是给出自己构建镜像的方案。 具体步骤很简单,先clone项目,然后签出你要的nacos版本,通过docke…

Java——IO流(二)-(7/7):补充知识:IO框架(什么是框架、什么是IO框架、Commons-io)

目录 什么是框架 什么是IO框架 Commons-io 常用方法 框架下载 框架导入 实例演示 什么是框架 解决某类问题,编写的一套类、接口等,可以理解成一个半成品,大多框架都是第三方研发的。好处:在框架的基础上开发,可…

edge 学习工具包 math solver

简介 推荐微软推出的学习工具中的两项工具:数学求解器和 pdf 阅读器。 打开 edge 学习工具包的方法 :右上角三点-更多工具-学习工具包。 math solver 除了基础的计算求解外,还用图标展示公式,清晰直观。 地址:求解…

Vue 中的 scoped 和 /deep/ 深度选择器

Vue在组件里写 css 给 <style> 标签加上 scoped &#xff0c;比如&#xff1a; <style lang"less" scoped> &#xff0c;这样的 css 就是局部的&#xff0c;不会影响其他组件。 假设引入了一个子组件&#xff0c;并希望在组件中修改子组件的样式&#x…

多波束常用设备的坐标系统

CARIS处理多波束的时候&#xff0c;一般首先要建立船型文件&#xff0c;采集的设备或软件不同&#xff0c;其船型文件也不同&#xff0c;其中最关键就是采集设备和软件的坐标系统。 为了使用方便&#xff0c;不用费力地去查对应的使用手册&#xff0c;现将常用多波束设备和软件…

VMware vSAN 8.0U3 - 存储虚拟化软件

VMware vSAN 8.0U3 - 存储虚拟化软件 vSAN 8 with Express Storage Architecture 请访问原文链接&#xff1a;https://sysin.org/blog/vmware-vsan/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysin.org VMware vSAN 存储虚拟化软…

Covalent Network(CXT)通过社区投票将代币迁移并更名为 CXT,以推动人工智能更深层次的创新

专注于人工智能和 Web3 的模块化数据基础设施 Covalent Network&#xff08;CXT&#xff09;宣布&#xff0c;其治理提案已通过社区投票并顺利实施&#xff0c;即将原生代币 CQT 迁移为新的 CXT 代币&#xff0c;并部署至新的合约。这一关键性转变标志着 Covalent Network&…

Fastjson2使用JSONOObject或者mao转换为JSON字符串时丢失Null值字段

最近在工作中发现问题fastJson转换为JSONString时丢失值为null的问题特此解决。 public class test001 {public static void main(String[] args) {JSONObject jsonObject new JSONObject();jsonObject.put("foo1", "bar");jsonObject.put("foo2&quo…