我们首先看一看决策树长什么样子?

《统计学习方法》第 5 章“决策树”学习笔记_结点

《统计学习方法》第 5 章“决策树”学习笔记_数据_02

如果你学习过“数据结构”,那你就会知道,计算机中的“树”是倒着放的,树根在上面,树叶在下面。可以看到决策树的形状是一棵树,直观、可解释性强。

“决策树”从根结点开始看:因为最在乎“根结点”

我们看决策树的时候,是怎么看的呢?是不是先看根结点?那么为什么先看根结点呢?是因为根结点的信息一般来说是人们最关心的因素,是人们最在乎的因素,有的时候,根结点这个因素几乎决定了我们最终对问题的判断。这样的事情,在我们的日常生活的决策中经常出现。

以下例子不一定准确,只是希望通过下面的例子来阐述我们做一个决策,很多时候只会考虑几个重要因素,并且这些因素也有重要之分,或者说先后之分,先考虑的因素一般更重要:

例1:人生大事,我们在择偶的时候,往往会考虑颜值(高、低)和财富(多、一般、少)还有人品(诚实、不诚实),不同的人侧重的点不一样,会综合考虑,有的时候,个别因素起决定作用,例如有的男生就只关心女生好看不好看,好看就都去见。

例2:我们选择一家公司,会看这家公司是否是国企、名企,以及给的薪酬(高低),有的人看重薪酬,有的人看中大企业,领导好、团队氛围好,会综合考虑,有的时候,个别因素起决定作用,例如有的人就觉得薪资很重要,给的薪资低于某个数的都不考虑。

例3:企业面试员工的时候,其实也是类似的,会看年龄是不是超过 30,要价高低、学历高低、是否名校、是否 985 或者 211,有的时候一些因素很重要,例如不是本科生就暂不考虑了。

首先我们谈谈决策树所研究问题的背景是什么?

背景:特征是离散型变量的分类问题

以上的 3 个例子,可以看出,我们要下的决定不外乎“去相亲”,“不去相亲”,“投递简历”、“不投递简历”、“录用这个人”、“不录用这个人”,因此我们的决策实际上在做一个选择题,在机器学习中,就叫分类。
上面的 3 个例子,我们已知的信息也有一个特点,那就是用于决策的已知信息都是以离散的形式出现的,用机器学习的语言来说就是:特征是离散型变量。
因此,决策树就是在研究:特征是离散型变量的分类问题。如果你有点懵,想一想最初 k k k 近邻算法是在解决什么问题,那些已知数据的特征是连续型的,你才能计算距离对吗。这里强调“最初”只是为了强调研究的思想, k k k 近邻当然也可以应用于特征是离散型的变量的分类(离散型特征要经过独热编码处理)。

决策的依据:被某个特征分割的数据的标签尽可能相同

决策的依据当然是已知的数据,包括特征和标签。决策树不像感知机、逻辑回归、SVM 一样直接去学习决策边界,因为决策树的特征是离散型类别变量。但是根据特征确实可以将数据进行分割,不同的特征分割效果不同。

那么什么样的特征会使得数据分割得比较好呢?当然是分得越“纯”越好啦。我们想想感知机算法学习的时候,都假设数据线性可分,在决策边界的同一侧,数据要是同一类,当然这是一种比较理想的情况。决策树其实也不例外,决策树期望通过某个特征的划分,将数据尽可能归到同一类,即希望数据被某个特征分割得越来越“纯”,而衡量数据纯度的度量之一就是信息熵

数据纯度的度量:信息熵

上面说了,衡量数据纯不纯的度量是信息熵。我们先想一想,在概率论中,有多个取值的离散型数据,我们是不是可以用一个分布去表示它,分布即”取值以及取值的概率“,所以概率其实是衡量数据纯不纯的一个重要组成部分。

这里,我要先引入一个概念:”信息量“。信息量是通过概率来定义的:

信 息 量 = log ⁡ 1 p ( x ) 信息量 = \log \frac{1}{p(x)} 信息量=logp(x)1

