机器学习(决策树)
一、核心思想:模拟人类的决策过程
想象一下你在判断“今天是否适合打网球”?你可能会问自己一系列问题:
-
外面下雨吗?
-
是 -> 不打网球
-
否 -> 下一个问题...
-
-
湿度高吗?
-
是 -> 不打网球
-
否 -> 下一个问题...
-
-
有风吗?
-
是 -> 不打网球
-
否 -> 打网球
-
这个过程就是一个简单的决策树。决策树算法的目标就是从已有的数据中自动学习出这样一套“提问规则”,从而对未知的数据进行预测。
二、决策树能做什么?(应用场景)
-
分类:预测一个离散的类别。
-
例如:根据症状判断疾病、根据财务历史判断贷款风险、识别垃圾邮件。
-
-
回归:预测一个连续的数值。
-
例如:根据房屋特征预测房价、根据历史数据预测销量。
-
为了清晰起见,我们将以分类任务为主进行详细说明。
三、关键术语与树的结构
一棵决策树包含以下基本组成部分:
-
根节点:代表整个数据集,是树的最顶层,是所有决策的起点。
-
内部节点:代表一个特征(或属性)上的测试。每个节点会提出一个问题。
-
分支:代表一个测试的结果。根据问题的答案(例如“是/否”、“特征值>阈值”),数据被分到不同的分支。
-
叶节点:也叫终端节点,代表最终的决策结果(分类的类别或回归的数值)。
四、决策树是如何“生长”出来的?(核心原理)
构建决策树的核心问题是:在每一个节点上,应该选择哪个特征进行分裂?如何选择最佳的分裂点?
答案是:我们需要一个衡量标准,来评估用某个特征分裂后,数据的“不纯度”降低了多少。我们的目标是让分裂后的子集尽可能“纯”,即同一个子集内的数据尽可能属于同一类别。
关键概念:不纯度
不纯度衡量的是一个数据集合中类别的混杂程度。
-
纯度最高:一个集合中所有样本都属于同一类别。(不纯度=0)
-
纯度最低:一个集合中样本均匀地分布在所有类别中。(不纯度最高)
常用的不纯度指标有以下三种:



简单总结: 算法在每一个节点都会遍历所有特征和所有可能的分裂点,计算使用它们分裂后的“不纯度下降值”(信息增益/基尼增益),然后选择使不纯度下降最多的那个特征和分裂点。
五、决策树如何停止生长?(剪枝)
如果让树无限地生长,直到每个叶节点都完全“纯”(只有一个样本或一个类别),这会导致严重的过拟合。这棵树会把训练数据中的所有噪声和特例都学进去,而在未知数据上表现很差。
为了防止过拟合,需要控制树的复杂度:
-
预剪枝:在生长过程中提前停止。
-
设置最大深度
-
设置叶节点最少样本数
-
设置节点分裂的最小样本数
-
设置分裂所需的最小不纯度下降值
-
-
后剪枝:让树充分生长,然后再剪掉一些分支。
-
用一部分数据(验证集)来评估,如果剪掉一个子树能让模型在验证集上的准确率提升或不降,就进行剪枝。
-
六、决策树的优缺点
优点:
-
非常直观,易于解释:生成的规则可以很容易地被业务人员理解,这是它最大的优势(“白盒模型”)。
-
无需大量数据预处理:对数据的分布、缺失值不敏感,不需要特征标准化(归一化)。
-
可以处理多种类型数据:既能处理数值型特征,也能处理类别型特征。
-
非线性关系:能够捕捉特征之间的非线性关系。
缺点:
-
容易过拟合:如果不进行剪枝,树会变得非常复杂,泛化能力差。
-
不稳定:训练数据的微小变化可能导致生成完全不同的树。这个问题可以通过集成学习(如随机森林)来缓解。
-
有偏性:倾向于选择那些具有更多取值的特征作为分裂特征。
-
难以学习复杂关系:对于如“异或”这类复杂的关系,单棵决策树很难表达。
总结
决策树是一种通过递归地选择最佳特征进行分裂,从而将数据集划分成更纯的子集,最终形成一棵树状结构的预测模型。
-
核心:选择分裂特征的标准(信息增益、基尼指数)。
-
关键:通过剪枝来平衡模型的复杂度和泛化能力,防止过拟合。
-
价值:其可解释性在医疗、金融等需要决策透明的领域具有无可替代的优势。
它是理解更复杂模型(如随机森林、梯度提升树GBDT/XGBoost)的基石,因为这些强大的算法正是由多棵决策树集成而来的。
更多推荐


所有评论(0)