首页 > 其他分享 >决策树

决策树

时间:2024-08-27 09:05:30浏览次数:2  
标签:剪枝 结点 right alpha 决策树 left

决策树

目录

参考资料:

  • 《统计学习方法》

随机变量 \(X\) 的熵定义为

\[H(X)=-\sum_{i=1}^n p_i \log p_i \tag{5.1} \]

条件熵

设有随机变量 \((X,Y)\),其联合概率分布为

\[P(X=x_i,Y=y_i)=p_{ij},\ \ \ i=1,2,\ \ \ \cdots,n;\ \ \ j=1,2,\cdots,m \tag{5.2} \]

条件熵 \(H(Y|X)\) 表示在已知随机变量 \(X\) 的条件下随机变量 \(Y\) 的不确定性,定义为 \(X\) 给定条件下 \(Y\) 的条件概率分布的熵对 \(X\) 的数学期望

\[H(Y|X)=\sum_{i=1}^n p_iH(Y|X=x_i),\ \ \ p_i=P(X=x_i),\ \ i=1,2,\cdots,n \tag{5.5} \]

信息增益

也称作互信息(mutual information)

特征 \(A\) 对训练数据集 \(D\) 的信息增益 \(g(D,A)\),定义为集合 \(D\) 的经验熵 \(H(D)\) 与特征 \(A\) 给定条件下 \(D\) 的经验条件熵 \(H(D|A)\) 之差,即

\[g(D,A)=H(D)-H(D|A) \tag{5.6} \]

经验熵 \(H(D)\) 表示对数据集 \(D\) 进行分类的不确定性,经验条件熵 \(H(D|A)\) 表示在特征 \(A\) 给定的条件下对数据集 \(D\) 进行分类的不确定性。

它们的差,即信息增益,就表示由于特征\(A\)而使得对数据集\(D\)的分类的不确定性减少的程度。

信息增益比

在分类问题困难时,也就是说在训练数据集的经验熵大的时候,信息增益值会偏大.反之,信息增益值会偏小.

使用信息增益比( information gain ratio)可以对这一问题进行校正.这是特征选择的另一准则.

信息增益比:特征 \(A\) 对训练数据集\(D\)的信息增益比\(g(D,A)\)定义为其信息增益\(g(D,A)\)与训练数据集D的经验熵\(H(D)\)之比:

\[g_R(D,A)=\frac{g(D,A)}{H(D)} \tag{5.10} \]

ID3

ID3算法的核心是在决策树各个结点上应用信息增益准则选择特征,递归地构建决策树.具体方法是:从根结点(root node)开始,对结点计算所有可能的特征的信息增益,选择信息增益最大的特征作为结点的特征,由该特征的不同取值建立子结点;再对子结点递归地调用以上方法,构建决策树;直到所有特征的信息增益均很小或没有特征可以选择为止.最后得到一个决策树.ID3相当于用极大似然法进行概率模型的选择.

image-20240311161745738

缺陷:容易产生过拟合

C4.5

C4.5 算法与ID3算法相似,在生成的过程中,用信息增益比来选择特征.

image-20240311162033948

决策树的剪枝

决策树生成学习局部的模型,而决策树剪枝学习整体的模型.

决策树的剪枝往往通过极小化决策树整体的损失函数(loss function)来实现.

设树\(T\)的叶结点个数为\(|T|\),\(t\)是树\(T\)的叶结点,该叶结点有 \(N_t\)个样本点,其中\(k\)类的样本点有\(N_{tk}\)个,\(k = 1,2,…,K\) ,\(H_t(T)\)为叶结点\(t\)上的经验熵,\(\alpha≥0\)为参数,则决策树学习的损失函数可以定义为

\[C_\alpha(T)=\sum_{t=1}^{|T|}N_tH_t(T)+\alpha|T| \tag{5.11} \]

其中经验熵为

\[H_t(T)=-\sum_k\frac{N_{tk}}{N_t}\log\frac{N_{tk}}{N_t} \tag{5.12} \]

