机器学习之监督学习(四)决策树和随机森林

机器学习之监督学习(四)决策树和随机森林

0. 文章传送

机器学习之监督学习(一)线性回归、多项式回归、算法优化[巨详细笔记]
机器学习之监督学习(二)二元逻辑回归
机器学习之监督学习(三)神经网络基础
机器学习之实战篇——预测二手房房价(线性回归)
机器学习之实战篇——肿瘤良性/恶性分类器(二元逻辑回归)
机器学习之实战篇——MNIST手写数字0~9识别(全连接神经网络模型)

1. 决策树 Decision Tree

案例引入

前面的文章系列已经介绍了几种监督学习算法,包括线性回归、逻辑回归、神经网络,现在介绍另一种截然不同的算法——决策树模型(Decison Tree)。决策树是一种简单、高效、可解释的机器学习模型,可以用于分类问题和回归问题。

下面展现了一个猫分类的案例,输入耳朵形状、脸形状、胡须有无,输出1(猫)/0(非猫),图中包含10个样本。
在这里插入图片描述

下面展现了一棵决策树,学过数据结构的我们对树结构(递归结构)并不陌生。最顶端的结点称为根结点(root node),根结点左右分叉形成左子树和右子树,最底部的结点称为叶结点(leaf node)。在这棵决策树中,在根结点中选取耳朵形状作为特征,然后根据耳朵尖状或松散分叉成左右子树,左孩子结点选择脸型作为特征,右孩子结点选择胡须作为特征,再进一步分叉后第三层的叶子结点输出类别(是猫/不是猫)。

在构建了决策树后,对于新的输入,我们便可以预测其类别。例如一只耳尖、脸圆、有须的猫,从根结点出发进行一系列特征选择(左->左),将其分类为猫。
在这里插入图片描述

构建过程

在这里插入图片描述
如何从训练集中构建出一棵最优决策树?接下来让我们回答几个核心问题,探究决策树的构建过程:

Q1:如何选择节点特征进行分裂?
答:最大化纯度(purity)
在这里插入图片描述

构建决策树第一个核心问题是如何在诸多特征中进行选择,让决策树进一步分裂。
看上图,当选择cat DNA作为特征时,可以发现左边都是猫,右边都是狗,即完全分门别类,左右边纯度都是100%。而在下面的三种特征选取中,我们发现按第一个特征分裂,左边猫占80%,右边非猫占80%;按第二个特征分裂,左边猫占4/7,右边非猫占2/3;按第三个特征分裂,左边猫占3/4,右边非猫占2/3,可以发现两个比例都是按第一个特征分裂最高,因此选取第一个特征最优。

如何表征纯度?引入(entropy)和熵函数的概念,定义p表示样本中正类(例如是猫)的占比,则熵值为H(p),其中H为熵函数,表达式为:
H ( p ) = − p l o g 2 ( p ) − ( 1 − p ) l o g 2 ( 1 − p ) H(p)=-plog_2(p)-(1-p)log_2(1-p) H(p)=plog2(p)(1p)log2(1p)
函数图像如下:可以看到函数图像关于p=0.5对称,p(0.5)=1,p(0)=p(1)=1

熵表征的是非纯度(impurity),可以看到p=0.5时非纯度最高,p趋近0或1时表示样本趋于正/负类,纯度高,因此非纯度趋于0.
在这里插入图片描述
节点特征选择的策略就是选择对应信息增益(information gain)最大的特征。
何为信息增益?表达式为
I n f o r m a t i o n   g a i n = H ( p r o o t ) − ( w l e f t H ( p l e f t ) + w r i g h t H ( p r i g h t ) ) Information~gain=H(p_{root})-(w_{left}H(p_{left})+w_{right}H(p_{right})) Information gain=H(proot)(wleftH(pleft)+wrightH(pright))
参照下图示例理解信息增益,需要计算根结点熵值、左右结点熵值,如何计算左、右结点熵值乘权重后相加值与根结点熵值相减,计算出信息增益。

下图中,耳朵特征信息增益最大,因此选取其为根结点分裂特征。

