决策树+熵+信息增益+one-hot+回归树+随机森林+XGBoost

决策树模型

假设你正在运营一个猫猫流浪站,手头有一些猫猫的特征,你想训练一个猫猫分类器来判断动物是不是猫猫,你有耳朵形状、面部形状、是否有胡须三种特征来帮助你判别

现在有5只猫,5只狗,输入特征X是前三列,目标输出Y是最后一列,1代表是猫

同时,这些特征仅有几个离散值,如

耳朵形状只有尖的和松软的,脸型只有圆和不圆,胡须只有存在和不存在

现在只是一个最简单的二分类任务,因为标签也是1或0

目前三个特征都只有两个可能的值,稍后我们在讨论两个以上及连续的特征值

树中的椭圆节点我们称之为决策节点,他们查看特征然后根据特征值来决定下一步的方向

矩形框称之为叶节点

构建决策树模型

1、选择合适的分类特征

 决策树将选择要拆分的特征以尝试最大化纯度

纯度即使得分类之后能尽可能的接近所分类的子集,本例即为所有猫和狗的子集

拿高中分班来讲,有普通班也有宏志班,高纯度就是宏志班尽可能的筛选尖子生,剔除混子

为了帮助理解,老师以猫猫DNA特征举例,DNA完美分类出猫和其他,所有该特征具有高纯度

  

如果换成耳朵特征来分类,这会导致左边五个中有一个狗,右边五个只有一个猫

2、选择合适的停止时机

我们可以从以下几个方面来考虑停止时机

1、当我们百分百确定我们的分类是正确时,即可停止,例如我们已经确定是狗或者是猫

2、为防止树的深度过大,在适当深度时停止进一步的分裂以控制树的深度,最大深度可以是自己给出的参数,确定最大深度后将不会拆分低于此级别的任何节点

限制树深有以下两点考虑

第一是确保决策树不会变的笨重和太大

第二是保持树小,使得不容易过拟合

3、设置一个阈值,低于阈值则不再进行分裂

衡量纯度——熵

对于猫和狗我们很好区分,但如果是要区分的类别介于两者之间呢

我们先引入熵的定义,它是衡量一组数据不纯程度的指标

个人理解熵就是样本的混乱程度,熵越大,样本越混乱,纯度越低

 p1代表样本中猫猫的百分比,左侧的曲线图x轴为p1,y轴为该p1值下熵的大小

可以看到的是,随着p1的改变,熵的值也在不断改变

熵的值越大,则代表该样本中猫和狗越不容易区分,当熵为0时,就是最简单的非猫即狗

熵的公式如下图所示,该公式的效果图为左侧

信息增益

在构建决策树时,我们决定在节点上拆分哪个特征的方式将基于哪种特征选择最能减少熵

我们将减少熵或者最大化纯度称之为信息增益

按照三个特征来看的话貌似熵都还挺高的

如果有一个节点中有很多示例且具有高熵,这看起来比一个节点只有几个示例具有高熵更糟糕

我们每个特征都会产生左右两个分支的熵,为了方便我们更倾向于用一个熵来表示

所以我们这里使用到了加权平均

不同特征产生的左右分支中的数量不同,基于此进行加权平均选择熵最小的那个

不过我们最终选择分裂的公式要更进一步

要用根节点的熵减去加权平均后的熵,可以理解为信息增益,差值越大说明纯度提升越大

它衡量的是由于分裂而导致的树中熵的减少

经过计算发现耳朵形状特征是最合适的

计算熵的好处还有一点是当熵减小的幅度很小时我们可以考虑停止分裂

下面我们得出计算信息增益的一般公式

根据结果选增益最大的那个即可,这有助于决策树左右分支上获得的数据子集的纯度

搭建决策树步骤

实际上就是将前面的汇总在一起,不断的迭代直到找到叶节点

独热编码 one-hot

以上例子只考虑了俩个特征,但实际情况往往是会有两个及以上的特征

假设猫耳有三种形状,独热编码可以看成矩阵,然后再对应地方打1,其他地方标0

或者说我们将一个特征构建成三个新特征,每一个新特征还是标1或0

one-hot不仅适用于决策树,还可以对分类特征进行编码使其作为输入提供给神经网络

回归树

现在我们修改一下使用场景,我们想根据之前的特征来预测猫的体重

还是按照树型不断分下去直到叶节点,然后预测体重值取该叶节点处的平均值

同样类似于决策树的拆分,我们应该选择拆分哪个功能?

在建设回归树时,我们不是试图减少熵(这是对分类问题的杂质度量)而是尝试减少每个数据子集的权重方差,其他的类似于信息增益的步骤,如图所示

根节点的方差为20.51,我们类似于信息增益要寻找最大方差减少的特征

比较来看,第一个特征减少的方差最大,所以我们第一个分支选择耳朵形状特征

多个决策树的使用

树集成原理

使用单个决策树的缺点之一是该决策树可能对数据中的微小变化高度敏感

为了使结果更健壮或者不那么敏感,解决方案之一是构建很多决策树,称为树集成

假设我们更换掉其中的黄色猫猫,那么我们信息增益的最佳选择会变为胡须特征

我们因此会得到两种截然不同的决策树,由此可以看出

我们仅仅是改动了一只猫咪就能产生一颗完全不同的树,使用该算法健壮性不高

这里我们改为每一个特征都构建一个决策树,不同的是按顺序来

从根节点到叶节点,每一个特征都会产生一次结果,最后投票决定结果

比如现在预测一个动物是不是猫,三个特征形成2:1,预测结果为猫

树集合的原理是通过大量决策树来让他们投票,以此来淡化单个树对整体的影响

有放回抽样

这个应该都会,老师这里拿了四个不同颜色的牌子进行了一个小教学

有放回抽样应用于构建树的集合方式如下

我们使用有放回抽样来构建多个随机训练集,这些训练集与我们的原始训练集略有不同

猫和狗还是那几个,但每一次我们都能产生不一样的训练集

随机森林

基于有放回抽样后我们产生了多个训练集

每个训练集都能产生一个决策树,这些决策树不会完全相同

最后让这些决策树进行投票来选出最终结果

要注意的是我们产生训练集的个数不会影响性能,但有边际效应,降低计算速度但不会明显提升

XGBoost

有点类似于错题本,我们复习时把精力放在重新回顾所有内容,不如我们把精力多放在看错题本

同样的,我们可以对之前表现不好的类进行刻意的训练

第一次构建决策树时和平常一样,但之后再构建决策树时会根据之前的结果,对错判类别提高概率

提升过程执行此操作总共B次,每次迭代中,都可以不断的针对表现不好的类进行提升

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值