将式子(5.11)右端记作

\[C(T)=\sum_{t=1}^{|T|}N_tH_t(T)=-\sum_{t=1}^{|T|}\sum_{k=1}^KN_{tk}\log\frac{N_{tk}}{N_t} \tag{5.13} \]

\[C_\alpha(T)=C(T)+\alpha|T| \tag{5.14} \]

式(5.14)中,\(C(T)\)表示模型对训练数据的预测误差,即模型与训练数据的拟合程度,\(|T|\)表示模型复杂度,参数\(\alpha≥0\)控制两者之间的影响.较大的\(\alpha\)促使选择较简单的模型(树),较小的\(\alpha\)促使选择较复杂的模型(树). \(\alpha=0\)意味着只考虑模型与训练数据的拟合程度,不考虑模型的复杂度.

image-20240311163457554

CART 算法

CART是在给定输入随机变量\(X\)条件下输出随机变量\(Y\)的条件概率分布的学习方法.CART假设决策树是二叉树,内部结点特征的取值为“是”和“否”,左分支是取值为“是”的分支,右分支是取值为“否”的分支.这样的决策树等价于递归地二分每个特征,将输入空间即特征空间划分为有限个单元,并在这些单元上确定预测的概率分布,也就是在输入给定的条件下输出的条件概率分布.

CART 回归树的生成

image-20240313214209809

CART 分类树生成

分类树用基尼指数选择最优特征,同时决定该特征的最优值切分点。

基尼指数:分类问题中,假设有K个类,样本点属于第k类的概率为p,则概率分布的基尼指数定义为

\[\text{Gini}(p)=\sum_{k=1}^Kp_k(1-p_k)=1-\sum_{k=1}^Kp_k^2 \tag{5.22} \]

对于二类分类问题,若样本点属于第1个类的概率是\(p\), 则概率分布的基尼指数为

\[\text{Gini}(p)=2p(1-p) \tag{5.23} \]

对于给定的样本集合\(D\),其基尼指数为

\[\text{Gini}=1-\sum_{k=1}^K \left (\frac{|C_k|}{|D|} \right)^2 \tag{5.24} \]

这里,\(C_k\) 是 \(D\) 中属于第 \(k\) 类的样本子集,\(K\)是类的个数。直观地说,基尼指数就是随便从样本集合中随机抽取两个样本,其类别标记不一致的概率。

如果样本集合 \(D\) 根据特征 \(A\) 是否取某一可能值 \(a\) 被分割成 \(D_1\) 和 \(D_2\) 两部分, 即

\[D_1=\{(x, y) \in D \mid A(x)=a\}, \quad D_2=D-D_1 \]

则在特征 \(A\) 的条件下,集合 \(D\) 的基尼指数定义为

\[\operatorname{Gini}(D, A)=\frac{\left|D_1\right|}{|D|} \operatorname{Gini}\left(D_1\right)+\frac{\left|D_2\right|}{|D|} \operatorname{Gini}\left(D_2\right) \]

基尼指数 \(\operatorname{Gini}(D)\) 表示集合 \(D\) 的不确定性, 基尼指数 \(\operatorname{Gini}(D, A)\) 表示经 \(A=a\) 分割后集合 \(D\) 的不确定性. 基尼指数值越大, 样本集合的不确定性也就越大, 这一点与熵相似.

image-20240311170522895

CART剪枝

CART 剪枝算法由两步组成

  1. 首先从生成算法产生的决策树 \(T_0\) 底端开始不断剪枝, 直到 \(T_0\) 的根结点, 形成一个子树序列 \(\left\{T_0, T_1, \cdots, T_n\right\}\)
  2. 然后通过交叉验证法在独立的验证数据集上对子树序列进行测试, 从中选择最优子树.

剪枝

在剪枝过程中, 计算子树的损失函数:

\[C_\alpha(T)=C(T)+\alpha|T| \]

