西瓜书学习(二)—决策树(下)

1)剪枝处理

我们之前在讲神经网络时候,提到过可能出现的“overfitting”现象,即训练结果不能很好泛化的现象。这里我们在决策树的处理中,当我们对决策树过度划分时,也会出现这种现象。因此,我们采用减去多余的树枝来减轻这种现象。为了测试泛化能力,类似神经网络,我们引入validation_data。如下:

西瓜书学习(二)—决策树(下)_第1张图片

(1)预剪枝

预剪枝是指我们在生成决策树的时候,对每个节点在划分时,进行预先估计,如果当前节点的划分,不能带来决策树泛化性能的提升,则停止划分,并将该结点标记为叶结点。

我们以西瓜数据集2.0举例:

根据上篇所学的信息增益原则,我们会选取属性“脐部”作为第一层划分。我们先来算一下,不划分之前的准确率。如果不划分的话,这里的决策树则为单结点决策树,其唯一结点为叶结点。其类别是训练样例最多的类别(这里我们训练样例中的“好瓜”和“坏瓜”各有5个)。这里我们将其标记为“好瓜”,用validation对其评估。则有{4,5,8}被分类正确。于是该单结点决策树正确率3/7=42.9%。

西瓜书学习(二)—决策树(下)_第2张图片

接下来,我们再计算一下用”脐部“属性分类后的正确率。“凹陷”包含样例{1,2,3,14},“稍凹”包含样例{6,7,15,17},“平坦”包含样例{10,16}。根据上段的原则,我们将其分别标记为“好瓜”,“好瓜”,“好瓜”,“坏瓜”。此时,validation data{4,5,8,11,12}分类正确(9是稍凹,按照决策树应该是好瓜,但是实际上是坏瓜。13是凹陷,按决策树是好瓜,但实际上是坏瓜)。其正确率是:5/7=71.4%>57.1%。该划分保留。

如下同理,我们对结点2进行划分,根据最优信息增益法则我们应该选择“色泽”对其划分。但是,再根据投票法则。青绿为好瓜,乌黑为好瓜,浅白为坏瓜。那么,由测试集检验编号{5}则会被决策树认为是坏瓜。这样,决策树分类正确的样本是{4,9,11,12},其准确率为4/7=57.1%。于是,终止划分。

对结点3,4同理。我们最终得到如下的决策树:

西瓜书学习(二)—决策树(下)_第3张图片

这种只有一层划分的决策树被称为决策树桩

总结:

  • 大大减小了过拟合风险,减少了训练时间。

  • 结构太过简单,有欠拟合风险。

(2)后剪枝

后剪枝是指在生成一个决策树后,自下而上对非叶结点考察,若该非叶结点替换成叶结点后泛化能力提升,则剪去该结点。

我们先计算之前的准确率,有{4,11,12}分类正确。其正确率是3/7=42.9%。

好,我们开始剪枝:先考虑结点6,我们如果其减去,替换为叶结点{7,15}。根据投票法则,我们将其标记为“好瓜”,此时验证集分类正确的样本是{4,8,11,12},其准确率提升到4/7=57.1%,该枝剪去。

再考察结点5,我们可以看到其包含{6,7,15}的样本,根据投票原则,标记为好瓜。这样其validation分类正确样本为{4,8,11,12}准确率为4/7=57.1%,准确率并未变化。无需减去。

对于结点2,我们可以看到其包括{1,2,3,14},根据投票法则,该叶结点标记为好瓜。validation分类正确样本是{4,5,8,11,12},准确速率提升到5/7=71.4%,剪去该枝。

对于结点1和3,剪去后准确率未提升,保留之。最终,我们得到如下决策树:

西瓜书学习(二)—决策树(下)_第4张图片

总结:

  • 比先剪枝的欠拟合风险小。

  • 训练时间长

2)属性的处理

(1)连续值处理

很明显,按照套路肯定需要离散化,最简单的就是二分法(C4.5)。下面给出方法:

  1. 将n个属性值从小到大排列。

  2. 分别对相邻的属性值求中位值,得到n-1个中位值。

  3. 将这n-1个中位值做为划分点对样本集合D进行划分,将其二分n-1次。选出其中信息增益最大的中位值,作为最终的划分点。公式如下:

    西瓜书学习(二)—决策树(下)_第5张图片

    这里的D+表示属性大于划分点的样本,D-表示属性小于划分点的样本。

