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

目录

一、认识决策树

[1. 介绍](#1. 介绍)

[2. 决策树生成过程](#2. 决策树生成过程)

二、sklearn中的决策树

[1. tree.DecisionTreeClassifier(分类树)](#1. tree.DecisionTreeClassifier(分类树))

(1)模型基本参数

(2)模型属性

(3)接口

[2. tree.DecisionTreeRegressor(回归树)](#2. tree.DecisionTreeRegressor(回归树))

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

[4. 其他(补充)](#4. 其他(补充))

三、决策树的优缺点

[1. 优点](#1. 优点)

[2. 缺点](#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,奇偶校验 或多路复用器问题。

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

相关推荐
YummyJacky几秒前
Hermes Agent自进化的实现方式
人工智能·python
普鲁夕格13 分钟前
【AI翻唱】RVC和SVC声音音色模型难找?推荐这个下载网站
人工智能
亚马逊云开发者35 分钟前
【Bedrock AgentCore】AI Agent 回答不一致怎么办?双 Memory 架构实现服务标准化(附完整代码)
大数据·人工智能·架构
悟纤1 小时前
Seedance 2.0 API 已上线 | 支持「人像视频生成」|支持100并发 | 满血版 [灵龙AI API]
人工智能·音视频·seedance 2.0
男孩李1 小时前
什么是workbuddy
人工智能·语言模型
人工智能AI技术1 小时前
终身学习 Agent:积累知识、不遗忘、可进化
人工智能
DFCED1 小时前
突发!Sora 之父 Bill Peebles 离职:OpenAI 理想主义的又一次落幕
人工智能·大模型·agent·sora
_Evan_Yao1 小时前
RAG中的“Chunk”艺术:我试过10种切分策略后总结的结论
java·人工智能·后端·python·软件工程
拾薪1 小时前
[SuperPower] Brainingstorm - 流程控制架构分析
网络·人工智能·ai·架构·superpower·brainstorming
AI自动化工坊1 小时前
SemaClaw开源框架实践指南:从提示工程到安全工程的AI代理基础设施变革
人工智能·开源·ai agent·semaclaw