机器学习(4.决策树)

四.决策树

1.算法原理

一个简单的决策树模型:

在这里插入图片描述

决策树基本算法:

在这里插入图片描述

定义:决策树是机器学习中常用的一种监督学习算法,用于分类和回归任务。决策树是一种树状结构,其中每个节点表示一个特征,每个分支代表一个特征值的可能性,而叶子节点表示最终的分类或回归结果。在决策树中,我们通过一系列的问题和条件来逐步将数据分割成不同的类别或数值范围。

理解:

  • 决策树是基于树结构对问题进行决策或判定的过程。

    • 从逻辑角度,一堆if else语句的组合
    • 从几何角度,根据某种准则划分特征空间
  • 决策过程中提出的判定问题(内部节点)是对某个属性的“测试”,每个测试的结果可以导出最终结论(叶节点)或导出进一步判定问题(下一层内部节点,其考虑范围是在上次决策结果的限定范围之内)。

核心:决策树的核心是选取划分条件(划分属性)

最终目的:样本划分越**“纯”**越好(决策树的算法也是基于如何选择划分更纯的属性)

2.常见决策树算法

2.1 ID3决策树
2.1.1信息熵

定义:样本集合 D D D中第 k k k类样本所占比例为 p k ( k = 1 , 2 , 3... , N ) p_k(k=1,2,3...,N) pk(k=1,2,3...,N),则 D D D的信息熵定义为: E n t ( D ) = − ∑ k = 1 N p k ∗ l o g 2 ( p k ) Ent(D)=-\sum\limits_{k=1}^{N}p_k * log2(p_k) Ent(D)=k=1Npklog2(pk)

作用:信息熵可以度量随机变量X的不确定性,信息熵越大越不确定,可转换到度量样本集合纯度,信息熵越小样本集合的纯度越高

  • 最大值(纯度最低):当样本集合中各个类别所占比例相同时 p 1 = p 2 = . . . p k = 1 N p_1=p_2=...p_k=\frac {1}{N} p1=p2=...pk=N1,信息熵达到最大值 l o g 2 N log_2N log2N,纯度最低;
  • 最小值(纯度最高):当样本集合中只有类别 i i i的样本,其他类别样本数量为0时 p i = 1 , p 1 = p 2 = . . . = p i − 1 = p i + 1 = . . . = p k = 0 p_i=1,p_1=p_2=...=p_{i-1}=p_{i+1}=...=p_k=0 pi=1,p1=p2=...=pi1=pi+1=...=pk=0,信息熵达到最小值0,纯度最高。
2.1.2条件熵

作用:条件熵表示的是在已知一个随机变量的条件下, 另一个随机变量的不确定性(∵两者有关系)

定义:在已知 X X X的条件下,随机变量 Y Y Y的条件熵表示已知 X X X取值 x i x_i xi后, Y Y Y的不确定性,计算公式如下: E n t ( Y ∣ X ) = ∑ i = 1 n p i E n t ( Y ∣ X = x i ) Ent(Y|X) = \sum_{i=1}^np_iEnt(Y|X=x_i) Ent(YX)=i=1npiEnt(YX=xi)

说明

假设随机变量 X 和 Y ,均服从以下联合概率分布:

P ( X = x i , Y = y j ) = p i j      i = 1 , 2 , . . . . , n ; j = 1 , 2 , . . . , m P(X = x_i , Y = y_j ) = p_{ij} \space\space\space\space i = 1, 2, ...., n; j = 1, 2, ..., m P(X=xi,Y=yj)=pij    i=1,2,....,n;j=1,2,...,m

条件熵(样本集合):从单个特征 a a a的角度来看,假设其可能取值为{ a 1 , a 2 , . . . , a V a^1,a^2,...,a^V a1,a2,...,aV}, D v D^v Dv表示属性 a a a取值为 a v ∈ a^v∈{} av{ a 1 , a 2 , . . . , a V a^1,a^2,...,a^V a1,a2,...,aV}的样本集合, ∣ D v ∣ ∣ D ∣ \frac {|D^v|}{|D|} DDv表示占比,那么在已知属性 a a a的取值后,样本集合 D D D的条件熵为: ∑ v = 1 V ∣ D v ∣ ∣ D ∣ E n t ( D v ) \sum_{v=1}^V\frac {|D^v|}{|D|}Ent(D^v) v=1VDDvEnt(Dv)