从信息量的定义中,我们可以看出:信息量与概率呈反比例关系,即:

  • 如果一件事情的概率很低,那么它的信息量就很大;
  • 反之,如果一件事情的概率很高,它的信息量就很低。

这件事情放在生活中,也是相当容易理解的。例如:“王思聪是富豪”这件事情的概率很高,因为这是大家都知道的事情,但是说清楚这件事情只用一句话:“王思聪是王健林的儿子”,信息量少,即确定的事情,信息量就少,再比如说,”明天太阳从东方升起,西边落下“,这句话几乎就没有说一样,即”信息量“少。

再看一句话:”女人可以当皇帝“,这句话信息量就很大。首先,这是一个概率很低的事情,中国历史上一共 400 多位皇帝,即使算上吕雉和慈禧,女人当皇帝这件事情的概率就很低,那么为什么说它信息量大呢?所以,我得查一些资料才能把这件事情说清楚:

1、 长孙皇后死得早,唐太宗晚年好色,把武则天引进宫闱,如果长孙皇后长寿,以唐太宗对长孙皇后的喜爱,武则天是不可能进来的;

2、 唐太宗的几个儿子效仿他自己,认为天下是可以争夺来的,因此互相斗争,最后皇位落在了性格温顺的李治身上,李治排行老九,按照嫡长子继承原则,皇位其实轮不到他,唐太宗晚年其实脑子也不太清楚了,在这件事情上他的确没有想得很周到;

3、 李治恰好喜欢姐姐型的情人,原配王皇后和李治性格不搭,再加上王皇后不能生育,如果王皇后可以生育,深得李治喜爱,她就不用引狼入室,把已经落到尼姑庵的武则天救回来,去对付萧淑妃,最后把自己也害死了;

4、 李治长期生病,病而不死,他热爱皇权,不愿意将皇位早早让位太子,就让武则天替他执政,武则天整整做了 28 年皇后,积累了丰富的政治经验,如果唐太宗早死,皇位直接传给太子,可能就没有武则天什么事情了。

当然原因还有很多,你看我要写这么多问题,才可能把这件事情说清楚,所以说,概率小的事情信息量大就是这个道理。

那么取对数是什么原因呢? 取对数这件事情将区间里的数从 [ 1 , ∞ ] [1,\infty] [1,∞] 映射到 [ 0 , ∞ ] [0, \infty] [0,∞],具体推导如下:

∵ p ( x ) ∈ [ 0 , 1 ] , ∴ 1 p ( x ) ∈ [ 1 , ∞ ] , ∴ log ⁡ 1 p ( x ) ∈ [ 0 , ∞ ] \begin {aligned} &\because \quad p(x) \in [0,1],\\ &\therefore \quad \frac{1}{p(x)} \in [1, \infty],\\ &\therefore \quad \log \frac{1}{p(x)} \in [0, \infty]\\ \end {aligned} ​∵p(x)∈[0,1],p(x)1​∈[1,∞],∴logp(x)1​∈[0,∞]

下面就该信息熵出场了。有了信息量,还有概率分布,怎么把这些东西都放在一起呢?很简单,有概率分布,那就做加权平均呀,在概率论中,就是求期望,这个期望就叫”信息熵“。

H ( X ) = − ∑ x ∈ X p ( x ) log ⁡ p ( x ) H(X) = -\sum_{x \in X} p(x)\log p(x) H(X)=−x∈X​p(x)logp(x)

可以看出:信息熵是信息量的数学期望。理解了信息量,信息熵的定义式便不难理解。

关于信息熵,其实还有很多可以说的。

  • 熵越小表示越“纯”,决策树算法在进行特征选择时的其中标准之一就是选择那个使得通过该特征分类以后的类标熵最小;

  • 上面是熵越小越好,而有的时候,我们需要熵越大越好,简单来说就是“鸡蛋不要放在一个篮子里”(见吴军《数学之美》),最大熵原理就是这样,这部分内容可以参考李航《统计机器学习》逻辑回归模型相关部分,以后我们再花时间专门来叙述,这部分内容不好啃下来。

