Ultralytics YOLO27: 加入候补名单。
获取 YOLO 许可
返回 Ultralytics 术语表

Decision Tree

决策树通过一系列从数据中学到的特征问题来进行预测。了解如何选择划分方式、如何通过剪枝抑制过拟合,以及相关代码。

决策树是一种监督学习模型,通过针对输入特征连续提出是非问题来进行预测,例如“收入是否高于 50,000 美元?”,并根据答案从根节点一路遍历到包含预测结果的叶节点。分类树在每个叶节点预测一个类别,回归树则预测一个数值。每次预测都能用一串可读规则表示,因此决策树是可解释人工智能(XAI)的标准工具;决策树也是随机森林和梯度提升集成模型的构建基础,而后者在中等规模的表格数据集上仍胜过深度学习。Breiman、Friedman、Olshen 和 Stone 于 1984 年提出的 CART 算法,以及 Ross Quinlan 于 1986 年提出的 ID3 和 1993 年提出的 C4.5,奠定了从数据中学习决策树的方法。

决策树的构建方式#

决策树通过递归划分自顶向下生长。在每个节点,算法都会为候选分裂评分;每个候选分裂由一个特征和(对于数值特征)一个阈值构成。算法会保留能使两个子节点最同质的分裂,并在每个子节点中重复搜索。分类树使用基尼不纯度或熵来衡量同质性:基尼不纯度表示如果按照节点内各类别所占比例随机分配标签,节点中的随机样本被错误分类的概率;熵的减少量则称为信息增益。回归树会选择能最大程度降低平方误差的分裂,每个叶节点预测其训练样本目标值的均值。当节点变得纯净、样本数量太少或达到最大深度时,树便停止生长。每次分裂只向前看一步,因此这种贪心搜索能快速构建一棵不错的树;而要找到理论上最优的树是 NP-hard 问题。

Scikit-learn 的 DecisionTreeClassifier 实现了经过优化的 CART 版本。此示例在鸢尾花数据集上构建一棵深度为 2 的树,并打印出学到的规则:

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier, export_text

iris = load_iris()
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, random_state=42)

# A depth limit keeps the tree small enough to read and less prone to overfitting
clf = DecisionTreeClassifier(max_depth=2, random_state=42)
clf.fit(X_train, y_train)

print(export_text(clf, feature_names=iris.feature_names))
print(f"Test accuracy: {clf.score(X_test, y_test):.2f}")

这棵树只使用花瓣长度:长度不超过 2.45 厘米的花归为 setosa(类别 0);另一个阈值 4.75 厘米则将 versicolor(类别 1)与 virginica(类别 2)分开。这些规则能正确分类 97% 的留出花样本。

每次分裂都是这种形式的阈值规则,既可以由树从数据中学到,也可以由人手动设定。Ultralytics AIGym 训练监测器会为 YOLO26 姿态估计输出手动设置两条此类规则:根据肩部、肘部和手腕关键点计算出的肘部角度超过 145° 时,将帧标记为“向上”;角度低于 90° 时则标记为“向下”;每次从向上变为向下时计为一次重复。

过拟合与剪枝#

如果一棵树一直生长到每个叶节点都纯净,它就会记住训练数据,连噪声也不放过,这是教科书式的过拟合。预剪枝通过最大深度或叶节点最少样本数等限制提前停止生长。后剪枝会先生成完整的树,再移除贡献很小的分支;scikit-learn 通过 ccp_alpha 参数实现最小代价复杂度剪枝,数值越大,剪枝越多。这两种限制都是通过交叉验证选择的超参数。

即使经过剪枝,决策树仍有较高方差:训练数据稍有变化,就可能改变顶部的分裂,进而改变其下方的所有分裂。集成模型通过组合多棵树来解决这一问题:随机森林会对使用自助采样样本训练的树求平均,而梯度提升则会逐棵添加树,以纠正前面树的错误。

优势与局限#

决策树可以同时处理数值和类别特征,无需缩放特征,无需手动进行特征工程就能捕捉交互和非线性效应,而且只需几次比较即可完成预测。决策树的分裂与坐标轴对齐,因此“支出超过收入”这样的对角边界会变成由许多分裂组成的阶梯,除非添加一个比值特征。回归树会在每个叶节点内预测一个常数,因此不同于线性回归,无法外推训练数据范围之外的趋势。

