第三周分享 决策树

目录

 

一、什么是决策树?

二、决策树有什么特点?

三、根据什么指标,确定决策树?

四、ID3\C4.5

五、C4.5:信息增益率:ID3算法的扩展

六、CART:Gini系数

七、剪枝

八、随机森林

九、袋外错误率(oob error)

十、梯度提升决策树(GBDT)


一、什么是决策树?

决策树(Decision Tree)

 

 

二、决策树有什么特点?

1.互斥且完备

2.对于结束的节点,必然能得到一个最终结论(右子树的这些人都不喜欢打篮球)

3.对于没有结束的节点,只能说可能(左子树的这些人可能喜欢打篮球)

4.主要是做分类任务,也能做回归任务。

根节点|非叶节点(代表测试的条件,对属性测试)|分支(代表测试的结果)|叶节点(代表分类后所获得的分类标记)

 

  1. 训练阶段:从给定的数据中,构造决策树
  2. 分类阶段:按照决策树的分类属性,逐层往下划分

 

三、根据什么指标,确定决策树?

1.(化学中,表示分子的混乱程度,表示当前的东西是纯还是不纯↑---熵↑)

 

选择出来什么样的节点,作为根节点?

 

Q:决策树为了训练出模型

对比最大熵模型

通过增大信息量,可以降低熵。

 

熵代表混乱程度,发生的概率越小,熵越大.

Gini系数代表稳定程度,发生的概率越大,Gini系数越大

 

构造树的基本想法是随着树深度的增加,节点的熵迅速降低。熵降低的速度越快越好,这样我们有望得到一颗高度最矮的决策树

例如:

 

什么都没做,自身固有的熵值:

 

 

我们发现熵值下降了,纯度上升,说明这个分类效果跟以前相比不错。

如何选择根节点,选择信息增益值最大的(即熵最小的)。

如何选择第二个节点?类似于递归(贪心法),选择剩下几个节点,看谁的信息增益值最大。

 

四、ID3\C4.5

1.上面的例子用的是ID3信息增益。

问题:假设按照“ID”分,即只有一层。

 

这个信息增益是满的!那我们用ID当做属性判断条件吗?

实际上,存在一些特征,它属性很多,但每个属性下的样本却很少,导致增益最大。实际上这些特征与结果没有太大关系(例如ID)。

五、C4.5:信息增益率:ID3算法的扩展

计算信息增益,计算自身的熵值。按照信息增益比

(信息增益比 = 信息增益 / 划分前熵)作为选择特征的标准。(当特征的属性很多时,熵大,除以这个大熵,用于矫正)

能够处理连续型的属性。首先将连续型属性离散化,把连续型属性的值分成不同的区间,依据是比较各个分裂点Gian值的大小。

 

Q:选取连续值的哪个分界点?

。。。。。。

缺失数据的考虑:在构建决策树时,可以简单地忽略缺失数据,即在计算增益时,仅考虑具有属性值的记录。

六、CART:Gini系数

CART 与 ID3,C4.5 不同之处在于 CART 生成的树必须是二叉树。也就是说,无论是回归还是分类问题,无论特征是离散的还是连续的,无论属性取值有多个还是两个,内部节点只能根据属性值进行二分。

 

CART 的全称是分类与回归树。从这个名字中就应该知道,CART 既可以用于分类问题,也可以用于回归问题。

 

回归树中,使用平方误差最小化准则来选择特征并进行划分。每一个叶子节点给出的预测值,是划分到该叶子节点的所有样本目标值的均值,这样只是在给定划分的情况下最小化了平方误差。

 

要确定最优化分,还需要遍历所有属性,以及其所有的取值来分别尝试划分并计算在此种划分情况下的最小平方误差,选取最小的作为此次划分的依据。由于回归树生成使用平方误差最小化准则,所以又叫做最小二乘回归树。

 

分类树种,使用 Gini 指数最小化准则来选择特征并进行划分;

 

Gini 指数表示集合的不确定性,或者是不纯度。基尼指数越大,集合不确定性越高,不纯度也越大。这一点和熵类似。另一种理解基尼指数的思路是,基尼指数是为了最小化误分类的概率。

七、剪枝

Q:为什么要剪枝?

决策树生成算法递归的产生决策树,直到不能继续下去为止,这样产生的树往往对训练数据的分类很准确,但对未知测试数据的分类缺没有那么精确,即会出现过拟合现象。过拟合产生的原因在于在学习时过多的考虑如何提高对训练数据的正确分类,从而构建出过于复杂的决策树,解决方法是考虑决策树的复杂度,对已经生成的树进行简化

实现方式:极小化决策树整体的损失函数或代价函数来实现。

预剪枝:在构建决策树的过程时,提前停止。

后剪枝:决策树构建好后,然后才开始剪裁。

决策树学习的损失函数定义为:

 

参数

意义

T

表示这棵子树的叶子节点

Ht(T)

表示第t个叶子的熵

 

Nt​

表示该叶子所含的训练样例的个数

α

惩罚系数

$

T

 

