机器学习课程讲义·第三章,决策树和随机森林

上期回顾

上期机器学习课程讲义·第二章,线性模型系列,我们一起学习了一些经典的线性模型:一般回归模型,并使用线性组合、空间和概率三种不同的视角解读了一般回归模型。我们还学习了机器学习中缓解过拟合的一种经典技术–正则化技术,并由此引出一次正则的LASSO回归模型和二次正则的Ridge回归模型。
除了回归模型,我们还学习了线性模型中的分类模型,包括经典的逻辑回归模型和线性判别分析。
更重要的是,我们统一了后续课程中的符号表达以及学习范式,即:

符号形式

假定 N N N个数据集合,记为 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯   , ( x N , y N ) } \mathcal{D}=\{(x_1, y_1),(x_2, y_2),\cdots,(x_N, y_N)\} D={(x1,y1),(x2,y2),,(xN,yN)},其中输入空间 x i ∈ R P x_i \in R^P xiRP,输出空间 y i ∈ R y_i \in R yiR;输入矩阵记为 X = ( x 1 , x 2 , ⋯   , x N ) T X=(x_1,x_2,\cdots,x_N)^T X=(x1,x2,,xN)T,输出矩阵记为 Y = ( y 1 , y 2 , ⋯   , y N ) T Y=(y_1,y_2,\cdots,y_N)^T Y=(y1,y2,,yN)T,即 X ∈ R N × P X \in R^{N \times P} XRN×P Y ∈ R N × 1 Y \in R^{N \times 1} YRN×1

学习范式

  1. 模型形式:假定规律所在的空间(假设空间)
  2. 损失函数:为了从假设空间中找到最优模型,设定的“代价”
  3. 优化算法:求解最优参数使得损失函数最小的算法
  4. 模型评价:对模型好坏进行评价,重点评价泛化性能

在后续的学习中,我们将继续使用上述符号形式和学习范式认识机器学习中的其他模型。

本章导读

本章我们将学习机器学习中另一类经典模型:决策树模型。我们将介绍决策树模型的基本思想、相关的损失函数以及为什么使用这样的损失函数;决策树模型最初用来解决分类问题,我们会进一步去研究如何使用决策树模型来解决回归问题;此外,我们还将借助决策树模型讲解机器学习中的一种非常重要的思想:集成学习思想,并由此引出现在目前使用较为广泛的一种决策树的集成模型:随机森林。

决策树

模型形式

按照前面的学习范式,我们首先来认识决策树的模型形式,我们将会见识到,模型形式不一定非要是使用数学形式表达的“公式”,决策树的逻辑形式实际上是一组决策“逻辑”或者“流程”,我们也将看到,这种决策或者流程实际上是最符合我们日常“决策逻辑”的模型。

对于数据集合 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯   , ( x N , y N ) } \mathcal{D}=\{(x_1, y_1),(x_2, y_2),\cdots,(x_N, y_N)\} D={(x1,y1),(x2,y2),,(xN,yN)},其中 x i ∈ R P x_i \in R^P xiRP,也就是说每个输入数据有 P P P个属性,假设第 t t t个属性有 q q q个取值,记作 t 1 , … , t q t^1,\dots,t^q t1,,tq,则我们可以根据该属性将数据集合最多分为 q q q组,每一组有1个或多个取值。

上述这种操作我们姑且称之为根据属性 t i t^i ti进行决策。想象这样一种情况,如果根据属性 t i t^i ti分组后,每一组中的数据的 y y y全部属于同一个类别,我们就可以说依据属性 t i t^i ti我们进行了完美的分类。

当然,很少有情况使得我们仅仅依靠一个属性 t i t^i ti就对数据进行了完美分类。考虑到我们一共有 P P P个属性,我们可以递归式地一个一个选择属性进行分类,每次分类都尽量使得结果集合中的混杂程度小,最终实现或者尽可能实现完美分类,这就是决策树的基本形式。

我们使用图3-1来展示这种分类规则:

在这里插入图片描述

首先根据第一个属性进行决策分组,然后对每个分组再根据第二个属性进行决策分组…以此类推。图中是一个树状结构,每一个方框称为一个节点,原始数据集合在根节点上(没有父亲节点),没有孩子节点的称为叶子节点。

很容易想到两个问题:一是如何依次选择属性,使得我们分类的效果最好;二是对于 P P P个属性,我们递归到什么时候结束。