这篇文章介绍了信息熵 H ( x ) H(x) H(x) 的取值范围,用拉格朗日乘子法,证明了当随机变量 X X X 呈均匀分布的时候,信息熵最大。

总结:信息熵是随机变量不纯度的数学度量。

  • 信息熵越小,分类越“纯”,即所有的样本几乎属于同一类,即一家独大,是我们做分类决策喜欢的样子;
  • 信息熵越大,分类越“混乱”,此时这些样本里“红的”、“黄的”、“蓝的”、“紫的”都有。

那么被一个特征分成好几类,每一个类别都有信息熵,怎么再把它们集中起来,再做一次加权,即取期望就可以了。这就是条件熵。

条件熵

条件熵的定义式如下:
H ( Y ∣ X ) = ∑ x ∈ X p ( x ) H ( Y ∣ X = x ) H(Y|X)=\sum_{x\in X} p(x)H(Y|X=x) H(Y∣X)=x∈X​p(x)H(Y∣X=x)

或者写成:
H ( Y ∣ X ) = ∑ i = 1 n p ( x i ) H ( Y ∣ X = x i ) H(Y|X)=\sum_{i=1}^{n} p(x_i)H(Y|X=x_i) H(Y∣X)=i=1n​p(xi​)H(Y∣X=xi​)
说明:1、这里 n n n 表示随机变量 X X X 取值的个数,不管是条件熵还是熵,都是计算 Y Y Y (可以理解为因变量)的熵;

2、 H ( Y ∣ X ) H(Y|X) H(Y∣X) 可以理解为在已知一些信息的情况下,因变量 Y Y Y 的不纯度,即在 X X X 的划分下, Y Y Y 被分割越来越“纯”的程度。

其它的公式都可以由信息熵和条件熵的定义式得出。理解条件熵可以使用决策树进行特征选择的例子:我们期望选择的特征要能将数据的标签尽可能分得比较“纯”一些,特征将数据的标签分得“纯”,则熵就小,信息增益就大。

条件熵可以变形成如下:

H ( Y ∣ X ) = ∑ x ∈ X p ( x ) H ( Y ∣ X = x ) = − ∑ x ∈ X p ( x ) ∑ y ∈ Y p ( y ∣ x ) log ⁡ p ( y ∣ x ) = − ∑ x ∈ X ∑ y ∈ Y p ( y , x ) log ⁡ p ( y ∣ x ) . \begin{aligned} H(Y|X)&=\sum_{x\in X} p(x)H(Y|X=x)\\ &=-\sum_{x\in X} p(x)\sum_{y\in Y}p(y|x)\log p(y|x)\\ &=-\sum_{x\in X} \sum_{y\in Y}p(y,x)\log p(y|x). \end{aligned} H(Y∣X)=x∈X​p(x)H(Y∣X=x)=−x∈X​p(x)y∈Y​p(y∣x)logp(y∣x)=−x∈Xy∈Y​p(y,x)logp(y∣x).

说明:有些教材直接把最后一步
H ( Y ∣ X ) = − ∑ x ∈ X ∑ y ∈ Y p ( x , y ) log ⁡ p ( y ∣ x ) H(Y|X)=-\sum_{x\in X} \sum_{y\in Y}p(x,y)\log p(y|x) H(Y∣X)=−x∈Xy∈Y​p(x,y)logp(y∣x)
定义成条件熵,要注意甄别,其实是一个意思,我个人觉得
H ( Y ∣ X ) = ∑ x ∈ X p ( x ) H ( Y ∣ X = x ) H(Y|X)=\sum_{x\in X} p(x)H(Y|X=x) H(Y∣X)=x∈X​p(x)H(Y∣X=x)
这种定义式更好理解,而这个定义式可以参考李航《统计学习方法》P61 页内容来理解,并不难记忆,其实条件熵就是熵的数学期望