我们不希望树分的太碎,T表示叶子结点的个数。α是惩罚因子,α大,说明后面跟着的影响比较大。α小,说明后面跟着的影响比较小。

我们希望损失函数C最小。剪枝就是当α确定时,选择损失函数最小的模型,即损失函数最小的子树。当α值确定时,子树越大,往往与训练数据的拟合越好,但是模型的复杂度越高;子树越小,模型的复杂度就越低,但是往往与训练数据的拟合不好。损失函数正好表示了对两者的平衡。

损失函数认为对于每个分类终点(叶子节点)的不确定性程度就是分类的损失因子,而叶子节点的个数模型的复杂程度,作为惩罚项,损失函数的第一项是样本的训练误差,第二项是模型的复杂度。如果一棵子树的损失函数值越大,说明这棵子树越差,因此我们希望让每一棵子树的损失函数值尽可能得小,损失函数最小化就是用正则化的极大似然估计进行模型选择的过程。

 

八、随机森林

随机森林(Random Forest 简称RF)

Bootstraping: 有放回采样
Bagging:有放回采样n个样本,建立分类器

集成学习:通过建立几个模型组合来解决单一预测问题。它的工作原理是生成多个分类器/模型,各自独立地学习和作出预测。这些预测最后结合成单预测,因此优于任何一个单分类的做出预测。

 

随机森林每棵树按照如下规则生成:

1)如果训练集大小为N,对于每棵树而言,随机且有放回地从训练集中的抽取N个训练样本(这种采样方式称为bootstrap sample方法),作为该树的训练集;

 从这里我们可以知道:每棵树的训练集都是不同的,而且里面包含重复的训练样本(理解这点很重要)。

为什么要随机抽样训练集?

  如果不进行随机抽样,每棵树的训练集都一样,那么最终训练出的树分类结果也是完全一样的,这样的话完全没有bagging的必要;

为什么要有放回地抽样?

我理解的是这样的:如果不是有放回的抽样,那么每棵树的训练样本都是不同的,都是没有交集的,这样每棵树都是"有偏的",都是绝对"片面的"(当然这样说可能不对),也就是说每棵树训练出来都是有很大的差异的;而随机森林最后分类取决于多棵树(弱分类器)的投票表决,这种表决应该是"求同",因此使用完全不同的训练集来训练每棵树这样对最终分类结果是没有帮助的,这样无异于是"盲人摸象"。

2)如果每个样本的特征维度为M,指定一个常数m<<M,随机地从M个特征中选取m个特征子集,每次树进行分裂时,从这m个特征中选择最优的;

3)每棵树都尽最大程度的生长,并且没有剪枝过程。

  一开始我们提到的随机森林中的“随机”就是指的这里的两个随机性。两个随机性的引入对随机森林的分类性能至关重要。由于它们的引入,使得随机森林不容易陷入过拟合,并且具有很好得抗噪能力(比如:对缺省值不敏感)。

随机森林分类效果(错误率)与两个因素有关:

  1. 森林中任意两棵树的相关性:相关性越大,错误率越大;
  2. 森林中每棵树的分类能力:每棵树的分类能力越强,整个森林的错误率越低。

减小特征选择个数m,树的相关性和分类能力也会相应的降低;增大m,两者也会随之增大。所以关键问题是如何选择最优的m(或者是范围),这也是随机森林唯一的一个参数。

九、袋外错误率(oob error)

  上面我们提到,构建随机森林的关键问题就是如何选择最优的m,要解决这个问题主要依据计算袋外错误率oob error(out-of-bag error)。

  随机森林有一个重要的优点就是,没有必要对它进行交叉验证或者用一个独立的测试集来获得误差的一个无偏估计。它可以在内部进行评估,也就是说在生成的过程中就可以对误差建立一个无偏估计。

  我们知道,在构建每棵树时,我们对训练集使用了不同的bootstrap sample(随机且有放回地抽取)。所以对于每棵树而言(假设对于第k棵树),大约有1/3的训练实例没有参与第k棵树的生成,它们称为第k棵树的oob样本。

  而这样的采样特点就允许我们进行oob估计,它的计算方式如下:

(note:以样本为单位)

1)对每个样本,计算它作为oob样本的树对它的分类情况(约1/3的树);

2)然后以简单多数投票作为该样本的分类结果;

3)最后用误分个数占样本总数的比率作为随机森林的oob误分率。

十、梯度提升决策树(GBDT)

GBDT的核心就在于:每一棵树学的是之前所有树结论和的残差,这个残差就是一个加预测值后能得真实值的累加量。比如A的真实年龄是18岁,但第一棵树的预测年龄是12岁,差了6岁,即残差为6岁。那么在第二棵树里我们把A的年龄设为6岁去学习,如果第二棵树真的能把A分到6岁的叶子节点,那累加两棵树的结论就是A的真实年龄;如果第二棵树的结论是5岁,则A仍然存在1岁的残差,第三棵树里A的年龄就变成1岁,继续学,如果我们的迭代轮数还没有完,可以继续迭代下面,每一轮迭代,拟合的岁数误差都会减小。这就是Gradient Boosting在GBDT中的意义。

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值