决策树的数学原理

本文深入探讨决策树的数学原理,从信息熵和二项分布的角度解释决策树构建的过程,揭示信息熵作为衡量标准的合理性。通过对目标函数的优化,推导出信息熵公式,并讨论了模型、目标函数和参数的关系。最后,概述了决策树在实际应用中的挑战和优化策略,如限制树的深度和使用随机森林。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

说到决策树,大家肯定不陌生,由于其结构简单,学习成本低,且可解释性强,有着广泛的应用。

因此各类书籍、技术博客都有介绍,且深入浅出、图文并茂、生动形象。

 

鉴于已经有很多带图的博客介绍决策树,这里就不上图了,主要以公式推导为主。 

 

本文主要分三块内容来介绍决策树:

  1. 首先会简单回顾下决策树的内容,由于这部分相对简单,大家了解的也多,因此会快速过一遍。
  2. 随后本文会对决策树的数学原理做详尽的剖析和推导,这也是本文的重点,做到知其然更知其所以然。
  3. 最后是决策树在工业应用中常见的一些形态,这部分内容在本文不做详细展开,留在后续文章中详述。

决策树的构建

通俗来讲,决策树的构建过程就是将数据根据其特征分布划分到不同的区域,使得同一个区域的样本有尽可能一致的类别标签。在决策树构建的过程中,我们需要一个衡量标准来确定每次数据划分所带来的收益,这个标准就是信息熵,以0-1二分类问题为例,衡量一个节点的信息熵公式如下:

 

 

其中p为当前节点中正样本的比例,Entropy越大,说明节点的样本越杂,因此Entropy越小越好。假设我们每次对数据划分都是将数据一分为二,分别为leftright, 分裂的收益就是分裂前节点的Entropy减去这两个节点的Entropy的加权和。即:Entropy(parent) - Prob(left) * Entropy(left) + Prob(right) * Entropy(right),这个值越大越好。这个收益,学术上我们称作“信息增益”。其中Prob(left)为左节点的样比例,Prob(right)为右节点的样本比例。

由于单纯使用信息增益作为标准来构建决策树,容易导致过拟合的问题。因此前辈们又引入了“信息增益率”,以及对树进行剪枝等方式来优化树的创建过程。这里我们只是提一下,不做更深的探讨,感兴趣的同学可以百度,Google相关内容学习。

 

信息熵的概率解释

上节提到的决策树构建过程,除了一个简单的信息熵公式之外,没有任何数学的元素。稍微有点编程经验的同学都可以快速编写一个决策树模型。因此我们说决策树模型简单,学习成本低。

但有些同学可能会追问,衡量数据划分收益的标准为什么是信息增益(熵的降低)而不是别的东西。或者说为什么它是靠谱的?本节,我们就来回答这个问题。过程中,我们会用到一些概率统计和微积分的基础知识。

我们还是以二分类问题为例,即样本中只有两类样本:正例(标记为“1”),负例(标记为“0”)。为了对二分类问题建模,我们需要一个假设,即假设第i个样本的模型结果pi的靠谱程度由如下公式衡量:

 

 

其中yi表示第i个样本的类标签,,通俗来讲就是假设样本类别判断正确的概率服从给定参数的二项分布,也叫伯努利分布,每个样本都服从相同的分布,且相互之间独立。这样,我们可以写出整个数据集的似然函数,也就是该二分类问题的目标函数:

 

 

模型优化的目的,或者说构建一棵决策树的目的,就是使得该公式的值尽可能的大。那这个跟我们要讨论的信息增益(熵的降低)有什么关系?

 

不急,我们先对目标函数两边分别取对数并取反得到:

 

 

求原函数的最大值等价于求该函数的最小值。

由于该函数对参数  的二阶导大于0恒成立,如下:

 

 

因此,这是一个有且仅有一个最小值的凸函数,为求极值对应的函数参数,只需求其一阶导等于0即可,即求 pi 使得:

 

 

根据决策树模型,整个数据集会被划分到不同的区域(叶子节点),而且被划分到同一个区域的样本的预测值相同,则我们只需对每个叶子节点求解:即可。其中pk为第k个节点的预测值,即该节点所有样本的预测值。

 

公式展开如下:

 

 

 

化解得到:

 

 

求解得到:

 

 

其中m为该节点样本总数,分子部分为该节点正样本数,则pk即为该节点正样本的比例。将pk带入公式得到:

 

 

进一步为了消除节点样本个数对该值的影响,使用节点样本数对该结果做归一化,得到:

 

 

   

 