进一步理解:这里又假设随机变量 Y Y Y 有 m m m 个取值,将 H ( Y ∣ X = x i ) H(Y|X=x_i) H(Y∣X=xi​) 用定义式
H ( Y ∣ X = x i ) = − ∑ j = 1 m p ( y j ∣ X = x i ) log ⁡ p ( y j ∣ X = x i ) H(Y|X=x_i) = - \sum_{j=1}^{m} p(y_j|X=x_i)\log p(y_j|X=x_i) H(Y∣X=xi​)=−j=1m​p(yj​∣X=xi​)logp(yj​∣X=xi​)

代入上式,得
KaTeX parse error: No such environment: equation at position 8: \begin{̲e̲q̲u̲a̲t̲i̲o̲n̲}̲\begin{split} …

H ( Y ∣ X ) = ∑ i = 1 n p ( x i ) H ( Y ∣ X = x i ) = − ∑ i = 1 n p ( x i ) ∑ j = 1 m p ( y j ∣ x i ) log ⁡ p ( y j ∣ x i ) H(Y|X)=\sum_{i=1}^{n} p(x_i)H(Y|X=x_i) =-\sum_{i=1}^{n}p(x_i) \sum_{j=1}^{m} p(y_j|x_i) \log p(y_j|x_i) H(Y∣X)=i=1n​p(xi​)H(Y∣X=xi​)=−i=1n​p(xi​)j=1m​p(yj​∣xi​)logp(yj​∣xi​)

  • 其实就是把熵的定义式带进去了,熵的对象还是概率分布,只不过这里的概率分布是条件概率分布而已;
  • 条件熵表示在已知随机变量 X X X 的条件下, Y Y Y 的条件概率分布的熵**对随机变量 X X X**的数学期望;
  • 熵是数学期望(信息量的数学期望),条件熵也是数学期望,是数学期望的数学期望,有点拗口,不妨把定义多看几遍,就清楚了。

互信息

  • 根据信息熵和条件熵的公式,马上可以计算出:
    H ( Y ) − H ( Y ∣ X ) = − ∑ y ∈ Y p ( y ) log ⁡ p ( y ) − ∑ x ∈ X p ( x ) H ( Y ∣ X = x ) = − ∑ y ∈ Y ( ∑ x ∈ X p ( x , y ) ) log ⁡ p ( y ) + ∑ x ∈ X p ( x ) ∑ y ∈ Y p ( y ∣ x ) log ⁡ p ( y ∣ x ) = − ∑ y ∈ Y ∑ x ∈ X p ( x , y ) log ⁡ p ( y ) + ∑ x ∈ X ∑ y ∈ Y p ( y , x ) log ⁡ p ( y ∣ x ) = ∑ x ∈ X ∑ y ∈ Y p ( x , y ) log ⁡ p ( y ∣ x ) p ( y ) = ∑ x ∈ X ∑ y ∈ Y p ( x , y ) log ⁡ p ( x , y ) p ( x ) p ( y ) . \begin{aligned} H(Y) - H(Y|X)&=-\sum_{y \in Y}p(y)\log p(y) - \sum_{x\in X} p(x)H(Y|X=x)\\ &=-\sum_{y \in Y}\left( \sum_{x \in X} p(x,y) \right)\log p(y) + \sum_{x\in X} p(x)\sum_{y\in Y}p(y|x)\log p(y|x)\\ &=-\sum_{y \in Y}\sum_{x \in X} p(x,y) \log p(y) + \sum_{x\in X} \sum_{y\in Y}p(y,x)\log p(y|x)\\ &=\sum_{x\in X} \sum_{y\in Y}p(x,y)\log \frac{p(y|x)}{p(y)}\\ &=\sum_{x\in X} \sum_{y\in Y}p(x,y)\log \frac{p(x,y)}{p(x)p(y)}. \end{aligned} H(Y)−H(Y∣X)=−y∈Y​p(y)logp(y)−x∈X​p(x)H(Y∣X=x)=−y∈Y​(x∈X​p(x,y))logp(y)+x∈X​p(x)y∈Y​p(y∣x)logp(y∣x)=−y∈Yx∈X​p(x,y)logp(y)+x∈Xy∈Y​p(y,x)logp(y∣x)=x∈Xy∈Y​p(x,y)logp(y)p(y∣x)=x∈Xy∈Y​p(x,y)logp(x)p(y)p(x,y)​.
    同理,

