题目5.1
题目描述: 根据表(5.1)所给的训练数据集, 利用信息增益比 (C4.5算法)生成决策树
解答:
信息增益率的公式是:
首先回顾一下表(5.1)的结构:
根据书上已经计算提供的数据, 我们有:
,
,
,
,
,
,
,
,
所以根据信息增益比的原则, 我们选择特征"有自己的房子"为切分点.
在左结点里, 所有"有自己的房子==是"的实例数据的类别均为"是", 所以左结点为叶结点, 结点类别为"是".
在右结点里, 我们首先整理出子数据集
:
所以在右结点选择特征"有工作", 以此切分后, 左右结点的实例数据子集都是单一类别的.
由此, 我们完成了根据信息增益比的C4.5决策树构造, 见下图.
题目5.2
题目叙述: 己知如表 5.2 所示的训练数据,试用平方误差损失准则生成一棵二叉回归树
解答:
回归树的平方损失准则是: 选择一个切分点, 将训练数据集分为小于等于
和
大于
两个子集, 求这个2个子集的
平方损失之和作为衡量这个切分点好坏的衡量标准.
我们用python代码帮助我们便捷快速地选择最优切分点:
import
运行如上代码, 不断地对数据进行二叉切分后, 最终得到如下图的二叉回归决策树, 由于没有设置最小阈值, 所以我们是对每个点分到了叶结点.
题目5.3
题目叙述: 证明CART剪枝算法中, 当
确定时, 存在唯一的最小子树
使得损失函数
最小化
解答:
采用反证法:
存在性易证, 在特征有限、数据集有限的情况下, 由于能生成的决策树数量有限, 每一棵都对应某一个
损失函数. 此之中一定存在一个最小的损失函数
.
唯一性: 对于决策树生成算法生成原始数
,假设存在2棵不同的最小子树
和
使得损失函数
最小化.
由于两棵子树不相同, 所以它们的剪枝方法
, 由于根据CART剪枝算法, 其中剪枝的每一步都使得损失函数
变低. 所以令
, 由
剪枝法生成的决策树为
. 那么就会有
以及
. 所以与假设
和
是使损失函数最小化的最小字数矛盾.
由此, 得证.
题目5.4
题目叙述: 证明CART剪枝算法中求出的子树序列
分别是区间
的最优子树
, 这里
,
解答:
首先我们需要回顾一下CART剪枝算法中, 我们对
中每一内部结点
都计算了:
. 剪枝的过程即是在
中减去
第
小的
作为
, 同时将
设为
.
我们想要证明
是区间
的最优子树.
首先
, 但是在剪枝序列
中这些结点已经被修剪掉了.
而排序在后的结点
, 都有
, 所以当惩罚系数
时, 若对
进行剪枝将会造成损失函数
增长.
由此, 得证
是
序列中的最优子树.
欢迎大家指出不足或错误, 进行提问和讨论.