其中, \(T\) 为任意子树, \(C(T)\) 为对训练数据的预测误差 (如基尼指数), \(|T|\) 为子树的叶结点个数, \(\alpha \geqslant 0\) 为参数, \(C_\alpha(T)\) 为参数是 \(\alpha\) 时的子树 \(T\) 的整体损失. 参数 \(\alpha\) 权衡训练数据的拟合程度与模型的复杂度.

Breiman 等人证明: 可以用递归的方法对树进行剪枝. 将 \(\alpha\) 从小增大, \(0=\) \(\alpha_0<\alpha_1<\cdots<\alpha_n<+\infty\), 产生一系列的区间 \(\left[\alpha_i, \alpha_{i+1}\right), i=0,1, \cdots, n\); 剪枝得到的子树序列对应着区间 \(\alpha \in\left[\alpha_i, \alpha_{i+1}\right), i=0,1, \cdots, n\) 的最优子树序列 \(\left\{T_0, T_1, \cdots, T_n\right\}\), 序列中的子树是联套的.

具体地, 从整体树 \(T_0\) 开始剪枝. 对 \(T_0\) 的任意内部结点 \(t\), 以 \(t\) 为单结点树的损失函数是

\[C_\alpha(t)=C(t)+\alpha \tag{5.27} \]

以 \(t\) 为根结点的子树 \(T\) 的损失函数是

\[C_\alpha\left(T_t\right)=C\left(T_t\right)+\alpha\left|T_t\right| \tag{5.28} \]

当 \(\alpha=0\) 及 \(\alpha\) 充分小时, 有不等式

\[C_\alpha\left(T_t\right)<C_\alpha(t) \tag{5.29} \]

当 \(\alpha\) 增大时, 在某一 \(\alpha\) 有

\[C_\alpha\left(T_t\right)=C_\alpha(t) \tag{5.30} \]

当 \(\alpha\) 再增大时, 不等式 (5.29) 反向. 只要 \(\alpha=\frac{C(t)-C\left(T_t\right)}{\left|T_t\right|-1}, T_t\) 与 \(t\) 有相同的损失函数值, 而 \(t\) 的结点少, 因此 \(t\) 比 \(T_t\) 更可取, 对 \(T_t\) 进行剪枝.

为此, 对 \(T_0\) 中每一内部结点 \(t\), 计算

\[g(t)=\frac{C(t)-C\left(T_t\right)}{\left|T_t\right|-1} \]

它表示剪枝后整体损失函数减少的程度。

在 \(T_0\) 中剪去 \(g(t)\) 最小的 \(T_t\), 将得到的子树作为 \(T_1\), 同时将最小的 \(g(t)\) 设为 \(\alpha_1 . T_1\) 为区间 \(\left[\alpha_1, \alpha_2\right)\) 的最优子树.

如此剪枝下去, 直至得到根结点. 在这一过程中, 不断地增加 \(\alpha\) 的值, 产生新的区间.

交叉验证

在剪枝得到的子树序列 \(T_0, T_1, \cdots, T_n\) 中通过交叉验证选取最优子树 \(T_\alpha\)

具体地, 利用独立的验证数据集, 测试子树序列 \(T_0, T_1, \cdots, T_n\) 中各棵子树的平方误差或基尼指数. 平方误差或基尼指数最小的决策树被认为是最优的决策树. 在子树序列中, 每棵子树 \(T_1, T_2, \cdots, T_n\) 都对应于一个参数 \(\alpha_1, \alpha_2, \cdots, \alpha_n\). 所以, 当最优子树 \(T_k\) 确定时, 对应的 \(\alpha_k\) 也确定了, 即得到最优决策树 \(T_\alpha\).

现在写出 CART 剪枝算法.

image-20240311171553746

预剪枝

  • 提前终止某些分支的生长

根据验证集,验证如果对该节点进行划分,划分前后决策树性能是否下降。可以考虑比如准确率,召回率等指标进行评判。

标签:剪枝,结点,right,alpha,决策树,left
From: https://www.cnblogs.com/EIPsilly/p/18381868

