西瓜书决策树笔记

Posted MathPie

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了西瓜书决策树笔记相关的知识,希望对你有一定的参考价值。

决策树Decision Tree

文章目录

基本知识

一类常见的机器学习方法

决策树是基于树结构来进行决策的,这恰是人类在面临决策问题时一种很自然的处理机制。

决策过程的最终结论对应了我们所希望的判定结果。决策过程中提出的每个判定问题都是对某个属性的“测试”

一般的,一棵决策树包含一个根结点,若干个内部结点和若干个叶结点,叶结点对应了决策结果,其他结点对应于一个属性测试。
每个结点包含的样本集合根据属性测试的结果被划分到子结点中,根结点包含样本全集。
从根结点到每个叶结点的路径对应了一个判定测试序列
决策树学习的目的是为了产生一棵泛化能力强,即处理未见示例能力强的决策树。

决策树的生成是一个递归过程,有三种情形会导致递归返回(产生叶结点):

  • 1
    当前结点包含的样本全属于同一类别,无需划分,该叶结点的类别自然就是所有样本属于的那一类
  • 2
    当前属性集为空,或是所有样本在属性上取值相同,无法划分,该叶结点的类别设定为该结点所包含的样本最多的一类,属于利用该结点的后验分布
  • 3
    当前结点包含的样本集为空,不能划分,该叶结点的类别采用其父节点所含样本最多的那一类,将父节点的样本分布作为了当前节点的先验分布

划分选择

决策树学习的关键在于如何选择最优划分属性,随着划分的进行,我们希望决策树的分支结点所包含的样本尽可能属于同一类别,纯度越来越高。

利用信息增益选择最优属性

前置概念:
信息熵:度量样本集合纯度的一种指标

E n t ( D ) = − ∑ k = 1 ∣ y ∣ p k l o g 2 p k     p k ( k = 1 , 2 , 3 … … , ∣ y ∣ ) Ent(D)=-\\sum^|y|_k=1p_klog_2p_k ~~~ p_k(k=1,2,3……,|y|) Ent(D)=k=1ypklog2pk   pk(k=1,2,3……,y)

信息熵越小,D纯度越高

信息增益:划分前的信息熵减去划分后各结点的信息熵之和,表示纯度的提升

G a i n ( D , α ) = E n t ( D ) − ∑ v = 1 V ∣ D v ∣ ∣ D ∣ E n t ( D v ) Gain(D,\\alpha)=Ent(D)-\\sum^V_v=1\\frac|D^v||D|Ent(D^v) Gain(D,α)=Ent(D)v=1VDDvEnt(Dv)
D v D^v Dv表示D以某一属性 a = a v a=a^v a=av为划分出来的分支结点所包含的样本集合, ∣ D v ∣ ∣ D ∣ \\frac|D^v||D| DDv表示分支结点所占的权重

ID3(Iterative Dichotomiser 3迭代二叉树三代)决策树,是由 Ross Quinlan于1986年提出的决策树思想方法,是以信息增益为准则来选择划分属性的。

通过比较对不同属性进行本次分支的划分,来找出最大的信息增益,来找到最优划分属性

利用增益率选择最优属性

