【BABY夜谈大数据】决策树

简介: 最近阿法狗好火,所以就特地讲下决策树。决策树(Decision Tree)是一种简单但是广泛使用的分类器。通过训练数据构建决策树,可以高效的对未知的数据进行分类。学会可以帮你选择女朋友!

前言

最近好忙好忙的说,连更新都慢了一周呢,收到豆瓣的催稿好就赶紧开始码字了,哭。

最近阿法狗好火,所以就特地讲下决策树。如果你喜欢本书或者想要支持我,可以直接在豆瓣购买哦!https://read.douban.com/column/3346397/


决策树就像是真的一棵树,它从一个主干逐渐分支,构成一个完整的决策树。

决策树(Decision Tree)是一种简单但是广泛使用的分类器。通过训练数据构建决策树,可以高效的对未知的数据进行分类。决策数有两大优点:

  • 决策树模型可以读性好,具有描述性,有助于人工分析。
  • 效率高,决策树只需要一次构建,反复使用,每一次预测的最大计算次数不超过决策树的深度。

机器学习中,决策树是一个预测模型;他代表的是对象属性与对象值之间的一种映射关系。树中每个节点表示某个对象,而每个分叉路径则代表的某个可能的属性值,而每个叶结点则对应从根节点到该叶节点所经历的路径所表示的对象的值。决策树仅有单一输出,若欲有复数输出,可以建立独立的决策树以处理不同输出。数据挖掘中决策树是一种经常要用到的技术,可以用于分析数据,同样也可以用来作预测。

比如我现在我同事在我旁边,我问他“如果你找个女朋友喜欢什么样的?”

他回答“长得好看,身高不要太矮,170左右、开朗、善良、孝顺、脾气好”。

同事的回答可以整理成上述的决策树图,简单来说决策树就是根据多个条件将某个事物归于某个类别。

只要遇到个女生,想要直到是否是同事喜欢的只需要代入已经构建好的决策树模型中便可以轻松得知到底是喜欢还是不喜欢。

决策树可以按照如下步骤构建:

  • 设立开始节点,所有的记录从这里出发。
  • 决定哪些条件合适作为节点。
  • 将节点继续分为两个子节点。
  • 对子节点重复上面三个步骤。

决策树的变量可以有两种:

  • 数字型:变量类型是整数或浮点数。用“>=”,“>”,“<”或“<=”作为分割条件(排序后,利用已有的分割情况,可以优化分割算法的时间复杂度)。
  • 名称型:类似编程语言中的枚举类型,变量只能重有限的选项中选取,比如前面例子中的“婚姻情况”,只能是“单身”,“已婚”或“离婚”。使用“=”来分割。

虽然在选择节点的时候,很多人喜欢用数学的角度去分析哪些条件更适合,在对待一些涉及到人、情感等问题上,往往是人的主观意识更为重要。所以这里个人建议在涉及到人的主观意识类的问题不妨从纯粹的主观角度出发去思考。

在大数据领域有时候使用决策树并不能有很好的效果,因为决策树的模型是在得到数据之前就建立好的,如果数据繁多的话会浪费很多数据,决策树也可以看作是一种贪心算法,如果某一个节点有失误那么之后的决策就会出错。

注:贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解。

不妨在初期建立的决策树的决策条件放宽松点,经过长期大量的数据训练、完善后再将决策树的模型作为分析的核心。

当然也有人提倡说用随机森林,随机森林是一个包含多个决策树的分类器, 并且其输出的类别是由个别树输出的类别的众数(出现最多的结果)而定。

在利用决策树分类的时候,如果样本数据缺失一些变量,但决策树的决策过程中并未用到这些变量,那么就可以将这些样本作为完整的样本。当决策用到了缺失的变量,不妨试试随机森林或者在当前节点做多数投票来预测这个缺失的变量是什么。

或者可以参照其它完整的样本的结果来进行预测。比如我们最开始的举的例子,如果不知道B喜欢男的女的,但是知道其它条件,那么可以用其它条件与其它完整的样本及其结果进行比较,预测下B喜欢男的女的。

可能讲到这里会有人问说什么样的特征适合作为变量呢?

一般是通过卡方检验、信息增益、相关系数等等算法来对不同的样本进行观测,看看哪些特征更适合作为变量。