注: ∑ v = 1 V ∣ D v ∣ ∣ D ∣ E n t ( D v ) \sum_{v=1}^V\frac {|D^v|}{|D|}Ent(D^v) v=1VDDvEnt(Dv)表示在经过a属性划分后(条件)的信息熵

eg:

假设你有一个数据集 D D D,其中包含了关于某个市场上不同商品销售额的信息,同时考虑了商品的不同特征,比如价格( a a a)和季节性( b b b)。

属性 a a a表示商品的价格范围,可能的取值为{ a 1 , a 2 , a 3 a^1, a^2, a^3 a1,a2,a3},分别表示低价、中价和高价商品。属性 b b b表示季节性,可能的取值为{ b 1 , b 2 b^1, b^2 b1,b2},分别表示销售季节和非销售季节。

你想要计算在已知价格( a a a)和季节性( b b b)的情况下,整个市场上商品销售额的条件熵。

首先,你将数据集 D D D根据价格( a a a)和季节性( b b b)属性进行分割,得到不同子集合 D a 1 , b 1 , D a 1 , b 2 , D a 2 , b 1 , D a 2 , b 2 , D a 3 , b 1 , D a 3 , b 2 D^{a^1,b^1}, D^{a^1,b^2}, D^{a^2,b^1}, D^{a^2,b^2}, D^{a^3,b^1}, D^{a^3,b^2} Da1,b1,Da1,b2,Da2,b1,Da2,b2,Da3,b1,Da3,b2

然后,你可以使用下面的公式来计算条件熵:

条件熵 = ∑ a ∑ b ∣ D ∣ ∣ D a , b ∣ ⋅ Ent ( D a , b ) \text{条件熵} = \sum_{a}\sum_{b}\frac{|D|}{|D^{a,b}|} \cdot \text{Ent}(D^{a,b}) 条件熵=abDa,bDEnt(Da,b)

在这个公式中, ∣ D a , b ∣ ∣ D ∣ \frac{|D^{a,b}|}{|D|} DDa,b表示了每个子集合占整个数据集的比例, Ent ( D a , b ) \text{Ent}(D^{a,b}) Ent(Da,b)表示了每个子集合的熵。

假设你已经计算了每个子集合的熵,并且有以下结果:

  • Ent ( D a 1 , b 1 ) = 0.8 \text{Ent}(D^{a^1,b^1}) = 0.8 Ent(Da1,b1)=0.8
  • Ent ( D a 1 , b 2 ) = 0.6 \text{Ent}(D^{a^1,b^2}) = 0.6 Ent(Da1,b2)=0.6
  • Ent ( D a 2 , b 1 ) = 0.7 \text{Ent}(D^{a^2,b^1}) = 0.7 Ent(Da2,b1)=0.7
  • Ent ( D a 2 , b 2 ) = 0.5 \text{Ent}(D^{a^2,b^2}) = 0.5 Ent(Da2,b2)=0.5
  • Ent ( D a 3 , b 1 ) = 0.9 \text{Ent}(D^{a^3,b^1}) = 0.9 Ent(Da3,b1)=0.9
  • Ent ( D a 3 , b 2 ) = 0.4 \text{Ent}(D^{a^3,b^2}) = 0.4 Ent(Da3,b2)=0.4

假设每个子集合的占比相等,即 ∣ D a , b ∣ ∣ D ∣ = 1 6 \frac{|D^{a,b}|}{|D|} = \frac{1}{6} DDa,b=61。那么,你可以计算条件熵:

条件熵=16⋅(0.8+0.6+0.7+0.5+0.9+0.4)=0.6833条件熵=61⋅(0.8+0.6+0.7+0.5+0.9+0.4)=0.6833