相关文章

  • 机器学习/数据分析--通俗语言带你入门决策树(结合分类和回归案例)
    ......
  • Python从0到100(五十三):决策树及决策树分类器
    决策树是⼀种常⽤的监督学习算法,⽤于解决分类和回归问题。它的基本原理是根据数据的特征来构建⼀颗树状结构,树的每个节点代表⼀个特征,每个分⽀代表⼀个特征的取值,叶节点代表输出类别或数值。决策树的⽬标是通过分裂特征,将数据集划分为纯度更⾼的⼦集,以最⼩化误差或不纯度......
  • 机器学习:随机森林决策树学习算法及代码实现
    1、概念        随机森林(RandomForest)是一种集成学习方法,它通过构建多个决策树来进行分类或回归预测。随机森林的核心原理是“集思广益”,即通过组合多个弱学习器(决策树)的预测结果来提高整体模型的准确性和健壮性。2、集成学习(EnsembleLearning):        集......
  • 机器学习之——决策树构建原理
    0前言本文主要讲述了决策树背后的数学原理以及构建方法,并通过实例数据一步步构建决策树,帮助读者理解。本文使用了大量的配图帮助读者理解。1理论基础1.1决策树的原型决策树思想的来源非常朴素,程序设计中的条件分支结构就是if-then结构,最早的决策树就是利用这类结构分割......
  • 亦菲喊你来学机器学习(10) --决策树算法
    文章目录决策树一、基本定义二、学习过程三、剪枝处理四、决策树的特点五、构建模型训练模型测试模型总结决策树机器学习中的决策树算法是一种基本的分类与回归方法,它通过树状结构建立决策模型,以解决分类和回归问题。以下是对决策树算法的详细解析:一、基本定义决......
  • 朴素贝叶斯、决策树及随机森林
    朴素贝叶斯相关理论    在机器学习算法中,大多数的算法都是判别方法,如决策树、KNN、逻辑回归、支持向量机等。而朴素贝叶斯是生成方法,直接找出输出特征Y和特征X的联合分布,用得出。            如果X和Y条件独立,        ......
  • Python个人收入影响因素模型构建:回归、决策树、梯度提升、岭回归
    全文链接:https://tecdat.cn/?p=37423原文出处:拓端数据部落公众号“你的命运早在出生那一刻起便被决定了。”这样无力的话语,无数次在年轻人的脑海中回响,尤其是在那些因地域差异而面临教育资源匮乏的年轻人中更为普遍。在中国,这种现象尤为明显:没有生在大城市的他们,从小便需面对......
  • 用Python实现9大回归算法详解——09. 决策树回归算法
    1.决策树回归的基本概念决策树回归(DecisionTreeRegression)是一种树状结构的回归模型,通过对数据集进行递归分割,将数据分成更小的子集,并在每个子集上进行简单的线性回归。决策树的核心思想是通过选择特征及其阈值来最大化每次分裂后的目标函数增益,从而找到使误差最小化的模型......
  • 【学习笔记】 陈强-机器学习-Python-Ch11 决策树(Decision Tree)
    系列文章目录监督学习:参数方法【学习笔记】陈强-机器学习-Python-Ch4线性回归【学习笔记】陈强-机器学习-Python-Ch5逻辑回归【课后题练习】陈强-机器学习-Python-Ch5逻辑回归(SAheart.csv)【学习笔记】陈强-机器学习-Python-Ch6多项逻辑回归【学习笔记及课后......
  • Python个人收入影响因素模型构建:回归、决策树、梯度提升、岭回归
    全文链接:https://tecdat.cn/?p=37423原文出处:拓端数据部落公众号“你的命运早在出生那一刻起便被决定了。”这样无力的话语,无数次在年轻人的脑海中回响,尤其是在那些因地域差异而面临教育资源匮乏的年轻人中更为普遍。在中国,这种现象尤为明显:没有生在大城市的他们,从小便需面对教育......