个人建议是这些特征一般都有决定性作用并且不会出现歧义的情况就不妨拿来做变量试试。

讲到决策树就会讲到熵,玻尔兹曼认为,任何粒子的常态都是随机运动,也就是"无序运动",如果让粒子呈现"有序化",必须耗费能量。所以,能量可以被看作"有序化"的一种度量。热力学第二定律实际上是说,当一种形式的"有序化"转化为另一种形式的"有序化",必然伴随产生某种"无序化"。一旦能量以"无序化"的形式存在,就无法再利用了,除非从外界输入新的能量,让无序状态重新变成有序状态。

"熵"就是"无序化"的度量。考虑到"无序化"代表着混乱(实质是随机运动)。

熵是无序性(或不确定性)的度量指标。假如事件A的全概率划分是(A1,A2,...,An),每部分发生的概率是(p1,p2,...,pn),那信息熵定义为:

熵代表一个系统的杂乱程度,熵越大,系统越杂乱。对一个数据集中数据的分类就是使得该数据集熵减小的过程。

决策树算法就是一个划分数据集的过程。划分数据集的原则就是:将无序的数据变得更加有序。

在决策树中最出名的莫过于ID3,ID3算法(Iterative Dichotomiser 3 迭代二叉树3代)是一个由Ross Quinlan发明的用于决策树的算法。

这个算法是建立在奥卡姆剃刀的基础上:越是小型的决策树越优于大的决策树。

通过ID3可以选择到最适合的节点,我们接下来来做个简单的推导。(这里就使用我在网上找到的一个例子,感觉这个例子不错,我才不是懒得写表格呢(~ o ~)~zZ ,例子来源zhangchaoyang)

我们现在从别的地方扒来了一个表格,表格中统计了14天的气象数据(指标包括outlook,temperature,humidity,windy),并已知这些天气是否打球(play)。如果给出新一天的气象指标数据:sunny,cool,high,TRUE,请亲爱的们判断一下会不会去打球。

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

在没有给定任何天气信息时,根据历史数据,我们只知道新的一天打球的概率是9/14,不打的概率是5/14。此时的熵为:

属性有4个:outlook,temperature,humidity,windy。我们首先要决定哪个属性作树的根节点。

对每项指标分别统计:在不同的取值下打球和不打球的次数。

下面我们计算当已知变量outlook的值时,信息熵为多少。

outlook=sunny时,2/5的概率打球,3/5的概率不打球。entropy=0.971

outlook=overcast时,entropy=0

outlook=rainy时,entropy=0.971

而根据历史统计数据,outlook取值为sunny、overcast、rainy的概率分别是5/14、4/14、5/14,所以当已知变量outlook的值时,信息熵为:5/14 × 0.971 + 4/14 × 0 + 5/14 × 0.971 = 0.693

这样的话系统熵就从0.940下降到了0.693,信息增溢gain(outlook)为0.940-0.693=0.247

同样可以计算出gain(temperature)=0.029,gain(humidity)=0.152,gain(windy)=0.048。

gain(outlook)最大(即outlook在第一步使系统的信息熵下降得最快),所以决策树的根节点就取outlook。

接下来要确定N1取temperature、humidity还是windy?在已知outlook=sunny的情况,根据历史数据,我们作出类似table 2的一张表,分别计算gain(temperature)、gain(humidity)和gain(windy),选最大者为N1。

依此类推,构造决策树。当系统的信息熵降为0时,就没有必要再往下构造决策树了,此时叶子节点都是纯的--这是理想情况。最坏的情况下,决策树的高度为属性(决策变量)的个数,叶子节点不纯(这意味着我们要以一定的概率来作出决策)。