没错,你没有看错!这就是我们开头抛出的信息熵公式。可见信息熵并不是什么凭空降临的上帝准则,而是从二项分布中,一步步推出来的。不知道香浓在提出信息熵的时候,是不是用了二项分布。如果是,那就是新瓶装旧酒,没什么新意;如果真是灵机一动的神来之笔,那就是英雄所见略同,虽然这两个英雄隔了好几个世纪。    

 

几个概念

在工作中,我们常常听到诸如模型、目标、参数等概念。那什么是模型、什么是目标函数、什么是参数,它们之间有什么关系?

 

  • 关于模型

我们讨论的决策树,是通过将数据划分到不同的互不重合区域(对应于树的生长过程),使得每个区域的样本有尽可能一直的类标签(对应于目标函数的最大化)的模型。只是一种建模方法,而与要优化的目标没有必然关系。

 

  • 关于目标函数

而上文中我们为了解释信息熵的原理而引入的二项分布,以及基于此构造的损失函数Loss,则是我们的目标函数。我们的目标是最大化该函数的值。

 

  • 关于模型参数

有了目标函数,才有模型的参数。模型参数是在模型结构的约束下,依据给定的训练数据,使得目标函数取的最大值时的函数参数。

 

  • 三者关系

一个模型可以有很多个目标,一个目标可以通过不同的模型去优化。即模型结构与目标函数是独立的,互补依赖,互补干涉。

而参数则共同依赖于模型结构和目标函数,有什么样的目标函数,就有什么样的参数形式;而模型的结构则决定了最终的参数结果。

 

决策树的应用

读到此处相信你一定对决策树有了新的理解,不幸的是如果我们单纯地按照本文所讲的内容去建一棵决策树,你会发现模型极易出现过拟合,没什么用处。因此工业上在使用决策树模型来建模数据时,往往要加上一些限制和约束。比如说限制树的深度、限制树叶子节点的个数、为模型参数加上L2或者L1的显式正则,更或者我们使用多棵而不是仅仅使用单棵树来建模数据。

使用多棵树来建模时,树的组合方式又有不同的选择,比如:boosting,bagging。使用Boosting来组合决策树的模型我们称之为GBDT(gradient boosting decision tree);而使用bagging方式来组合决策树的模型我们则称之为random Forest(随机森林)。这也是工业界最常使用的两种树模型,我们统称为TreebasedModel......

 

欲知后事如何,且听下回分解。

 

 

