ps:本文为记录参与Datawhale-7月吃瓜教程的学习笔记
pss:文章所有PPT截图来自于:Datawhale吃瓜教程(https://www.bilibili.com/video/BV1Mh411e7VU),记得一键三连~
目录
Task03 详读西瓜书+南瓜书第4章
1 基本流程
2 划分选择
2.1 信息增益
2.2 增益率
2.3 基尼指数
3 剪枝处理
3.1 预剪枝
3.2 后剪枝
4 连续与缺失值
4.1 连续值处理
4.2 缺失值处理
5 多变量决策树
决策树是基于树结构来进行决策的,正好对应的是人类面对决策时的处理机制,决策过程的最终结论对应了我们所希望的判定结果。
算法原理
决策树与数据结构中的树类似,包含一个根结点、若干内部结点和若干个叶结点;其中:
决策树学习的目的是为了产生一棵泛化能力强,即处理未见示例能力强的决策树。
在决策树算法中,有三种情形会导致递归返回:
针对“情形2”,把当前结点标记为叶结点,井将其类别设定为该结点所含样本最多的类别,利用的是当前结点的后验分布;
针对“情形3”,同样把当前结点标记为叶结点,但将其类别设定为其父结点所含样本最多的类别,利用的是把父节点的样本分布作为当前结点的先验分布。
信息熵(information entropy):度量样本集合纯度最常用的一种指标。假定当前样本集合DD中第k类样本所占的比例为则D的信息熵表示为:
Ent(D)值越小,则D的纯度越高。Ent(D)的最小值为0,最大值为。举例子理解:
严谨的数学证明详见:Datawhale社区的南瓜书的第4章 决策树 (datawhalechina.github.io) 的4.1。
信息增益:假定使用属性a对样本集D进行划分,产生了v个分支节点,v表示其中第v个分支节点,其中第 v 个分支结点包含了 D 中所有在 属性 α 上取值为的样本, 记为
,根据上式子可以计算出用属性a对样本集D进行划分所获得的的“信息增益”(information gain)。
一般来说,信息增益越大,则意味着使用属性 α 来进行划分所获得的"纯度提升"越大。著名的ID3 决策树学习算法就是以信息增益为准则来选择划分属性的。
信息增益越大,意味着在当前条件下,信息的不确定性减小的越多,不确定性越低,在本场景中就是样本的纯度越高。
为了平衡信息增益准则倾向于可取数目较多的属性这一偏好带来的不利影响,著名的C4.5决策树算法使用“增益率”(gain ratio)来选择最优划分属性。增益率定义为:
称为属性 α 的"固有值" (intrinsic value) , 属性 α 的可能取值数目越多(即 V 越大),则 IV(α) 的值通常会越大。
剪枝(pruning)是决策树学习算法对付"过拟合"的主要手段.在决策树学习中,为了尽可能正确分类训练样本,结点划分过程将不断重复,有时会造成决策树分支过多,这时就可能因训练样本学得"太好"了,即过拟合.因此可通过主动去掉一些分支来降低过拟合的风险。
预剪枝(prepruning)的定义就是在决策树生成的过程中,对每个结点在划分前先进行估计,若当前结点的划分不能带来决策树泛化性能的提升,则停止划分,并将当前结点标记为叶子结点。
预剪枝的好处是使得决策树的很多分支都没有"展开“,可以降低过拟合的风险;还显著减少了决策树的训练时间和测试时间的开销。但坏处是有有些分支的当前划分虽不能提升泛化性能、甚至可能导致泛化性能暂时下降,但在其基础上进行的后续划分却有可能导致性能显著提高,还有就是预剪枝基于"贪心"本质禁止这些分支展开,会带来欠拟合的风险。
后剪枝(postpruning)是发生于决策树生成完成以后,从由底至上考虑每个非叶节点,若将该结点替换为叶节点能够给决策树带来泛化性能的提升的话,则将该结点替换为叶节点。
因为后剪枝是在一棵完整的决策树的基础上从底至上考虑每个非叶节点,通常相对于预剪枝决策树保留了更多的分支,其欠拟合风险很小,泛化性能往往也优于预剪枝决策树,不过训练时间开销会较大。
到目前为止我们仅讨论了基于离散属性来生成决策树,现实学习任务中常会遇到连续属性,有必要讨论如何在决策树学习中使用连续属性。 最简单的策略是采用二分法(bi-partition)对连续属性进行处理,这正是 C4.5 决策树算法中采用的机制。(划分为:>a or
——————————————————————————————————————————— (待补充......)
4.1 连续值处理
4.2 缺失值处理
5 多变量决策树