H ( X ) − H ( X ∣ Y ) = − ∑ x ∈ X p ( x ) log ⁡ p ( x ) − ∑ y ∈ Y p ( y ) H ( X ∣ Y = y ) = − ∑ x ∈ X ( ∑ y ∈ Y p ( x , y ) ) log ⁡ p ( x ) + ∑ y ∈ Y p ( y ) ∑ x ∈ X p ( x ∣ y ) log ⁡ p ( x ∣ y ) = − ∑ x ∈ X ∑ y ∈ Y p ( x , y ) log ⁡ p ( x ) + ∑ y ∈ Y ∑ x ∈ X p ( x , y ) log ⁡ p ( x ∣ y ) = ∑ y ∈ Y ∑ x ∈ X p ( x , y ) log ⁡ p ( x ∣ y ) p ( x ) = ∑ y ∈ Y ∑ x ∈ X p ( x , y ) log ⁡ p ( x , y ) p ( x ) p ( y ) . \begin{aligned} H(X) - H(X|Y)&=-\sum_{x \in X}p(x)\log p(x) - \sum_{y\in Y} p(y)H(X|Y=y)\\ &=-\sum_{x \in X}\left( \sum_{y \in Y} p(x,y) \right)\log p(x) + \sum_{y\in Y} p(y)\sum_{x\in X}p(x|y)\log p(x|y)\\ &=-\sum_{x \in X}\sum_{y \in Y} p(x,y) \log p(x) + \sum_{y\in Y} \sum_{x\in X}p(x,y)\log p(x|y)\\ &=\sum_{y\in Y} \sum_{x\in X}p(x,y)\log \frac{p(x|y)}{p(x)}\\ &=\sum_{y\in Y} \sum_{x\in X}p(x,y)\log \frac{p(x,y)}{p(x)p(y)}. \end{aligned} H(X)−H(X∣Y)=−x∈X​p(x)logp(x)−y∈Y​p(y)H(X∣Y=y)=−x∈Xy∈Y​p(x,y)​logp(x)+y∈Y​p(y)x∈X​p(x∣y)logp(x∣y)=−x∈Xy∈Y​p(x,y)logp(x)+y∈Yx∈X​p(x,y)logp(x∣y)=y∈Yx∈X​p(x,y)logp(x)p(x∣y)=y∈Yx∈X​p(x,y)logp(x)p(y)p(x,y)​.

因此:
H ( Y ) − H ( Y ∣ X ) = H ( X ) − H ( X ∣ Y ) . H(Y) - H(Y|X) = H(X) - H(X|Y). H(Y)−H(Y∣X)=H(X)−H(X∣Y).
定义互信息:
I ( X , Y ) = H ( Y ) − H ( Y ∣ X ) = H ( X ) − H ( X ∣ Y ) . I(X,Y) = H(Y) - H(Y|X) = H(X) - H(X|Y). I(X,Y)=H(Y)−H(Y∣X)=H(X)−H(X∣Y).

  • 因此,互信息就是信息增益。

通过下图可以理解上面的数学推导表示的含义。

《统计学习方法》第 5 章“决策树”学习笔记_信息熵_03

对于信息熵、条件熵、联合熵、互信息、相对熵、交叉熵,我总结了一遍文章

《统计学习方法》第 5 章“决策树”学习笔记_决策树_04

能使得信息熵减少得最多的特征,就是应该放在决策树根结点的特征

决策树的构建有贪心选择的思想,每一步我们都选择那个能够让信息熵降低最多的特征作为划分的依据。信息熵降低最多这件事情,其实你用选择条件熵最小来描述也是一样的。不过我们还是喜欢用”信息熵降低最多“即”信息增益“来表述。