这个条件熵的值表示了在已知价格和季节性的情况下,商品销售额的不确定性。这个值越低,说明价格和季节性对销售额的影响越大,越高则影响越小。这个示例演示了如何使用条件熵来量化不同属性对某一特定指标的影响程度。

2.1.3信息增益

在这里插入图片描述

定义:在已知属性(特征) a a a的取值后不确定性减少的量,也即纯度的提升,信息增益为: G a i n ( D , a ) = E n t ( D ) − ∑ v = 1 V ∣ D v ∣ ∣ D ∣ E n t ( D v ) Gain(D, a) = Ent(D)−\sum_{v=1}^V\frac {|D^v|}{|D|}Ent(D^v) Gain(D,a)=Ent(D)v=1VDDvEnt(Dv)

简单理解

信息增益 = 原信息熵 (不按属性a划分的)-后信息熵(按属性a划分后的)

例子:

在这里插入图片描述

补充

信息论中信息增益也称为互信息,其表示已知一个随机变量的信息后使得另一个随机变量的不确定性减少的程度。具体地,假设有随机变量 X X X Y Y Y,那么在已知 X X X的信息后, Y Y Y的不确定性减少的程度为: I ( Y ; X ) = E n t ( Y ) − E n t ( Y ∣ X ) I(Y;X) = Ent(Y) − Ent(Y|X) I(Y;X)=Ent(Y)Ent(YX)

2.1.4算法流程

算法思想:ID3决策树是以信息增益为准则来选择划分属性的决策树(选择信息增益最大的属性来进行划分)。 a ∗ = a r g m a x a ∈ A   G a i n ( D , a ) a_∗ = \mathop{arg max}_{a∈A}\space Gain(D, a) a=argmaxaA Gain(D,a)

具体流程:

  1. 在决策树学习开始时,根结点包含D中的所有样例,计算根节点的信息熵;
  2. 计算出当前侯选划分属性集合中每个属性的信息增益;
  3. 选择信息增益最大的属性作为划分属性
  4. 在上一步划分属性下,未被选作过划分属性的剩余属性为侯选划分属性,返回第二步继续操作,直到叶节点全部为决策结果。

eg:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

缺点:信息增益准则对可取值数目较多的属性有所偏好,会导致所划分的决策树分支太多,泛化性能差

比如每个样本都不同的ID(身份证)号,该特征的信息增益可达到0.998(每个样本为一个分支,纯度已达到最大),远大于其他候选划分属性,但无法对新样本进行有效预测。

2.2 C4.5决策树

为减少ID3对可取值数目较多的属性的偏好的影响,C4.5决策树选择使用"增益率"代替"信息增量"作为划分属性的准则

2.2.1 增益率

在这里插入图片描述

定义:

增益率 : G a i n _ r a t i o ( D , a ) = G a i n ( D , a ) I V ( a ) I V ( a ) = − ∑ v = 1 V ∣ D v ∣ ∣ D ∣ l o g 2 ∣ D v ∣ ∣ D ∣ \begin{aligned}增益率: Gain\_ratio(D, a)=\frac {Gain(D, a)}{IV(a)} \\ IV(a)=-\sum_{v=1}^V\frac {|D^v|}{|D|}log_2\frac {|D^v|}{|D|} \end{aligned} 增益率:Gain_ratio(D,a)=IV(a)Gain(D,a)IV(a)=v=1VDDvlog2DDv

  • I V ( a ) IV(a) IV(a)称为属性 a a a的"固有值"。属性 a a a的可能取值数目越多(即越大), I V ( a ) IV(a) IV(a)则的值通常会越大。(它将属性 a a a的各个取值的熵加权求和,加权系数是各取值所占的比例)
  • 增益率公式的想法: 信息增益越大越好 分支数越少越好 \frac {信息增益越大越好}{分支数越少越好} 分支数越少越好信息增益越大越好
  • 增益率将原来不可直接比的两个事物采用规范化变得可比

归一化:是规范化的特殊形式,将值规范到0到1之间

2.2.2算法流程

算法思想:C4.5算法将增益率作为划分属性的准则