相关实践学习
简单用户画像分析
本场景主要介绍基于海量日志数据进行简单用户画像分析为背景,如何通过使用DataWorks完成数据采集 、加工数据、配置数据质量监控和数据可视化展现等任务。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps&nbsp;
目录
相关文章
|
2月前
|
数据采集 监控 算法
利用大数据和API优化电商决策:商品性能分析实践
在数据驱动的电子商务时代,大数据分析已成为企业提升运营效率、增强市场竞争力的关键工具。通过精确收集和分析商品性能数据,企业能够洞察市场趋势,实现库存优化,提升顾客满意度,并显著增加销售额。本文将探讨如何通过API收集商品数据,并将这些数据转化为对电商平台有价值的洞察。
|
7月前
|
机器学习/深度学习 数据采集 边缘计算
大数据和数据分析:决策制定的新方式
大数据和数据分析:决策制定的新方式
|
8月前
|
机器学习/深度学习 分布式计算 搜索推荐
大数据在现代化业务决策中的作用
大数据在现代化业务决策中扮演着不可或缺的角色。通过数据驱动的决策、商业洞见的提取、个性化营销和风险管理等方式,大数据帮助企业更加精准、高效地运营。然而,同时也需要解决数据隐私、质量和人才等挑战。随着技术的不断发展,大数据将继续为企业创造更多的商业价值。
98 1
大数据在现代化业务决策中的作用
|
数据采集 机器学习/深度学习 算法
大数据分析案例-基于决策树算法构建员工离职预测模型
大数据分析案例-基于决策树算法构建员工离职预测模型
2864 0
大数据分析案例-基于决策树算法构建员工离职预测模型
|
存储 分布式计算 运维
阿里云实时大数据解决方案,助力企业实时分析与决策
简介: 2020年双11,云原生实时数仓首次在阿里巴巴双11核心数据场景落地,实现商业全链路实时化,毫秒级海量数据处理能力。搜索推荐业务数据开发效率提升4倍,菜鸟物流包裹数据链路从小时级优化到3分钟,考拉分钟及小时业务1分钟内完成,大数据的实时分析与决策在瞬息万变的市场竞争中成为了标品!今天,我们将向大家分享阿里云实时大数据解决方案,助力企业实时决策。
3784 1
阿里云实时大数据解决方案,助力企业实时分析与决策
|
存储 分布式计算 运维
阿里云实时大数据解决方案,助力企业实时分析与决策
2020年双11,云原生实时数仓首次在阿里巴巴双11核心数据场景落地,实现商业全链路实时化,毫秒级海量数据处理能力。搜索推荐业务数据开发效率提升4倍,菜鸟物流包裹数据链路从小时级优化到3分钟,考拉分钟及小时业务1分钟内完成,大数据的实时分析与决策在瞬息万变的市场竞争中成为了标品!今天,我们将向大家分享阿里云实时大数据解决方案,助力企业实时决策。
971 0
阿里云实时大数据解决方案,助力企业实时分析与决策
|
人工智能 边缘计算 Cloud Native
阿里云新品发布会周刊第82期 丨 重磅!大数据实时分析与决策&当AI遇上展会
12月23日阿里云新品发布会带您了解阿里云实时数仓如何助力企业实时决策;12月25日更有新栏目“云计算情报局”登场展现-当AI遇上展会。更多精彩内容敬请关注阿里云新品发布会!
760 0
阿里云新品发布会周刊第82期 丨 重磅!大数据实时分析与决策&当AI遇上展会
|
数据挖掘 算法 数据采集
带你读《增强型分析:AI驱动的数据分析、 业务决策与案例实践》之二:大数据探索及预处理
本书“深入浅出的原理介绍 + 实际使用的案例”的内容安排能够使得数据分析建模人员从算法原理、数据挖掘知识结构、业务应用方法等方面得到提升,帮助数据分析建模人员开阔眼界、优化知识结构、提升实践技能。
|
大数据 BI
白皮书首发:173位大数据决策者眼中的数据中台是长这样的
数字化浪潮席卷全球,颠覆性创新正在加速,企业面临着前所未有的挑战和机遇,必须不断加速数字化转型才能生存和领先。在数字化转型过程中,企业需要更为深入地理解客户和市场,以数据洞察来驱动企业的行动,从而更好地获取、服务以及留存客户,实现业务增长。
|
大数据 CDN
功能发布 | 大数据驱动业务决策,CDN实时日志重磅上线
阿里云CDN上线了实时日志功能,打通日志服务(SLS)的能力,将CDN采集的实时日志,在小于60秒的时间内投递至日志服务,进行实时、交互式分析和报表呈现。通过CDN日志的实时分析,可以快速的发现和定位问题,进而对日志数据的挖掘,提高数据的决策能力,将业务推向一个新的高度。
2923 0

热门文章

最新文章