实例讲解决策树分类器

阅读大概需要5分钟

作者 两棵橘树

编辑 zenRRan 有修改

链接

https://www.jianshu.com/p/6eecdeee5012

导读

决策树是一种简单高效并且具有强解释性的模型,广泛应用于数据分析领域。其本质是一颗由多个判断节点组成的树,如:

在使用模型进行预测时,根据输入参数依次在各个判断节点进行判断游走,最后到叶子节点即为预测结果。

如何构造决策树

决策树算法的核心是通过对数据的学习,选定判断节点,构造一颗合适的决策树。

假设我们从用户行为日志中整理出如下数据:

原始数据

我们的目的是要利用这些数据,训练决策树模型,模型训练好后,我们就可以通过任意给定的用户来源网站、位置、是否阅读过 FAQ、浏览网页数信息,预测该用户是否会进行付费以及付费类型,供运营使用。

选择合适的拆分条件

我们知道决策树是由一个个判断节点组成,每经过一个判断节点数据就会被拆分一次。上面数据中有4种属性,每种属性下面有多种值,我们可以按位置是否来自「浙江」进行拆分,拆分结果为:

按是否来自「浙江」拆分结果

我们「拍脑袋」进行了一次拆分,到底这么拆分合不合适,是不是最佳,我们需要量化指标来进行评价,在决策树算法中,我们通过基尼不纯度或者来对一个集合进行的有序程度进行量化,然后引入信息增益概念对一次拆分进行量化评价。下面依次介绍。

基尼不纯度

基尼不纯度是指将来自集合中的某种结果随机应用于集合中某一数据项的预期误差率。如果集合中的每一个数据项都属于同一分类,那么推测的结果总会是正确的,因此误差率是 0;如果有 4 种可能的结果均匀分布在集合内,出错可能性是75%,基尼不纯度为 0.75。该值越高,说明拆分的越不理想,如果该值为 0,说明完美拆分。java 实现代码如下:


是信息论中的概念,用来表示集合的无序程度,熵越大表示集合越混乱,反之则表示集合越有序。熵的计算公式为:

java 代码实现如下:

基尼不纯度与熵对比

两者主要区别在于,熵到达峰值的过程相对慢一些。因此熵对混乱集合的「判罚」往往更重一些。通常情况下,熵的使用更加频繁。

信息增益

假设集合 U,一次拆分后变为了两个集合 u1 和 u2 ,则有:

E 可以是基尼不纯度或熵。
使用 Pu1 和 Pu2 是为了得到拆分后两个集合基尼不纯度或熵的加权平均,其中 :

信息增益越大,说明整个集合从无序到有序的速度越快,本次拆分越有效。

构造决策树

我们已经可以通过信息增益量化一次拆分的结果好坏,下一步就是构造决策树,主要步骤如下:

  1. 遍历每个决策条件(如:位置、来源网站),对结果集进行拆分

  2. 计算该决策条件下,所有可能的拆分情况的信息增益,信息增益最大的拆分为本次最优拆分

  3. 递归执行1、2两步,直至信息增益<=0

执行完上述步骤后,就构造出了一颗决策树,如图:

决策树

决策树剪枝

为什么要剪枝

训练出得决策树存在过度拟合现象——决策树过于针对训练的数据,专门针对训练集创建出来的分支,其熵值可能会比真实情况有所降低。

如何剪枝

人工设置一个信息增益的阀值,自下而上遍历决策树,将信息增益低于该阀值的拆分进行合并

处理缺失数据

决策树模型还有一个很大的优势,就是可以容忍缺失数据。如果决策树中某个条件缺失,可以按一定的权重分配继续往以后的分支走,最终的结果可能有多个,每个结果又一定的概率,即:
最终结果=某个分支的结果 x 该分支的权重(该分支下的结果数/总结果数)

处理数值型数据

决策树主要解决分类问题(结果是离散数据),如果结果是数字,不会考虑这样的事实:有些数字相差很近,有些数字相差很远。为了解决这个问题,可以用方差来代替熵或基尼不纯度。

结语

本文简单介绍了决策树算法,该算法虽然简单,但是在很多场景能取得非常好的效果,值得读者一试。另外,从决策树发展出了更为高级复杂的随机森林,如果有兴趣读者可以去深入了解。

每日托福单词

transcend  v. 超越

simultaneous  adj. 同时发生的

incorporate  v. 合并,吸收,包含

probe  v. 调查,探究

molecular  adj. 分子的

推荐阅读:

精彩知识回顾

详解机器学习之the Learning Problem

详解依存树的来龙去脉及用法

TreeLSTM Sentiment Classification

一分钟搞懂的算法之BPE算法

福利来了!本人近300G的学习资料愿与大家分享

【干货】神经网络SRU

基于attention的seq2seq机器翻译实践详解

【干货】基于注意力机制的seq2seq网络

【干货】GRU神经网络


欢迎关注深度学习自然语言处理公众号,我会每天更新自己在科研学习路上的一点一滴!再小的人也有自己的品牌!期待和你一起进步!

长按识别二维码

点个赞呗

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值