如何用决策树模型做数据分析?

什么是决策树?

决策树模型本质是一颗由多个判断节点组成的树。在树的每个节点做参数判断,进而在树的最末枝(叶结点)能够对所关心变量的取值作出最佳判断。通常,一棵决策树包含一个根结点,若干内部节点和若干叶结点,叶结点对应决策分类结果。分支做判断,叶子下结论

我们看一个简单的决策树的模型,通过动物的一些特点来判断它是否是鱼类,在决策树模型中,我们来看每一个节点是如何做判断的。我们将所有要研究的动物作为树最上端的起点,对它进行第一个判断,是否能脱离水生存?如果判断为是的话,它不是鱼类。如果为否的话,我们还要再进行下一个判断,是否有脚蹼?如果是的话,它就是非鱼类,如果否的话就是鱼类。

我们仅仅是通过最多两个层次的判断,在树最末端的叶子结点,可以对我们感兴趣的问题给出了一个相对而言的最佳决策。这个就是决策树的逻辑,非常简单且和人脑理解事物的逻辑很类似。

决策树是一种简单高效并且具有强解释性的模型,广泛应用于数据分析领域。

  • 简单:逻辑相对简单,整个算法没有更复杂的逻辑,只是对节点进行分叉;
  • 高效:模型训练速度较快;
  • 强解释性:模型的判断逻辑可以用语言清晰的表达出来,比如上述决策树案例中的判断,就可以直接用语言表述成:脱离水不能生存的没有脚蹼的动物,我们判断它是鱼;

决策树模型应用于数据分析的场景主要有三种:

  • 监督分层;
  • 驱动力分析:某个因变量指标受多个因素所影响,分析不同因素对因变量驱动力的强弱(驱动力指相关性,不是因果性);
  • 预测:根据模型进行分类的预测;

熵是什么?

熵是描述判断的不确定性,大多数决策树的最终判断,并不是100%准确,决策树只是基于不确定性,作出最优的判断。

比如上述决策树案例,我们判断脱离水依然可以生存的是“非鱼类”。但是有一种特殊的鱼叫做非洲肺鱼,它脱离水后依然可以存活4年之久。虽然不是100%正确,我们在这个叶结点做出非鱼类的判断,是因为所有脱离水依然可以生存的动物里,有非常大部分都不是鱼。虽然这个判断有很大可能性是正确的,但判断依然存在着一些不确定性。

那么不确定性指的是什么呢?如下图,女生占比为50%,具有最大的不确定性;女生占比0%或者100%,则具备最小的不确定性。女生占比30%,具有中等不确定性;如果女性占比为70%的话,我们这个时候猜测是女性,出错可能性是1-70%,即30%,和刚刚的情况相同。也就是说,10个人中女性占比为30%,或是70%,我们虽然给出的判断不同,但是两个判断出错的可能性是一样的,都是30%;

图:在10个人中,判断随机挑选出来一个人,性别是男还是女

如果尝试使用一个统计量E来表示不确定性的话,并且规定E的取值在0和1之间。他和人群中女性的占比应该满足这样一条曲线的关系,当女性占比为0或者100%的时候,进行判断的不确定性最小;E取最小值0当女性占比为50%的时候,判断的不确定性最大,E取最大值1;当女性占比取0到50%,或者50%到100%之间的值的时候,E的取值介于0到1之间。并且取值相对女性占比50%是对称的。

熵即是用来描述以上这种不确定性,它的数学表达式为:

Pi含义:对于事件,有c种可能的结果,每一种可能结果的概率为P1、P2…Pc;

熵的取值在0-1之间;一个判断的不确定性越大,熵越大;

信息增益

信息增益表示经过一次决策判断(分叉)后,人群熵值下降的大小,即母节点的熵与两个子节点熵值和的差值。

如上图,信息增益(IG) = 0.5842 - ( 38% * 0.9507 62 * 0 )=0.22

决策树算法实现步骤

我们继续用上一篇文章《如何用线性回归模型做数据分析》中的共享单车服务满意分数据集来做案例,分析哪一类人群更加偏向于成为公司的推荐者,我们需要分析用户特征,更好的区分出推荐者。

4.1测量节点对应人群的熵

