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

目录

一、认识决策树

[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,奇偶校验 或多路复用器问题。

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

相关推荐
行走的小派几秒前
Harmony输入法框架解析:IME架构、多模式输入引擎与语音识别链路
人工智能·架构·语音识别
UMI赋能企业5 分钟前
AI实战交流的提问模板:从业务描述到可分析的问题
人工智能·工作流·ai应用
2601_962071009 分钟前
Claude 值不值得用?价格、缓存与 API 接入成本怎么算
人工智能·缓存
自养Agent10 分钟前
Agent Harness 从用到会造:prompt 不是问句,是控制面板
人工智能·大模型·llm·prompt
SeeweTek11 分钟前
设计仿真先行 · 工艺精益求精 · 磁场精准输出
人工智能·亥姆霍兹线圈·磁场发生装置·seewetek·磁控机器人·传感器检测
国科安芯16 分钟前
ASP4644系列抗辐射电源模块的国产化进程、供应链安全与产业生态综述
人工智能·物联网·安全·电池·电源芯片·低轨卫星·抗辐射
2601_9606312321 分钟前
从中药产线技改备案细节,看传统药企的“专精特新”路径
人工智能
SEO_juper22 分钟前
Node.js 全站死链检测工具:从 sitemap 出发一次找全 404
开发语言·人工智能·python·node.js·seo·外贸独立站
张彦峰ZYF26 分钟前
让 Agent 获得“手、脚与反射弧”: MHS 如何重构物理世界的长程自主化基础设施
人工智能·ai agent·mhs·可复用能力·治理、记忆、持久编排·工具路由和物理执行·长程agent五平面架构
吞下星星的少年·-·27 分钟前
牛客周赛 119B题(贪心)
算法·贪心