人工智能之机器学习基础——决策树(Decision Tree)
决策树是一种用于分类和回归的非参数模型,能够通过一系列的条件判断(分裂规则)将输入数据划分为子区域,从而完成预测任务。
1. 决策树的基本结构
决策树由以下三部分组成:
- 根节点(Root Node):
- 表示整个数据集,最初没有任何划分。
- 内部节点(Internal Node):
- 表示一个特定的特征测试条件(例如:x1>5x_1 > 5x1>5)。
- 根据测试结果将数据划分为多个子节点。
- 叶节点(Leaf Node):
- 表示最终的分类或回归输出。
- 分类任务中,叶节点存储类别标签;
- 回归任务中,叶节点存储预测的值(如平均值)。
决策路径:
- 从根节点到叶节点的一条路径,代表了一系列的决策规则。
3. 决策树的优缺点
3.1 优点
- 简单直观:
- 决策树易于理解和解释,适合可视化。
- 无需特征缩放:
- 对数据的缩放或标准化不敏感。
- 处理非线性关系:
- 决策树能够自动划分非线性边界。
- 多用途:
- 同时适用于分类和回归任务。
3.2 缺点
- 过拟合:
- 决策树容易生成过于复杂的树,从而在训练集上表现很好,但在测试集上泛化能力较差。
- 不稳定性:
- 数据的微小变化可能导致树结构的显著变化。
- 倾向于划分较多的特征:
- 决策树可能偏好取值范围多的特征。
4. 决策树的正则化方法
为了防止过拟合,可以对决策树进行正则化:
- 最大深度(max_depth):
- 限制树的深度,防止树过于复杂。
- 最小样本分割(min_samples_split):
- 控制每次分裂所需的最小样本数。
- 最小样本叶节点(min_samples_leaf):
- 控制叶节点中的最小样本数。
- 剪枝(Pruning):
- 后剪枝:先生成完全的树,再对其进行剪枝;
- 预剪枝:在构建过程中提前停止分裂。
5. 决策树的扩展
5.1 随机森林(Random Forest)
- 随机森林由多个决策树组成,是一种基于集成学习的模型。
- 每棵树在训练时随机选择一部分特征,最终通过投票(分类)或平均(回归)得到结果。
5.2 梯度提升树(Gradient Boosted Tree, GBT)
- 使用多个决策树,按梯度提升的方式逐步减小模型误差。
5.3 极端随机树(Extra Tree)
- 在决策树的基础上引入更多随机性,例如随机选择分裂点。
6. 决策树分类任务示例
问题描述
我们有一个小型数据集,目标是预测一个人是否适合参加户外运动("是" 或 "否"),特征包括天气、温度和风速。数据如下:
天气 | 温度 | 风速 | 是否适合运动 |
---|---|---|---|
晴天 | 热 | 强 | 否 |
晴天 | 热 | 弱 | 否 |
多云 | 热 | 强 | 是 |
雨天 | 温暖 | 强 | 是 |
雨天 | 冷 | 强 | 否 |
雨天 | 冷 | 弱 | 是 |
多云 | 冷 | 弱 | 是 |
晴天 | 温暖 | 强 | 否 |
晴天 | 冷 | 弱 | 是 |
雨天 | 温暖 | 弱 | 是 |
目标是构建一棵决策树来预测“是否适合运动”。
本文来自博客园,作者:z_s_s,转载请注明原文链接:https://www.cnblogs.com/zhoushusheng/p/18555658
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步