应用场景#

  • 信用决策:贷款机构使用浅层树和基于树的评分卡,按风险对申请进行分类;每项决策都能追溯到产生该决策的收入、信用历史和债务阈值。
  • 临床分诊:以树形式构建的临床决策规则会根据生命体征和症状为患者分流,例如判断患者是否需要立即进行影像检查。
  • 客户流失:决策树根据客户的使用情况、在网时长和支持服务记录划分客群,识别取消服务风险高低的群体,并以通俗语言描述每个群体的判断路径。
  • 预测性维护:基于振动、温度和运行时间特征训练的梯度提升树,可估算哪些机器可能在下次维修前发生故障。
  • 随机森林:在自助采样样本和随机特征子集上训练多棵树并取平均,以牺牲单棵树的可读性为代价,换取更高的准确率和稳定性。
  • XGBoost、LightGBM 和 CatBoost:梯度提升库会逐棵添加树,以纠正之前树的错误;LightGBM 专为大型数据集上的速度而设计,CatBoost 则专为原生类别特征而设计。
  • 深度学习:神经网络从原始图像、音频和文本中学习特征,而决策树则在表格中已有的特征列上进行分裂。
  • 决策分析树:在运筹学和商业规划中,决策树也可以是分析人员手工绘制的图,其中包含决策节点、机会节点和收益,用于按预期价值比较方案;这类决策树基于估计概率构建,而不是从训练数据中学习。

探索解决方案

体育领域的计算机视觉

体育领域的计算机视觉

了解 Ultralytics YOLO 如何通过球员和球追踪、表现分析、教练洞察及运动员康复,推动体育视觉技术的发展。
了解详情
航空影像计算机视觉

航空影像计算机视觉

使用 Ultralytics YOLO 将无人机和航空影像转化为农业、水产养殖、保护工作和地理空间分析的实时洞察。
了解详情
航空航天中的计算机视觉

航空航天中的计算机视觉

使用 Ultralytics YOLO 将计算机视觉应用于航空航天领域,包括飞机检查、跑道 FOD 检测、机场地面作业和复合材料缺陷检测。
了解详情
安防领域的计算机视觉

安防领域的计算机视觉

使用 Ultralytics YOLO 模型守护每个场所。视觉 AI 可用于周界监控、威胁检测、车牌识别和工作场所安全。
了解详情
机器人领域的计算机视觉

机器人领域的计算机视觉

使用 Ultralytics YOLO 模型提升智能机器的能力。机器人领域的视觉 AI 可用于自主导航、感知、目标跟踪和实时控制。
了解详情
物流中的计算机视觉

物流中的计算机视觉

借助 Ultralytics YOLO 模型优化物流流程。视觉 AI 可用于包裹检查、分拣、车辆跟踪和仓库安全实时监控。
了解详情
零售中的计算机视觉

零售中的计算机视觉

借助 Ultralytics YOLO 模型重新构想零售。视觉 AI 可用于库存跟踪、货架监控、排队管理和更深入的客户洞察。
了解详情
医疗领域的计算机视觉

医疗领域的计算机视觉

借助 Ultralytics YOLO 模型构建医疗解决方案。医疗领域的视觉 AI 可加快医学影像处理、优化诊断并监测患者。
了解详情
制造业中的计算机视觉

制造业中的计算机视觉

利用 Ultralytics YOLO 模型优化制造流程。视觉 AI 可用于质量控制、缺陷检测、个人防护装备合规检查和装配线自动化。
了解详情
汽车领域的计算机视觉

汽车领域的计算机视觉

利用 Ultralytics YOLO 模型在汽车领域应用计算机视觉。视觉 AI 可提升道路安全、驾驶辅助和车辆自动化水平,让道路更智能。
了解详情
农业中的计算机视觉

农业中的计算机视觉

借助 Ultralytics YOLO 模型,将视觉 AI 引入智慧农业。为作物监测、牲畜追踪和精准农业提供支持,从而提高产量并实现更智能的生产。
了解详情

让我们携手构建 AI 的未来!

开启你的旅程,迎接机器学习的未来