找增益率尽量高的属性:
由于增益率是 信息增益越大越好 分支数越少越好 \frac {信息增益越大越好}{分支数越少越好} 分支数越少越好信息增益越大越好,二者(信息增益/分支数)的折中往往不能找到,故找不到最完美的决策树.

如何找增益率尽量高的属性?

C4.5 算法并不是直接选择增益率最大的候选划分属性,而是使用了一个启发式

先从候选划分属性中找出信息增益高于平均水平的属性,再从中选择增益率最高的。

缺点:增益率准则对可取值数目较少的属性有所偏好。

2.3 CART决策树

CART是Classification and Regression Tree的简称,这是一种著名的决策树学习算法,分类和回归任务都可用。其生成的决策树为二叉树。

CART决策树使用"基尼指数"(Gini index)来选择划分属性。基尼值相对于ID3决策树中的信息熵,而基尼指数相对于ID3决策树中的条件熵

在这里插入图片描述

2.3.1基尼值

定义: G i n i ( D ) = ∑ k = 1 N p k ( 1 − p k ) = 1 − ∑ k = 1 N p k 2 Gini(D)=\sum_{k=1}^Np_k(1-p_k)=1-\sum_{k=1}^N{p_k}^2 Gini(D)=k=1Npk(1pk)=1k=1Npk2

作用:可以用Gini(D)反映了从数据集中随机抽取两个样本,其类别标记不一致的概率。Gini(D)越小,则数据集的纯度越高

2.3.2基尼指数

定义:属性 a a a的基尼指数表示在已知属性 a a a的取值后(即在 D v D^v Dv的样本集合中),样本集合 D D D的基尼值之和,即为: G i n i _ i n d e x ( D , a ) = ∑ v = 1 V ∣ D v ∣ ∣ D ∣ G i n i ( D v ) Gini\_index(D,a)=\sum_{v=1}^V\frac {|D^v|}{|D|}Gini(D^v) Gini_index(D,a)=v=1VDDvGini(Dv)

2.3.3算法流程

算法思想:选择基尼指数最小的属性作为最优划分属性: a ∗ = a r g m i n a ∈ A   G i n i _ i n d e x ( D , a ) a_∗ = \mathop{arg min}_{a∈A}\space Gini\_index(D, a) a=argminaA Gini_index(D,a)

具体流程:

  1. 对每个属性 a a a的每个可能取值 v v v,将数据集 D D D分为 a = v a = v a=v a ≠ v a≠v a=v两部分来计算基尼指数,即: G i n i _ i n d e x ( D , a ) = ∣ D a = v ∣ ∣ D ∣ G i n i ( D a = v ) + ∣ D a ≠ v ∣ ∣ D ∣ G i n i ( D a ≠ v ) Gini\_index(D, a) = \frac {∣D^{a=v}∣}{∣D∣}Gini(D^{a=v}) + \frac {∣D^{a≠v}∣}{∣D∣}Gini(D^{a≠v}) Gini_index(D,a)=DDa=vGini(Da=v)+DDa=vGini(Da=v)
  2. 选择基尼指数最小的属性及其对应取值作为最优划分属性和最优划分点;
  3. 重复以上两步,直至满足停止条件。

3.剪枝处理

在这里插入图片描述

为了尽可能正确分类训练样本,有时会造成决策树分支过多,以致于把训练集自身的一些特点当作所有数据都具有的一般性质而导致过拟合。可通过主动去掉一些分支来降低过拟合的风险。

剪枝(pruning)是决策树学习算法对付"过拟合"的主要手段