在这里插入图片描述
由于树模型属于典型的递归结构,在确定了根结点后,剩下按一样的思路递归构造左子树和右子树即可,但仍有一个问题需要解决,何时结束递归?即何时结束决策树分类,完成决策树的构造?

Q2:何时停止节点分裂?
答:节点停止分裂的标准并不单一,以下是常见的几个基本标准:

①当一个结点纯度达到100%时
②当决策树分裂达到最大深度时
③当信息增益小于某个阈值时
④当某个结点样本数小于某个阈值时
在这里插入图片描述

Q3:上面案例中的特征都是二元特征,那该如何处理多元特征?
答:采用独热编码

上面案例中的特征都是二元特征,也就是只有两个取值,这样构建的决策树属于二叉树。当某一个特征有k个有限取值时,可以创建k个二元特征(0/1取值),保证决策树是二叉树。使用独热编码的特征,既适用于决策树模型,也适用于逻辑回归、线性回归、神经网络模型。

Q4:上面案例中的特征都是离散型特征, 如何处理连续取值特征?
答:二分法(Binary Split),这是最常用的方法:

  • 对连续特征的所有不同取值进行排序
  • 取相邻两个值的中点作为可能的分割点
  • 对每个可能的分割点,计算分割后的信息增益
  • 选择信息增益最大的点作为该特征的分割点

例如,如果一个特征有值[1, 3, 4, 5, 7],则可能的分割点为1.5, 3.5, 4.5, 6。在这里插入图片描述

Q5:上面案例中决策树用于处理二元分类问题,那如何处理多元分类问题呢?
答:
①有时会采用One-vs-Rest策略,为每个类别训练一个二分类决策树,然后选择置信度最高的类别作为最终预测结果。

②在多分类问题中,我们仍然使用信息增益作为分裂标准,但计算方式略有不同:
对于熵,公式变为: H = − Σ ( p i × l o g 2 ( p i ) ) H = -Σ(p_i \times log_2(p_i)) H=Σ(pi×log2(pi)),其中pi是第i类的概率。
在多分类问题中,叶节点的类别通常由该节点中样本最多的类别决定。
为了理解多分类问题中决策树的构建过程,下面是某ai大模型生成的案例:

完整的决策树构建过程:

初始数据集:
颜色	形状	类别
红	圆	苹果
黄	长	香蕉
橙	圆	橙子
红	圆	苹果
黄	长	香蕉
红	圆	苹果
橙	圆	橙子
黄	圆	苹果
根节点的熵计算:
苹果: 4/8, 香蕉: 2/8, 橙子: 2/8
H = -(4/8 * log2(4/8) + 2/8 * log2(2/8) + 2/8 * log2(2/8)) ≈ 1.5

第一次分裂(使用"颜色"特征):
红色节点:3苹果
黄色节点:2香蕉,1苹果
橙色节点:2橙子

计算每个子节点的熵:
H_红 = 0
H_黄 ≈ 0.92
H_橙 = 0

信息增益 = 1.5 - (3/8 * 0 + 3/8 * 0.92 + 2/8 * 0) ≈ 1.15

继续分裂黄色节点(使用"形状"特征):
长形节点:2香蕉
圆形节点:1苹果

计算这次分裂的信息增益:
H_before ≈ 0.92
H_after = 0
信息增益 ≈ 0.92

最终的叶节点决定:
红色节点:3苹果 -> 类别为苹果
橙色节点:2橙子 -> 类别为橙子
黄色长形节点:2香蕉 -> 类别为香蕉
黄色圆形节点:1苹果 -> 类别为苹果
决策树图示:
           根节点
           (颜色)
          /   |   \
         /    |    \
        /     |     \
     红色    黄色    橙色
    (苹果)  (形状)  (橙子)
            /   \
           /     \
         长形    圆形
       (香蕉)   (苹果)
这个决策树的解释:

首先看水果的颜色
如果是红色,分类为苹果
如果是橙色,分类为橙子
如果是黄色,再看形状:
如果是长形,分类为香蕉
如果是圆形,分类为苹果

Q6:上面的案例中决策树都是分类树,那如何处理回归问题呢?

施工中****************************************************************************************

  • 7
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值