决策树模型的第一步,是测量每个节点对应人群的熵值,最终我们得到可以判断推荐者的决策树。如下图,每个节点中标注两个数字,上面是推荐者比例,下面是用户群占比。初始节点的推荐者比例为0.14,再没任何分叉前,人群占比100%。我们用熵来度量每个节点对应人群的不确定性,推荐者比例趋近0%和100%的人群,熵的值也趋近于0,推荐者比例趋近50%的人群,熵的值则趋近于1。

在这个案例中,我们想知道哪一类人更加偏向成为公司的推荐者,也就是说,我们希望通过决策树,可以尽量地划分出是或者不是推荐者这个事情最为确定的人群。如果这样的人群在树的最终结点、也就是叶子结点可以被很好地划分出来的话,那么叶子结点所对应的人群的特征,就是推荐者或者非推荐者的典型特征

反应在人群的熵值计算,更大的确定性对应于比较小的熵值。我们实际上是希望通过决策树不断地分叉,使得节点的熵值越来越低,用户的label越来越纯。

4.2节点的分叉-信息增益
我们使用信息增益(IG)来判断决策树的分叉方式。

节点分叉规则:在每个节点尝试按照不同特征变量的各种分组方式,选取信息增益最大(熵最小)的方式。

4.3在特定情况节点停止分叉

决策树不会一直不停分叉,决策树停止分叉的条件通常有:

  • 树的深度 — 如规定树的深度不能超过3
  • 叶子结点样本数 — 如叶子结点样本数不能小于10
  • 信息增益 — 如每一个分叉的信息增益不能小于0.2(R中的默认值)

停止分叉:再分叉会增加复杂度但是效果没有提高,叶子越多越复杂,会加重解释复杂性。

决策树在数据分析中的实战流程

我们了解了决策树模型的算法原理,那么它如何应用在日常的数据分析工作中呢?

继续我们刚才的案例,我们想探究分析用户推荐程度的主要影响因素是什么?可以用决策树模型将用户按照推荐者比例高低进行分层。

一百条数据,由公司员工随机采访100名用户产生,采访对象是北京市四个城区(西城区、东城区、海淀区、朝阳区)的居民,组别分为实验组和对照组。

5.1导入数据集

5.2切割自变量和因变量

5.3将分类变量转换为哑变量

Python大多数算法模型无法直接输入分类变量

5.4训练模型

圈出叶子点-最终划分出的人群分层

5.5分析结果

通过人群特征取值的判断,1、我们划分出了推荐者比例有显著区别的人群2、找出了区分推荐者人群的关键特征,例如:海淀区用户、29岁及以上等

5.6决策树扩展

  • 模型建立后,可以将模型用作分类预测;
  • 决策树不只可应用于预测量为分类变量,还可应用于数值型因变量,只需将熵改为连续变量的方差;
  • 特征划分的方法除了信息增益方法外,还可以用增益率(C4.5决策树)、基尼指数(CART决策树);
  • 剪枝是决策树算法中防止过拟合的主要手段,分为预剪枝与后剪枝。预剪枝指在决策树生成过程中,对每个结点在划分前进行估计,若当前结点划分不能使决策树泛化能力提升则停止划分。后剪枝指先从训练集生成一颗决策树,自底向上对非叶结点进行考察,若该结点对应的子树替换为叶结点能使决策树泛化能力提升,则该子树替换为叶结点;
(0)

