python计算决策树误差_《统计学习方法》第五章决策树 练习题解答

0243e509a31f06162c741be0d3af83bf.png

题目5.1

题目描述: 根据表(5.1)所给的训练数据集, 利用信息增益比 (C4.5算法)生成决策树

解答:

信息增益率的公式是:

首先回顾一下表(5.1)的结构:

328ad22392b1c0733edbeb9af5a8172f.png
表(5.1)

根据书上已经计算提供的数据, 我们有:

,
,

,
,

,
,

,
,

所以根据信息增益比的原则, 我们选择特征"有自己的房子"为切分点.

在左结点里, 所有"有自己的房子==是"的实例数据的类别均为"是", 所以左结点为叶结点, 结点类别为"是".

在右结点里, 我们首先整理出子数据集

:

1bb7a7916d1cb839b7a1fc810a340817.png
右结点 数据子集

所以在右结点选择特征"有工作", 以此切分后, 左右结点的实例数据子集都是单一类别的.

由此, 我们完成了根据信息增益比C4.5决策树构造, 见下图.

0c989f136d7eade23eae93dac935f268.png
C4.5算法 最终决策树

题目5.2

题目叙述: 己知如表 5.2 所示的训练数据,试用平方误差损失准则生成一棵二叉回归树

1b9af34f3f37c27d409866e4c3178857.png

解答:

回归树的平方损失准则是: 选择一个切分点, 将训练数据集分为小于等于

大于
两个子集, 求这个2个子集的
平方损失之和作为衡量这个切分点好坏的衡量标准.

我们用python代码帮助我们便捷快速地选择最优切分点:

import 

运行如上代码, 不断地对数据进行二叉切分后, 最终得到如下图的二叉回归决策树, 由于没有设置最小阈值, 所以我们是对每个点分到了叶结点.

6794fe55280eb0eed910ff882c76d0be.png
最小平方损失: 回归树

题目5.3

题目叙述: 证明CART剪枝算法中, 当

确定时, 存在唯一的最小子树
使得损失函数
最小化

解答:

采用反证法:

存在性易证, 在特征有限、数据集有限的情况下, 由于能生成的决策树数量有限, 每一棵都对应某一个

损失函数. 此之中一定存在一个最小的损失函数
.

唯一性: 对于决策树生成算法生成原始数

,假设存在2棵不同的最小子树
使得损失函数
最小化.

由于两棵子树不相同, 所以它们的剪枝方法

, 由于根据CART剪枝算法, 其中剪枝的每一步都使得损失函数
变低. 所以令
, 由
剪枝法生成的决策树为
. 那么就会有
以及
. 所以与假设
是使损失函数最小化的最小字数矛盾.

由此, 得证.


题目5.4

题目叙述: 证明CART剪枝算法中求出的子树序列

分别是区间
的最优子树
, 这里
,

解答:

首先我们需要回顾一下CART剪枝算法中, 我们对

中每一内部结点
都计算了:

. 剪枝的过程即是在
中减去
小的
作为
, 同时将
设为
.

我们想要证明

是区间
的最优子树.

首先

, 但是在剪枝序列
中这些结点已经被修剪掉了.

而排序在后的结点

, 都有
, 所以当惩罚系数
时, 若对
进行剪枝将会造成损失函数
增长.

由此, 得证

序列中的最优子树.

欢迎大家指出不足或错误, 进行提问和讨论.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值