机器学习 决策树基本介绍

发布于:2025-08-04 ⋅ 阅读:(9) ⋅ 点赞:(0)

目录

一.决策树的基本概念

1.分类树

2.回归树

二.决策树的核心原理

1.熵和信息增益(分类树)

2.节点划分的依据

①用于分类的决策树

1.信息增益(ID3 算法):

2.信息增益比(C4.5 算法):

3.基尼指数(CART 算法):

​②用于回归的决策树

3.决策树过拟合与减枝

三.决策树参数详解

1.分类树 

2.回归树

四.决策树的构建步骤(以分类树为例)

五.关键参数调优


一.决策树的基本概念

1.分类树

决策树中的分类树是一种树形结构的预测模型,由根节点、内部节点、叶子节点和分支组成。每个内部节点代表一个特征的判断条件,分支代表判断结果(如 “是” 或 “否”),叶子节点则代表最终的预测结果。​

举个生活中的例子:当我们决定是否外出野餐时,可能会依次考虑 “天气是否晴朗”“温度是否适宜”“是否有大风” 等因素,每一步判断都会缩小决策范围,这就是分类树的工作逻辑。在机器学习中,这个过程被量化为对特征的逐步筛选和划分。

  • 分类树通过训练样本建立分类规则,属于有监督学习(需包含标签Y)。
  • 树结构包含根节点、非叶子节点(中间节点)和叶子节点(最终分类结果)。
  • 分类树优势:判断速度快,通过逐步特征判断(如优先判断“是否有xxx”)而非一次性计算所有特征。

2.回归树

  • 回归树是决策树的一种分支,用于回归分析,输出具体数值。
  • 回归树必须是二叉树结构,每个节点分裂为两个分支。
  • 构建过程:
    • 数据按特征值排序,计算相邻值的中点作为候选切分点。
    • 对每个切分点计算损失值(MSE,均方误差,公式:对切分后的两部分数据,分别计算其均值,再累加各数据点与均值的平方差),选择损失最小的点作为最优切分点。注意:有多个特征时,对每个特征独立计算最优切分点及损失值,选择全局损失最小的特征作为当前分裂依据。
    • 递归分裂,直到满足停止条件(如叶子节点样本数限制)。
  • 局限性:回归树预测结果为分段常数(如X<3.5时输出5.72),精度可能不足,后续可通过随机森林提升

二.决策树的核心原理

1.熵和信息增益(分类树)

  • 熵(Entropy):衡量数据混乱程度,计算公式为 -Σ(p_i * log₂p_i),其中p_i为某类别的概率。熵值越低,数据越纯净。
  • 信息增益:特征对分类结果的影响程度,计算方式为 标签熵 - 特征条件熵。信息增益越大,特征越重要。

2.节点划分的依据

决策树的核心在于如何选择最优特征进行节点划分,目标是让划分后的子节点 “纯度更高”—— 即子节点中的样本尽可能属于同一类别(分类问题)或取值更集中(回归问题)。常用的划分标准有以下几种:

①用于分类的决策树

from sklearn.tree import DecisionTreeClassifier
1.信息增益(ID3 算法):

基于信息熵的下降程度判断特征重要性。信息熵是衡量样本集合不确定性的指标,熵值越高,样本越混乱。信息增益 = 父节点熵 - 子节点熵的加权和,增益越大,划分效果越好。​

  • 步骤:
    1. 计算标签Y的熵。
    2. 计算各特征(如天气)对标签的条件熵及信息增益。
    3. 选择信息增益最大的特征作为根节点,递归划分子集(如单独处理“sunny”分支的数据)。
  • 局限性:ID3算法仅支持离散特征,后续改进为C4.5和CART算法。 
2.信息增益比(C4.5 算法):

解决信息增益对多取值特征的偏好问题,通过除以特征自身的熵值进行归一化。​

  • 在ID3基础上引入信息增益率(信息增益/特征自身熵)。
    • 特征自身熵计算示例:天气的熵为1.577。
    • 信息增益率=信息增益/特征自身熵,选择最大者作为根节点。
  • 与ID3核心区别:多一步计算特征自身熵,其他步骤相同。
3.基尼指数(CART 算法):