下面举个例子,我们这里在之前的西瓜数据集上增加两个连续属性,密度和含糖率:

西瓜书学习(二)—决策树(下)_第6张图片

我们这里先考虑密度:

  1. 首先,对属性密度大小进行排序,{0.243,0.245,0.343,0.360,0.403,0.437,0.481,0.556,0.593,0.608,0.634,0.639,0.657,0.666,0.697,0.719,0.774}.

  2. 求得其两两之间的中位值是{0.244,0.294,0.3515,0.3815,0.420,0.459,0.5185,0.5745,0.6005,0.621,0.636,0.648,0.661,0.681,0.708,0.7465}

  3. 分别求信息增益,如下:     

西瓜书学习(二)—决策树(下)_第7张图片

同理,计算出其他中值点的信息增益,{0.118,0.187,0.263,0.094,0.03,0.004,0.002,0.600,。。。。}得到最大的信息增益是0.263,对应的划分点是0.381。同上篇构造决策树,我们最后得到如下:

西瓜书学习(二)—决策树(下)_第8张图片

这里要注意的一点是:与离散属性不同,若当前结点划分属性为连续属性,该属性还可作为其后代结点的划分属性

(2)缺失值处理

我们在实际采集数据集时很难完全获得完整的数据集,如下:

西瓜书学习(二)—决策树(下)_第9张图片

对于这样的数据,我们有两种情况:

  • 如何在属性值缺失的情况下,划分属性。

  • 给定划分属性,若样本在该属性上的值缺失,如何对样本划分。

我们首先来定义数据集D和属性a,我们用表示D中的样本属性a没有缺失的样本子集。我们用表示用a属性划分后,属于第v个类别的全部样本。表示中第k个类别的样本子集。我们再对每一个样本x赋予一个权重wx,定义如下几个比例:

西瓜书学习(二)—决策树(下)_第10张图片

可以很明显看出ρ表示样本总集D中,拥有属性a的样本子集占样本总集D的比例。表示拥有属性a样本子集中,第k类样本所占样本子集的比例。表示样本子集中,属性a中的第v类占样本子集的比例。

有了这些,我们就可以将其式4.2推广至:

西瓜书学习(二)—决策树(下)_第11张图片

其中的:


对于4.12,我们可以理解为对一个样本存在一定几率(ρ)是否缺失属性a,我们这里先将这个几率考虑进去。然后,后两个比例都是条件概率,是建立在上一个条件下成立的。换句话说,这就是一个样本以不同的概率划分到不同的子结点中

接下来,我们以表4.4举个例子:

这里默认样本权值都为1,这里的属性a为“色泽”。其拥有该属性的样本子集为{2,3,4,6,7,8,9,10,11,12,14,15,16,17}。计算信息熵,如下:

西瓜书学习(二)—决策树(下)_第12张图片

再计算在属性“色泽”分类后的,各类别样本信息熵:

西瓜书学习(二)—决策树(下)_第13张图片


再计算拥有属性“色泽”样本子集的属性的信息增益:

西瓜书学习(二)—决策树(下)_第14张图片

再计算样本总集的属性“色泽”的信息增益:


同理,计算其他的属性的信息增益:

西瓜书学习(二)—决策树(下)_第15张图片

可以得出“纹理”属性的信息增益最大,我们以纹理来对根结点划分。其他结点,同理。最终得出:

西瓜书学习(二)—决策树(下)_第16张图片

这里有一点要注意的地方:

我们在应用某属性分类时,如果有样本缺失该属性,则将其分入所有的类别中,但其权重要乘上类别比例。比如说,我们在用”纹理“属性对根结点分类时,会发现样本{8}和{10}缺失该属性。所以我们将其同时进入“清晰”“稍糊”“模糊”三个分支,但其权重为7/15,5/15,3/15。其三个类别的样本集为{1,2,3,4,5,6,15},{7,9,13,14,17}和{11,12,16}。

3)总结

到这里我们就把决策树的主要部分讲解完毕了。我们学了:

  • 对决策树的连续值处理是用二分法,且属性可复用。

  • 缺失值是用权重。

  • 是否剪枝用泛化能力提升来衡量。

同学们,下期再见!希望有志同道合的小伙伴关注我的公众平台,欢迎您的批评指正,共同交流进步。

西瓜书学习(二)—决策树(下)_第17张图片


你可能感兴趣的:(机器学习,神经网络与机器学习)