<think>好的,用户现在想了解决策树数学原理和工作原理。之前他们已经问过随机森林的数学原理,而随机森林是建立在决策树的基础上的,所以可能需要先回顾一下决策树的基础,再深入数学部分。用户可能已经有一定的机器学习基础,但需要更详细的数学推导。首先,我需要确认用户提供的引用内容。引用[1]提到决策树的构建包括特征选择、生成和剪枝,其中ID3用信息增益,C4.5用信息增益率,CART用基尼指数或均方误差。引用[2]则讨论了预剪枝策略,防止过拟合。这些内容需要整合到回答中,特别是数学公式部分。用户的问题集中在数学基础和工作原理,所以需要详细解释特征选择的数学标准,比如信息增益的计算、基尼不纯度的公式,以及剪枝的数学方法。同时,要确保所有数学表达式符合LaTeX格式,行内用$...$,独立公式用$$...$$。接下来,我需要分步骤构建回答: 1. **特征选择的数学标准**:-信息增益(ID3):需要给出信息熵的定义,信息增益的计算公式,并说明为什么选择信息增益大的特征。-信息增益率(C4.5):解释信息增益的问题,引入固有值,给出公式。-基尼指数(CART):基尼不纯度的公式,分类问题中的应用。-均方误差(CART回归):回归树中的分裂标准。2.**决策树生成过程**:-递归分割的步骤,如何选择最优特征和分割点。-终止条件的数学表达,比如纯度达到阈值,样本数过少等。 3. **剪枝的数学原理**:-预剪枝的策略,如卡方检验、信息增益阈值。-后剪枝中的代价复杂度剪枝,损失函数的定义,正则化参数的作用。 4. **关键算法对比**:-ID3、C4.5、CART的区别,特别是在数学标准上的不同。 需要确保每个部分都有对应的数学公式,并且正确引用用户提供的资料中的内容,比如在提到剪枝时引用[1]和[2]。同时,生成的相关问题需要与决策树数学原理相关,比如过拟合的数学分析、不同算法的公式差异等。 可能需要注意的地方是,用户可能容易混淆信息增益和基尼指数的区别,或者不明白剪枝的具体数学方法。因此,在解释时要清晰,公式准确,例子恰当。例如,在信息增益部分,可以举一个简单的数据集例子,计算熵和分裂后的信息增益。最后,检查所有数学表达式是否符合格式要求,引用是否正确,回答结构是否清晰,确保用户能够逐步理解决策树的数学基础和工作原理。</think>### 决策树算法的数学基础与工作原理 决策树算法的核心数学原理体现在**特征选择标准**、**递归分割策略**和**剪枝优化方法**三个关键环节。以下是严格的数学推导框架: --- #### 一、特征选择的数学标准 1. **信息熵(ID3算法)** 定义数据集$D$的信息熵为: $$ H(D) = -\sum_{k=1}^K p_k \log_2 p_k $$ 其中$p_k$为类别$k$的比例。特征$A$对数据集$D$的信息增益为: $$ \text{Gain}(A) = H(D) - \sum_{v=1}^V \frac{|D_v|}{|D|} H(D_v) $$ 选择使信息增益最大的特征进行分裂[^1]。 2. **信息增益率(C4.5算法)** 引入特征$A$的固有值(Intrinsic Value): $$ \text{IV}(A) = -\sum_{v=1}^V \frac{|D_v|}{|D|} \log_2 \frac{|D_v|}{|D|} $$ 信息增益率定义为: $$ \text{GainRatio}(A) = \frac{\text{Gain}(A)}{\text{IV}(A)} $$ 该指标缓解了ID3对多值特征的偏好[^1]。 3. **基尼指数(CART分类树)** 基尼不纯度定义: $$ \text{Gini}(D) = 1 - \sum_{k=1}^K p_k^2 $$ 特征分裂后基尼指数变化量: $$ \Delta\text{Gini} = \text{Gini}(D) - \left( \frac{|D_{\text{左}}|}{|D|}\text{Gini}(D_{\text{左}}) + \frac{|D_{\text{右}}|}{|D|}\text{Gini}(D_{\text{右}}) \right) $$ 4. **均方误差(CART回归树)** 分裂后节点内方差: $$ \text{MSE} = \frac{1}{N} \sum_{i=1}^N (y_i - \bar{y})^2 $$ 选择使左右子节点MSE总和最小的分裂方式[^1]。 --- #### 二、决策树生成过程 1. **递归分割策略** 输入:数据集$D$,特征集$F$ 步骤: - 若$D$中样本全属同一类别 → 标记为叶节点 - 若$F=\emptyset$ → 标记为样本最多的类别 - 否则: - 选择最优特征$A^* = \arg\max_{A \in F} \text{Gain}(A)$ - 对每个特征值$a_v$生成分支,递归调用本过程 2. **终止条件** - 最大树深度$d_{\text{max}}$ - 节点样本数$N < N_{\text{min}}$ - 纯度提升$\Delta H < \epsilon$(预剪枝策略)[^2] --- #### 三、剪枝的数学原理 1. **预剪枝的数学条件** - 卡方检验:判断分裂前后类别分布差异是否显著 $$ \chi^2 = \sum_{i=1}^k \frac{(O_i - E_i)^2}{E_i} $$ 其中$O_i$为观测频数,$E_i$为期望频数 - 信息增益阈值:$\Delta H < \delta$ 2. **后剪枝(代价复杂度剪枝)** 定义损失函数: $$ C_\alpha(T) = \sum_{t=1}^{|T|} N_t H(t) + \alpha |T| $$ 其中: - $N_t$:节点$t$的样本数 - $H(t)$:节点$t$的熵 - $\alpha$:正则化参数 通过交叉验证选择最优$\alpha$,剪去使$C_\alpha(T)$增大的子树[^1] --- #### 四、关键算法对比 | 算法 | 特征选择标准 | 树类型 | 剪枝方式 | |------|--------------|--------|----------| | ID3 | 信息增益 | 多叉树 | 无 | | C4.5 | 信息增益率 | 多叉树 | 后剪枝 | | CART | 基尼指数/均方误差 | 二叉树 | 代价复杂度剪枝 | --- ### 数学推导示例(信息增益计算) 假设数据集$D$有10个样本,类别分布为[6,4]。特征$A$分裂后得到两个子集$D_1$(5个样本,分布[4,1])和$D_2$(5个样本,分布[2,3])。 1. 原始熵: $$ H(D) = -\left(\frac{6}{10}\log_2\frac{6}{10} + \frac{4}{10}\log_2\frac{4}{10}\right) \approx 0.971 $$ 2. 分裂后熵: $$ H(D_1) \approx 0.722,\quad H(D_2) \approx 0.971 $$ $$ H(D|A) = \frac{5}{10} \times 0.722 + \frac{5}{10} \times 0.971 = 0.8465 $$ 3. 信息增益: $$ \text{Gain}(A) = 0.971 - 0.8465 = 0.1245 $$ ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值