衡量样本集合的不纯度,值越小表示纯度越高。CART 树(分类与回归树)采用基尼指数作为划分标准,且只能生成二叉树。

  • 使用基尼指数(非熵)衡量分裂依据,选择基尼指数最小的特征。
    • 计算方法:对每个特征(如年龄、工作、房子、信贷),计算子节点的基尼系数并加权求和。
    • 示例:年龄的基尼指数为0.44,房子的基尼指数最小(0.27),故选为根节点。
  • 特点:适用于二分类,计算较繁琐但结果明确。

​②用于回归的决策树

from sklearn.tree import DecisionTreeRegressor
  • 均方误差(回归树):对于回归问题,通过计算划分前后的均方误差下降量选择最优特征,误差减少越多,划分越有效。

3.决策树过拟合与减枝

决策树的构建是一个 “自上而下、递归划分” 的过程:从根节点开始,每次选择最优特征划分样本,直到子节点中的样本全属于同一类别(分类)或无法进一步降低误差(回归),此时节点成为叶子节点。​

但完全生长的决策树容易出现过拟合(对训练数据过度拟合,泛化能力差)。因此需要剪枝优化,常用方法包括:

  • 预剪枝:提前限制条件(如树深度(max_depth)≤3、叶子节点数(max_leaf_nodes)≤15、叶子样本数(min_samples_leaf)≥4)。
  • 后剪枝:先让树完全生长,再通过代价复杂度剪枝(ccp_alpha参数)等方法移除 “性价比低” 的分支,简化树结构。

剪枝必要性:通过限制树复杂度(深度、节点数、样本数)平衡准确性与泛化性。

剪枝目的:防止过拟合,避免决策树过于庞大复杂,导致测试集性能下降

三.决策树参数详解

1.分类树 

DecisionTreeClassifier类参数源码如下

  • 分裂标准选择
    • criterion:可选基尼系数(Gini)或熵(entropy,对应C4.5算法)。
  • 分裂策略
    • splitterbest(选择最优特征分裂)或random(随机分裂),默认best
  • 特征数量控制
    • max_features:分裂时考虑的特征数量,通常默认全部特征。
  • 树结构限制
    • max_depth:树的最大深度(关键参数,需调试)。
    • min_samples_split:内部节点(非叶子节点)的最小样本数。
    • min_samples_leaf:叶子节点的最小样本数(低于阈值则停止分裂)。
  • 其他参数
    • random_state:随机种子(仅在随机分裂时有用)。
    • 权重相关参数(如min_weight_fraction_leaf)通常无需调整。

注意:

  • 数据量少或特征少时,可忽略部分参数(如max_depth)。
  • 大数据场景(如28万条数据)需重点调参(如深度限制)。
  • 特征重要性不足时,应通过特征选择/提取处理,而非减少max_features

2.回归树

DecisionTreeRegressor类参数源码如下

  • 分裂依据:默认MSE(均方误差)。
  • 其他参数:
    • splitter:选择best(最优分裂)或random(随机分裂)。
    • max_depth:树的最大深度。
    • min_samples_split:内部节点最小样本数。
    • min_samples_leaf:叶子节点最小样本数。

四.决策树的构建步骤(以分类树为例)

  1. 数据准备:收集带标签的样本数据,确保特征可量化(文本特征需转换为数值型)。​
  2. 计算纯度指标:对每个特征计算信息增益、基尼指数等指标,选择最优特征作为根节点。​
  3. 划分样本集:根据最优特征的取值将样本划分为子节点,递归处理每个子节点。​
  4. 停止划分:当子节点纯度达到阈值、样本数不足或树深度达到上限时,停止划分并标记为叶子节点。​
  5. 剪枝优化:通过预剪枝或后剪枝调整树结构,平衡拟合能力与泛化能力。

五.关键参数调优

决策树的性能很大程度上依赖参数设置,以下是scikit-learn中DecisionTreeClassifier的核心参数:​

  • criterion:划分标准,可选'entropy'(信息增益)或'gini'(基尼指数)。​
  • max_depth:树的最大深度,限制树的复杂度,防止过拟合。​
  • min_samples_split:节点分裂所需的最小样本数,过小易过拟合。​
  • min_samples_leaf:叶子节点所需的最小样本数,确保叶子节点有足够代表性。​
  • min_impurity_decrease:节点划分所需的最小不纯度下降量,低于此值则停止划分。​
  • ccp_alpha:代价复杂度剪枝参数,值越大剪枝越彻底,平衡复杂度与误差。​

调参建议:遍历参数组合,结合交叉验证选择最优参数。


网站公告

今日签到

点亮在社区的每一天
去签到