剪枝基本策略包括**“预剪枝”(prepruning)"后剪枝"(post"pruning)**。

可以用交叉验证的方法,即预留一部分数据用作"验证集"以进行性 能评估,以判断剪枝是否能带来算法泛化性能的提升

研究表明: 划分选择的各种准则虽然对决策树的尺寸有较大影响,但对泛化性能的影响很有限

剪枝方法和程度对决策树泛化性能的影响更为显著

3.1预剪枝

定义:预剪枝指在决策树生成过程中,对每个结点在划分前先进行估计,若当前结点的划分不能带来决策树泛化性能提升,则停止划分并将当前结点标记为叶结点。

优点

  1. 预剪枝使得决策树的很多分支都没有"展开“,可以降低过拟合的风险;
  2. 显著减少决策树的训练时间开销和测试时间开销。

缺点

  1. 有些分支的当前划分虽不能提升泛化性能、甚至可能导致泛化性能暂时下降,但在其基础上进行的后续划分却有可能导致性能显 著提高;
  2. 预剪枝基于"贪心"本质禁止这些分支展开,可能导致欠拟合

eg:

1.使用留出法进行模型评估

在这里插入图片描述

2.选脐部属性划分前后验证集的精度对比

在这里插入图片描述

3.由于脐部属性划分后精度提高了,所以应该划分该属性.

继续选择色泽作为下一个属性进行该属性划分前后验证集的精度对比
由于划分精度一样,由奥卡姆剃刀可知不应该划分该属性

在这里插入图片描述

4.最后预剪枝得到决策树

在这里插入图片描述

3.2后剪枝

定义:后剪枝先从训练集生成一棵完整的决策树,然后自底向上地对非叶结点进行考察,若将该结点对应的子树替换为叶结点能带来决策树泛化性能提升,则将该子树替换为叶结点。

根据奥卡姆剃刀准则,剪枝后的模型更好。因此,后剪枝下,决策树算法在验证集精度虽无提高的情况中会进行剪枝。

优点

  1. 一般情形下,后剪枝决策树的欠拟合风险很小,泛化能往往优于预剪枝决策树;

缺点

  1. 后剪枝过程是在生成完全决策树之后进行的,并且要白底向上对树中的所有非叶结点进行逐一考察,因此其训练时间开销比未剪枝决策树和预剪枝决策树都要大得多。

eg:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

预剪枝VS后剪枝

在这里插入图片描述

4.连续与缺失值

4.1 连续值处理

到目前为止我们仅讨论了基于离散属性来生成决策树.现实学习任务中常会遇到连续属性,有必要讨论如何在决策树学习中使用连续属性

Q:如何在决策树学习中使用连续属性?

A:核心:连续属性离散化。

eg:如C4.5决策树算法中采用的**二分法(bi-partition)**策略对连续属性进行处理。

即,以每两个相邻取值的中点作为划分点 T a T_a Ta,每个划分点作为一个”属性“。

  • 划分点集合:
    $ T_a=\left { \frac{ai+a{i+1}}{2} |1 \le i\le n -1\right } $

即把区间 $\left [ ai,a{i+1} \right ) $ 的中点$\frac{ai+a{i+1}}{2} $作为候选划分点,然后我们可像离散属性值一样来考察这写划分点

  • 信息增益(改造后):
    G a i n ( D , a ) = m a x t ∈ T a   G a i n ( D , a , t ) = m a x t ∈ T a   E n t ( D ) − ∑ λ ∈ { − , + } ∣ D t λ ∣ ∣ D ∣ E n t ( D t λ ) \begin{aligned}Gain(D, a) &=\mathop {max}_{t∈T_a}\space Gain(D,a,t) \\&=\mathop {max}_{t∈T_a} \space Ent(D)−\sum_{λ∈\{-,+\}}\frac {|D_t^λ|}{|D|}Ent(D_t^λ) \end{aligned} Gain(D,a)=maxtTa Gain(D,a,t)=maxtTa Ent(D)λ{,+}DDtλEnt(Dtλ)

说明:

  • G a i n ( D , a , t ) Gain(D,a,t) Gain(D,a,t)是样本集基于划分点 t t t二分后的信息增益。

  • λ ∈ { − , + } λ ∈ \{−, +\} λ{,+}表示属性 a a a的取值分别小于等于和大于候选划分点 t t t时的情形,也即当$ λ = − 时:时:D_t^λ = D^{a≤t}_t$ ,当 λ = + λ = + λ=+时: D t λ = D t a > t D^λ_t = D^{a>t}_t Dtλ=Dta>t

4.2 缺失值处理

在这里插入图片描述

Q:如何在决策树学习中利用属性值缺失的样本?

在属性数目较多的情况下,往往会有大量样本出现缺失值。需要将有属性值缺失的样本也利用起来否则会损失极多的信息。利用上这些样本的核心在于对没有缺失值的样本:样本赋权,权重划分

Q1:(1)如何在属性值缺失的情况进行划分属性选择?—也就是在缺失值的情况下进行信息增益的计算,进而确定划分属性

核心在于利用没有缺失值的样本子集进行信息增益的计算

在决策树学习开始阶段,根结点中各样本的权重初始化为1。

在这里插入图片描述

eg:

在这里插入图片描述

在这里插入图片描述

Q2:(2)给定划分属性,若样本在该属性上的值缺失,如何对样本进行划分?

核心是让同一个样本以不同的概率划入到不同的子结点中去

  • 无缺失值的样本:若样本划分属性 a a a的取值已知,则将样本划入与其取值对应的子结点,且样本权值在于结点中保持为 w x w_x wx

  • 有缺失值的样本:若样本在划分属性 a a a上的取值缺失,则将同时划入所有子结点,且样本权值在与属性值 a v a^v av对应的子结点中调整为 r ~ v ⋅ w x \tilde r_v·w_x r~vwx

    依据:将没有缺失值的样本进入各个属性的划分结果当作有缺失值样本的先验

eg:

在这里插入图片描述

5. 多变量决策树

决策树分类边界特点:对样本分类则意味着在这个坐标空间中寻找不同类样本之间的分类边界。决策树所形成的分类边界有一个明显的特点:轴平行(axis-parallel),即它的分类边界由若干个与坐标轴平行的分段组成。

在这里插入图片描述

“多变量决策树”(multivariate decision tree):能使用斜的划分边界或更复杂的划分边界的决策树

如下图红线,使得模型大为简化。

在这里插入图片描述

线性分类器:在斜划分边界的决策树中,非叶结点不再是仅对某个属性,而是对属性的线性组合进行测试;换言 之,每个非叶结点是一个形如 ∑ w i a i = t \sum w_ia_i=t wiai=t线性分类器,其中 w i w_i wi是属性 a i a_i ai的权重, w i w_i wi t t t可在该结点所含的样本集和属性集上学得,且在学习过程中不是为每个非叶结点寻找一个最优划分属性,而是试图找到一个合适的线性分类器。

在这里插入图片描述

多变量决策树算法:算法核心是在结合多个划分条件(叶节点)寻找特征空间的分割边界,比如引入线性分类学习的最小二乘法,在叶节点嵌入多层神经网络(形成”感知机树“)等等。

决策树增量学习

“增量学习”(incrementallearning):在接收到新样本后可对己学得的模型进行调整,而不用完全重新学习。主要机制是通过调整分支路径上的划分属性次序来对树进行部分重构,代表性算法ID4、ID5R、ITI等。

特点:增量学习可有效地降低每次接收到新样本后的训练时间开销,但多步增量学习后的模型会与基于全部数据训练而得的模型有较大差别。

学习过程中不是为每个非叶结点寻找一个最优划分属性,而是试图找到一个合适的线性分类器。

[外链图片转存中…(img-f0GpsIkQ-1696576248407)]/assets/多交量决策树对应的分类边界.png)

多变量决策树算法:算法核心是在结合多个划分条件(叶节点)寻找特征空间的分割边界,比如引入线性分类学习的最小二乘法,在叶节点嵌入多层神经网络(形成”感知机树“)等等。

决策树增量学习

“增量学习”(incrementallearning):在接收到新样本后可对己学得的模型进行调整,而不用完全重新学习。主要机制是通过调整分支路径上的划分属性次序来对树进行部分重构,代表性算法ID4、ID5R、ITI等。

特点:增量学习可有效地降低每次接收到新样本后的训练时间开销,但多步增量学习后的模型会与基于全部数据训练而得的模型有较大差别。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值