基于Python的决策树分类器与剪枝

作者|Angel Das 编译|VK 来源|Towards Data Science

介绍

  • 决策树分类器是一种有监督的学习模型,在我们关心可解释性时非常有用。
  • 决策树通过基于每个层次的多个问题做出决策来分解数据
  • 决策树是处理分类问题的常用算法之一。

为了更好地理解它,让我们看看下面的例子。

决策树通常包括:

  • 根节点-表示被进一步划分为同质组的样本或总体
  • 拆分-将节点分为两个子节点的过程
  • 决策节点-当一个子节点根据某个条件拆分为其他子节点时,称为决策节点
  • 叶节点或终端节点-不进一步拆分的子节点
  • 信息增益-要使用一个条件(比如说信息最丰富的特征)来分割节点,我们需要定义一个可以优化的目标函数。在决策树算法中,我们倾向于在每次分割时最大化信息增益。在测量信息增益时,通常使用三种度量。它们是基尼不纯度、熵和分类误差

数学理解

为了理解决策树是如何发展的,我们需要更深入地了解在每一步中如何使用度量使信息增益最大化。

让我们举一个例子,其中我们有包含学生信息的训练数据,如性别、年级、因变量或分类变量,这些变量可以识别学生是否是美食家。我们有以下概述的信息。

  1. 学生总数-20人

  2. 被归为美食家的学生总数-10

  3. 不属于美食家的学生总数-10

  4. P(美食家),即学生成为美食家的概率=(10/20)=0.5

  5. Q(非美食家),学生不是美食家的概率=(10/20)=0.5

让我们根据学生的性别将他们分成两个节点,并重新计算上述指标。

男学生(节点A)
  1. 学生总数-10人

  2. 被归为美食家的学生总数-8

  3. 不属于美食家的学生总数-2

  4. P(美食家),学生成为美食家的概率=(8/10)=0.8

  5. Q(非美食家),学生不是美食家的概率=(2/10)=0.2

女生(节点B)
  1. 学生总数-10人

  2. 被归为美食家的学生总数-4

  3. 不属于美食家的学生总数-6

  4. P(美食家),学生成为美食家的概率=(4/10)=0.4

  5. Q(非美食家),学生不成为美食家的概率=(6/10)=0.6

节点A的基尼指数 (GIn)=P²+Q²,其中P和Q是学生成为美食家和非美食家的概率。GIn(节点A)=0.8²+0.2²=0.68

节点A的基尼不纯度(GIp)=1-基尼指数=1–0.68=0.32

节点B或女生的基尼指数(GIn)=P²+Q²,其中P和Q是学生成为美食家和非美食家的概率。GIn(节点B)=0.4²+0.6²=0.52

节点B的基尼不纯度(GIp)=1-基尼指数=1–0.52=0.48

我们观察到的是,当我们将学生按性别(男性和女性)分别划分为A和B节点时,我们分别得到了两个节点的基尼不纯度。现在,为了确定性别是否是将学生分为美食家和非美食家的正确变量,我们需要一个加权基尼不纯度分数,该分数使用以下公式计算。

加权基尼不纯度=(A节点总样本数/数据集中总样本数)基尼不纯度(A节点)+(B节点总样本数/数据集中样本数)基尼不纯度(B节点)

用此公式计算上例的加权基尼不纯度分数,按性别划分学生时加权基尼不纯度分数=(10/20)0.32 + (10/20)0.48 = 0.4

一个分类问题涉及多个自变量。变量可以是名义变量,也可以是连续变量。决策树很适合处理不同数据类型的变量。

决策树算法在决定每个节点的拆分时考虑了所有可能的变量,可以获得最大加权不纯度增益的变量被用作特定节点的决策变量。

在上面的例子中,使用“性别”作为决策变量的加权不纯度增益是0.4,但是,假设使用“年级”作为决策变量,加权不纯度增益0.56,算法将使用“年级”作为创建第一个分割的决策变量。所有后续步骤都遵循类似的方法,直到每个节点都是同构的。

决策树算法简介

  1. 决策树容易过度拟合,因为算法继续将节点分割为子节点,直到每个节点变得均匀

  2. 与测试集相比,训练数据的精度要高得多,因此需要对决策树进行剪枝,以防止模型过度拟合。剪枝可以通过控制树的深度、每个节点的最大/最小样本数、要拆分的节点的最小不纯度增益和最大叶节点来实现

  3. Python允许用户使用基尼不纯度或熵作为信息增益准则来开发决策树

  4. 可以使用网格搜索或随机搜索CV对决策树进行微调。CV代表交叉验证

三种不同不纯度标准的比较

下面概述的代码片段提供了不同不纯度标准的直观比较,以及它们如何随不同的概率值而变化。注意下面的代码改编自Deeper Insights into Machine Learning by S.Raschka, D.Julian, and J.Hearty, 2016

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值