信 息 增 益 = 原 来 的 信 息 熵 − 被 一 个 特 征 取 值 划 分 以 后 的 条 件 熵 信息增益 = 原来的信息熵 - 被一个特征取值划分以后的条件熵 信息增益=原来的信息熵−被一个特征取值划分以后的条件熵

知道信息以后,不确定减少了,不确定减少的程度,就是这个已知的特征划分带给你的信息,所以叫信息增益。根据”颜值“划分你是不是喜欢这个人,得到的信息增益大,就表示”颜值“是重要特征,它对决策起关键甚至是决定作用。

信息增益在很多资料中,也被称为互信息。

信息增益的计算方法在李航的《统计学习方法》和周志华的《机器学习》中都介绍得很详细了。

决策树的剪枝

因为容易造成过拟合,所以要对数据进行剪枝,但是在以决策树为基础的集成算法中,其实是不剪枝的,但是剪枝的思想,我们还是要了解。

前剪枝

构建决策树的同时就考虑剪枝,后剪枝是在决策树建成以后再去考虑剪枝的事情。

思路1:如果马上要创建的分支,无法进一步降低信息熵,即信息增益很低(低于一个阈值),就不创建分支,当前数据成为一个叶子结点;

思路2:限制叶子结点的最少样本个数,样本越少,越”纯“的概率就大,越容易过拟合,即如果马上要创建的分支,其中有的分支的样本数小于一个阈值,就不创建分支了;

后剪枝

后剪枝的思路:尝试合并,如果合并后,信息熵的增加小于某一个阈值,就合并,合并以后这个结点的决策就用样本最多的那个类别。

sci-kit learn 决策树算法的参数

1、criterion:特征选择算法,gini(基尼系数)或者 entropy (信息熵);
2、splitter:创建决策树分支的选项,best 或者 random, best 是在所有特征中找最好的切分点,random 是在部分特征中随机选择一部分特征,从中再选一个最好的特征(即找局部最优特征,利用一定的随机性,避免过拟合);

3、max_features:None(所有),log2,sqrt,N 特征小于50的时候一般使用所有的;

4、max_depth:决策树的最大深度,数据少或者特征少的时候可以不管这个值,如果模型样本量多,特征也多的情况下,可以尝试限制下;

5、min_samples_split:能创建分支的数据集的大小,默认是 2。即如果某结点的样本数少于 min_samples_split,则不会继续再尝试选择最优特征来进行划分。如果样本量不大,不需要管这个值。如果样本量数量级非常大,则推荐增大这个值;

6、min_samples_leaf:创建分支以后的结点的样本个数。这个值限制了叶子节点最少的样本数,如果某叶子节点数目小于样本数,则会和兄弟节点一起被剪枝(即被合并),如果样本量不大,不需要管这个值,大些如 10W 可以尝试下5。

7、min_weight_fraction_leaf:这个值限制了叶子节点所有样本权重和的最小值,如果小于这个值,则会和兄弟节点一起被剪枝默认是 0 ,就是不考虑权重问题。一般来说,如果我们有较多样本有缺失值,或者分类树样本的分布类别偏差很大,就会引入样本权重,这时我们就要注意这个值了;

8、max_leaf_nodes:通过限制最大叶子节点数,可以防止过拟合,默认是"None”,即不限制最大的叶子节点数。如果加了限制,算法会建立在最大叶子节点数内最优的决策树。如果特征不多,可以不考虑这个值,但是如果特征分成多的话,可以加以限制具体的值可以通过交叉验证得到。

9、class_weight:指定样本各类别的的权重,主要是为了防止训练集某些类别的样本过多导致训练的决策树过于偏向这些类别。这里可以自己指定各个样本的权重如果使用“balanced”,则算法会自己计算权重,样本量少的类别所对应的样本权重会高。

10、min_impurity_split:这个值限制了决策树的增长,如果某节点的不纯度(基尼系数,信息增益,均方差,绝对差)小于这个阈值则该节点不再生成子节点。即为叶子节点 。