相关推荐

  • 决策树(decision tree)(一)——构造决策树方法

    说明:这篇博客是看周志华老师的<机器学习>(西瓜书)的笔记总结,虽然自己写了很多总结性文字包括一些算法细节,但博客中仍有部分文字摘自周老师的<机器学习>书,仅供学习交流使用.转 ...

  • 数据分析入门系列教程-决策树原理

    今天我们一起来学习决策树,那么什么是决策树呢,其实在生活中,我们无时无刻不在使用它. 比如现在有朋友给海伦介绍约会对象,她会做如下的判断: 海伦:小伙儿帅嘛? 朋友:很帅 海伦:身高多少? 朋友:17 ...

  • 【决策树】竖屏导图

    每个决策或事件都可能引出两个或多个事件,导致不同的结果,把这种决策分支画成图形像一个树的枝干,成为决策树. 决策树的构成有四个要素: (1)决策结点:(2)方案枝:(3)状态结点:(4)概率枝 目标, ...

  • Python|一览小顶堆

    前言 堆排序是指利用堆这种数据结构所设计的一种排序算法.本节将以小堆顶为例来进行介绍. 问题描述 堆是一种完全二叉树(一棵深度为k的有n个结点的二叉树,对树中的结点按从上至下.从左到右的顺序进行编号, ...

  • (娓娓道来)五子棋AI算法原理,博弈树、极大极小搜索、αβ剪枝

    这是我本科时的一篇文章了-依稀还记得当晚写完大作业,通宵肝出这篇文章的激动,也是我csdn上阅读量最高的文章,献给大家! 我在最近撰写五子棋AI程序设计报告时,翻阅了很多的资料博客,但却发现大佬们的博 ...

  • 数据挖掘:基于R语言的实战 | 第9章:基于决策树的模型组合

      上一章我们学习了决策树模型,这一章我们继续学习几种基于决策树的模型组合,包括袋装决策树.梯度提升决策树.随机森林和贝叶斯可加回归树.本章的最后提供了在R语言中建立以上几种模型的案例.   9.1节 ...

  • 如何用线性回归模型做数据分析?

    一.什么是线性回归 线性回归是利用线性的方法,模拟因变量与一个或多个自变量之间的关系.对于模型而言,自变量是输入值,因变量是模型基于自变量的输出值,适用于x和y满足线性关系的数据类型的应用场景. 线性 ...

  • R数据分析:如何用lavaan包做结构方程模型,实例解析

    今天给大家写一个非常经典的结构方程模型的例子,这个例子是用来研究精神错乱的,模型总共有3个因子,一个社会经济地位SES,另外两个分别是1967年和1971年的精神错乱alien.每个因子两个测量指标, ...

  • 如何用表格做数据分析?用这些方法整理,清晰又直观!

    日常工作学习,少不了接触表格文档.它的作用,除了将数据记录为电子文档.方便传阅外,还能用于数据分析得出结论. 那么如何利用表格进行数据分析呢?今天 WPS君就来通过一个例子教教大家. 01 找到数据源 ...

  • R数据分析:如何用层次聚类分析做“症状群”,实例操练

    好多同学硕士论文开题咨询我想做症状群,有用因子分析的,也有用潜类别分析的,这些方法之前都给大家写过,今天再给大家写一个用无监督的机器学习方法-------层次聚类做症状群的方法.同学们如果对这个方法有 ...

  • 如何通过RFM模型做用户分层,进行精细化运营?

    诸葛君说:说到用户运营,大家或许会说用户画像,用户分层,社群运营,粉丝运营等一系列的名词,在日常工作中你可能也做过用户分层方面的实践,比如运营社群,当用户量只有几百的时候,我建几个群,每天发发消息,做 ...

  • 实操干货 | 如何用企业微信做私域,助力业绩翻倍?

    五谷磨房是一家专注于做天然谷物营养食品的品牌,目前已入驻了全国300多个城市,有3000家以上的直营专柜.但受疫情影响,五谷磨房也面临着客户流失.服务内容分散.线上触达用户低的困境. 为了应对这些难题 ...

  • Python做数据分析有哪些优势?Python基础!

    众所周知,可以用作数据分析的语言有很多,包含Python.R语言等,而且Python被誉为数据分析的一大利器,更是该领域的首选语言,那么用Python做数据分析有哪些优势呢?跟着小编往下看. 第一.P ...

  • MVP方法:如何借助决策树分析做产品决策?

    当今的社会经济活动中,竞争日趋激烈,现代企业的经营方向面临着许多可供选择的方案,如何用最少的资源,赢得最大的利润以及最大限度地降低企业的经营风险,是企业决策者经常面对的决策问题,决策树法能简单明了地帮 ...

  • 如何在表格做数据分析?这个例子教你轻松入门

    日常工作学习,少不了接触表格文档.它的作用,除了将数据记录为电子文档.方便传阅外,还能用于数据分析得出结论. 那么如何利用表格进行数据分析呢?今天 WPS君就来通过一个例子教教大家. 01 找到数据源 ...