由于信息增益对可取值数目较多的属性有所偏好(当取值较多时,用该属性划分出的单个分支纯度可能越高,那么这些分支的信息熵可能都比较小,相加后可以得到更小的信息熵之和,进而得到更大的信息增益,简单来说,就是分支越多,信息熵通常越小

所以,引入了信息增益率来进一步优化。

G a i n r a t i o ( D , α ) = G a i n ( D , α ) I V ( a ) Gain_ratio(D,\\alpha)=\\fracGain(D,\\alpha)IV(a) Gainratio(D,α)=IV(a)Gain(D,α)

I V ( a ) IV(a) IV(a)为属性a的固有值(intrinsic value),属性a的可能取值数目越多,IV(a)的取值通常越大(类比信息熵,这里相当于V越大,属性a所含的信息量通常越大)

但是,信息增益率对可取值数目少的属性有所偏好,因此C4.5算法并不是选择增益率最大的候选划分属性,而是使用了一个启发式,先从候选划分属性中找出信息增益高于平均水平的属性,然后再从中选择增益率最高的

利用基尼指数选择最优属性

CART决策树(Classification and Regression Tree),既可以用于分类问题,也可以用于回归问题。

前置概念:
基尼值:
G i n i ( D ) = ∑ k = 1 ∣ y ∣ ∑ k ′ ≠ k p k p k ′                  = 1 − ∑ k = 1 ∣ y ∣ p k 2 Gini(D)=\\sum^|y|_k=1 \\sum_k^' \\neq kp_kp_k^'\\\\~~~~~~~~~~~~~~~~=1-\\sum_k=1^|y|p_k^2 Gini(D)=k=1yk=kpkpk                =1k=1ypk2

基尼系数:
G i n i i n d e x ( D , α ) = ∑ v = 1 ∣ D v ∣ G i n i ( D v ) Gini_index(D,\\alpha)=\\sum_v=1^|D^v|Gini(D^v) Giniindex(D,α)=v=1DvGini(Dv)

基尼值表示从数据集D中随机抽取两个样本,他们的类别不一致的概率,因此Gini(D)越小,D的纯度越高。

基尼指数则是表示对于一个划分属性来说,他所划分的各个分支的纯度表现,基尼指数越小,纯度表现越好。

我们会选择基尼指数最小的属性作为最优划分属性,因为它所划分的各结点纯度表现最好

剪枝处理

剪枝(pruning)是决策树学习算法对付“过拟合”的主要手段。
在决策树学习过程中,为尽可能正确分类训练样本,节点划分过程不断重复,有时会造成决策树分支过多,导致将一些训练集自身的特点当作普遍特点造成过拟合。因此,可以通过主动剪去一些分支,来减少过拟合的风险。

预剪枝

在决策树生成过程中,对每个结点在划分前先进行估计,若当前结点的划分不能带来决策树泛化能力(对于样本类别判断是否正确的能力)的提升,则停止划分并将当前结点标记为叶结点。

Note:在判断叶结点类别时是在训练集上进行判断的,但是在泛化性能是在验证集上计算的,实际计算中,容易搞混

仅有一层划分的决策树为决策树桩(Decision Stump)

由于分支不能增加泛化性能,但分支再分支却可能增加泛化性能,所以预剪枝可能会造成欠拟合

后剪枝

先从训练集生成一棵完整的决策树,然后自底向上地对非叶结点进行考察,若将该结点对应的子树替换为叶结点可以增加泛化性能,那么则替换。

后剪枝决策树通常比预剪枝决策树保留了更多的分支,后剪枝比预剪枝的欠拟合可能性要小,泛化性能更优,但是训练时间开销要更大

连续值处理

我们目前仅讨论了基于离散值属性来生成决策树,但是连续属性我们不能在实际操作中避免,所以我们要在面对连续属性时进行处理。

二分法处理连续属性

C4.5决策树便采用了这一方法
对于一个属性a,在样本集D上出现了 a 1 , a 2 … … a n \\a^1,a^2……a^n\\ a1,a2……an共n个取值,我们选定一个划分点t,将D划分为 D t − 和 D t + D_t^-和D_t^+ DtDt+两个集合。

我们首先根据连续属性在样本中出现的值确定划分点的候选集合:
T a = a i + a i + 1 2 ∣ 1 ≤ i ≤ i + 1 T_a=\\\\fraca^i+a^i+12|1\\leq i \\leq i+1\\ Ta=2ai+ai+1∣1ii+1
之后通过信息增益从候选集合中选出最优的划分点

G a i n ( D , α ) = max ⁡ t ∈ T a E n t ( D ) − ∑ λ ∈ − , + ∣ D t λ ∣ ∣ D ∣ E n t ( D t λ ) Gain(D,\\alpha)=\\displaystyle \\max_t \\in T_a Ent(D)-\\sum_\\lambda \\in \\-,+\\ \\frac|D_t^\\lambda||D|Ent(D_t^\\lambda) Gain(D,α)=tTamaxEnt(D)λ,+DDtλEnt(Dtλ)

需注意的是,与离散属性不同,若当前结点划分为连续属性,该属性还可以作为后续结点的划分属性

缺失值处理

现实任务中常会遇到不完整的样本,即某些样本的某些属性缺失。尤其是在属性数目较多的情况下,往往会有大量样本出现缺失值,若简单地放弃不完整样本,仅使用无缺失值的样本进行学习,显然是对数据信息的浪费。所以,有必要考虑利用缺失属性值的训练样例来进行学习。

在利用缺失属性值的训练样例时,我们需要考虑两个问题:
(1)如何在属性值缺失的情况下进行划分属性选择?
(2)给定划分属性,若样本在该属性值上缺失,如何对样本进行划分?

针对(1)

我们仅根据 D ~ \\displaystyle \\widetildeD 以上是关于西瓜书决策树笔记的主要内容,如果未能解决你的问题,请参考以下文章

一起啃西瓜书机器学习-期末复习

《机器学习》(周志华)第4章 决策树 笔记 理论及实现——“西瓜树”——CART决策树

机器学习--决策树

西瓜书第四章--决策树

《全网最强》详解机器学习分类算法之决策树(附可视化和代码)

机器学习决策树(划分选择算法流程剪枝处理,连续值与缺失值处理)