11、n_estimators:要建立树的个数,这是”随机森林“的参数。

决策树不需要考虑特征标准化

因为没有使用距离度量。

决策树天然支持多输出

优缺点

优点:

1、易于理解和解释,便于可视化分析,容易提取出规则;

2、可以同时处理类别型数据和数值型数据

3、预测时,运行速度比较快;

4、决策树可以很好的扩展到大型数据库中,同时它的大小独立于数据库大小。

缺点:

1、对缺失数据处理比较困难;

2、容易出现过拟合问题;

3、忽略数据集中属性的相互关联;

4、ID3算法计算信息增益时结果偏向数值比较多的特征。

改进措施:

1、对决策树进行剪枝。可以采用交叉验证法和加入正则化的方法。

2、使用基于决策树的集成算法,如 bagging 算法,randomforest 算法,可以解决过拟合的问题。

应用领域

企业管理实践,企业投资决策,由于决策树很好的分析能力,在决策过程应用较多。

总结

1、决策树与条件概率分布:

可以将决策树看成 if-then 规则(互斥并且完备); 也可以认为是定义在特征空间和类空间上的条件概率分布,因为决策树分类的时候将该节点的实例强行分到条件概率大的那一个类中;

2、三个步骤:

(1)特征选择;

(2)建立决策树;

(3)剪枝。

3、条件熵:表示在已知随机变量 X X X 的条件下,随机变量 Y Y Y 的不确定性,这里将 X X X 理解为机器学习的某个特征即可。
H ( Y ∣ X ) = ∑ x ∈ X p ( x ) H ( Y ∣ X = x ) H(Y|X)=\sum_{x\in X} p(x)H(Y|X=x) H(Y∣X)=x∈X​p(x)H(Y∣X=x)
4、互信息(其实就是信息增益):即:熵与条件熵的差。
g ( D , A ) = H ( D ) − H ( D ∣ A ) g(D,A)=H(D)-H(D|A) g(D,A)=H(D)−H(D∣A)
5、决策树的算法递归地产生决策树,直到不能继续下去为止,可能会产生复杂的决策树,即可能过拟合,为此我们引入决策树的复杂度。

6、决策树学习的损失函数可以定义为:
C α ( T ) = ∑ t = 1 ∣ T ∣ N t H t ( T ) + α ∣ T ∣ C_{\alpha}(T)=\sum_{t=1}^{|T|} N_tH_t(T) + \alpha|T| Cα​(T)=t=1∣T∣​Nt​Ht​(T)+α∣T∣
叶子结点的个数为 ∣ T ∣ |T| ∣T∣,可以理解为决策树的复杂度。 t t t 是树 T T T 的叶子结点,该叶子结点有 N t N_t Nt​ 个样本, H t ( T ) H_t(T) Ht​(T) 定义为叶子结点 t t t 上的经验熵(有“经验”二字的就是指训练数据集,是可以计算出来的), α ≥ 0 \alpha \ge 0 α≥0 为参数。 定义的损失函数的极小化等价于正则化的极大似然估计,所以利用损失函数最小原则进行剪枝就是用正则化的极大似然估计进行模型选择。决策树的剪枝算法可以由一种动态规划的算法实现。

7、CART(分类与回归树),同样也有 3 步:特征选择、树的生成、剪枝。 CART 是在给定输入随机变量 X 条件下输出随机变量 Y 的条件概率分布的学习方法。 C

ART 决策树的生成:基于训练数据集生成决策树,递归地二分每个特征(内部节点的特征是“是”和“否”),生成的决策树要尽量大。具体细节:递归地构建二叉树,特征选择的标准:回归树用平方误差最小化准则(所以又叫最小二乘回归树),分类树用基尼指数最小化准则。

参考资料

[1] 李航. 统计学习方法(第 2 版)第 5 章“决策树”. 北京:清华大学出版社,2019.

[2] 周志华. 机器学习(第 4 章“决策树”). 北京:清华大学出版社.


以下为草稿,我自己留着备用,读者可以忽略,欢迎大家批评指正。