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

目录

一、认识决策树

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

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

相关推荐
聚客AI5 分钟前
🌟大模型为什么产生幻觉?预训练到推理的漏洞全揭秘
人工智能·llm·掘金·日新计划
Juchecar11 分钟前
一文讲清 nn.Sequential 等容器类
人工智能
阿里云云原生1 小时前
如何快速看懂「祖传项目」?Qoder 强势推出新利器
人工智能
美团技术团队1 小时前
LongCat-Flash:如何使用 SGLang 部署美团 Agentic 模型
人工智能·算法
程序员小袁2 小时前
基于C-MTEB/CMedQAv2-rerankingv的Qwen3-1.7b模型微调-demo
人工智能
飞哥数智坊3 小时前
AI 编程一年多,我终于明白:比技巧更重要的,是熟练度
人工智能·ai编程
新智元4 小时前
收手吧 GPT-5-Codex,外面全是 AI 编程智能体!
人工智能·openai
IT_陈寒4 小时前
Java 性能优化:5个被低估的JVM参数让你的应用吞吐量提升50%
前端·人工智能·后端
阿里云云原生4 小时前
阿里云基础设施 AI Tech Day AI 原生,智构未来——AI 原生架构与企业实践专场
人工智能
Memene摸鱼日报5 小时前
「Memene 摸鱼日报 2025.9.16」OpenAI 推出 GPT-5-Codex 编程模型,xAI 发布 Grok 4 Fast
人工智能·aigc