对于第一个问题,我们很容易想到,可以使用第一章中提到的信息熵,它实际上是度量集合混杂程度/(西瓜书中说的纯度实际是混杂程度的反面)最常用的一种指标。信息熵越大,混杂程度越高。我们将在接下来的损失函数的讨论中进一步讨论。

对于第二个问题,一般而言递归结束的条件有三个:

  1. 当前组中的样本全部属于同一类别(即实现了完美分类),无需进一步划分;
  2. 未选择的属性集为空或者剩余的属性在本组中每个样本中的取值相同,无法继续划分;
  3. 当先分组的样本集合为空,无需进一步划分。

对于第①种情况,在给分支上已经实现了完美分类;对于第②种情况,我们取该集合中类别最多的类作为该组的分类;对于第③中情况,我们实际上已经对测试集合分类完毕(该节点中不再有数据),但是难免新的数据会被分到该组中,因此也需要给该组一个分类,我们取其父亲节点的分类作为该组的分类。

以上便是决策树的模型形式。接下来我们讨论决策树的损失函数和优化算法,对于决策树,我们将这两个要素合在一起讨论。

损失函数&优化算法

ID3算法

前面提到,我们可以使用信息熵来度量数据集合的混杂程度。首先我们回顾一下信息熵的数学形式:
H ( X ) = − ∑ i = 1 n p ( x i ) log ⁡ ( p ( x i ) ) (3-1) H(X)=-\sum_{i=1}^{n} p\left(x_{i}\right) \log \left(p\left(x_{i}\right)\right)\tag{3-1} H(X)=i=1np(xi)log(p(xi))(3-1)对于集合 D \mathcal{D} D,记第 k k k类样本所占的比例为 p k ( k = 1 , 2 , … , ∣ Y ∣ ) p_k(k=1,2,\dots,|\mathcal{Y}|) pk(k=1,2,,Y),则 D \mathcal{D} D的信息熵为:
Ent ⁡ ( D ) = − ∑ k = 1 ∣ Y ∣ p k log ⁡ 2 p k (3-2) \operatorname{Ent}(\mathcal{D})=-\sum_{k=1}^{|\mathcal{Y}|} p_{k} \log _{2} p_{k}\tag{3-2} Ent(D)=k=1Ypklog2pk(3-2)依据第 t t t个属性对数据集进行分组之后,各组的信息熵可以计算如下: ∑ i = 1 q ∣ D i ∣ ∣ D ∣ Ent ⁡ ( D i ) (3-3) \sum_{i=1}^{q} \frac{\left|\mathcal{D}^{i}\right|}{|\mathcal{D}|} \operatorname{Ent}\left(\mathcal{D}^{i}\right)\tag{3-3} i=1qDDiEnt(Di)(3-3)即各个分组信息熵的加权之和。其中 q q q是属性 t t t的取值可能性数量。

我们已经知道,信息熵越大,混乱程度越大;如果根据属性 t t t分组后的信息熵比原来的信息熵要小,说明该属性给我们提供了“分类信息”。

自然地,能够想到使用前后信息熵之差来度量“分类信息”的大小,这就是第一章提到的信息增益: H ( Y ∣ X ) = ∑ x ∈ X p ( x ) H ( Y ∣ X = x ) (3-4) H(Y \mid X)=\sum_{x \in X} p(x) H(Y \mid X=x)\tag{3-4} H(YX)=xXp(x)H(YX=x)(3-4)同样地,在决策树中,使用集合形式表达的信息增益为: Gain ⁡ ( D , t ) = Ent ⁡ ( D ) − ∑ i = 1 q ∣ D i ∣ ∣ D ∣ Ent ⁡ ( D i ) (3-5) \operatorname{Gain}(D, t)=\operatorname{Ent}(D)-\sum_{i=1}^{q} \frac{\left|\mathcal{D}^{i}\right|}{|\mathcal{D}|} \operatorname{Ent}\left(\mathcal{D}^{i}\right)\tag{3-5} Gain(D,t)=Ent(D)i=1qDDiEnt(Di)(3-5)

信息增益越大,说明使用该属性带来的“分类信息”越大,因此通常计算一遍属性集合中的所有属性来确定本次决策使用哪个属性作为分类依据。相应的优化算法可以写成如下形式: t ∗ = arg ⁡ max ⁡ t Gain ⁡ ( D , t ) t_{*}=\underset{t }{\arg \max } \operatorname{Gain}(D, t) t=targmaxGain(D,t)这就是注明的ID3算法。

C4.5算法

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值