【BABY夜谈大数据】决策树

本文涉及的产品
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
简介: 最近阿法狗好火,所以就特地讲下决策树。决策树(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时,就没有必要再往下构造决策树了,此时叶子节点都是纯的--这是理想情况。最坏的情况下,决策树的高度为属性(决策变量)的个数,叶子节点不纯(这意味着我们要以一定的概率来作出决策)。

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps&nbsp;
相关文章
|
6月前
|
供应链
代采系统如何利用大数据分析优化采购决策?
代采系统可以利用大数据分析来优化采购决策
|
6月前
|
数据采集 监控 算法
利用大数据和API优化电商决策:商品性能分析实践
在数据驱动的电子商务时代,大数据分析已成为企业提升运营效率、增强市场竞争力的关键工具。通过精确收集和分析商品性能数据,企业能够洞察市场趋势,实现库存优化,提升顾客满意度,并显著增加销售额。本文将探讨如何通过API收集商品数据,并将这些数据转化为对电商平台有价值的洞察。
|
6月前
|
存储 数据采集 大数据
大数据处理与分析技术:驱动智能决策的引擎
本文介绍了大数据处理与分析技术在现代社会中的重要性和应用。从数据采集、存储、处理到分析决策,大数据技术为我们提供了深入洞察和智能决策的能力,推动着各行各业的创新和发展。
274 0
|
1月前
|
存储 数据采集 监控
大数据技术:开启智能决策与创新服务的新纪元
【10月更文挑战第5天】大数据技术:开启智能决策与创新服务的新纪元
|
14天前
|
消息中间件 分布式计算 大数据
数据为王:大数据处理与分析技术在企业决策中的力量
【10月更文挑战第29天】在信息爆炸的时代,大数据处理与分析技术为企业提供了前所未有的洞察力和决策支持。本文探讨了大数据技术在企业决策中的重要性和实际应用,包括数据的力量、实时分析、数据驱动的决策以及数据安全与隐私保护。通过这些技术,企业能够从海量数据中提取有价值的信息,预测市场趋势,优化业务流程,从而在竞争中占据优势。
47 2
|
2月前
|
存储 大数据 索引
解锁Python隐藏技能:构建高效后缀树Suffix Tree,处理大数据游刃有余!
通过构建高效的后缀树,Python程序在处理大规模字符串数据时能够游刃有余,显著提升性能和效率。无论是学术研究还是工业应用,Suffix Tree都是不可或缺的强大工具。
48 6
|
3月前
|
存储 大数据 数据处理
解锁时间旅行新姿势!EMR DeltaLake 如何让你在大数据海洋中畅游历史,重塑决策瞬间?
【8月更文挑战第26天】DeltaLake是由DataBricks公司开源的大数据存储框架,专为构建高效的湖仓一体架构设计。其特色功能Time-Travel查询允许用户访问数据的历史版本,极大增强了数据处理的灵活性与安全性。通过独特的文件结构和日志管理机制,DeltaLake实现了数据版本控制。用户可通过指定时间戳或版本号查询历史数据。
43 2
|
3月前
|
Java Spring 开发者
解锁 Spring Boot 自动化配置的黑科技:带你走进一键配置的高效开发新时代,再也不怕繁琐设置!
【8月更文挑战第31天】Spring Boot 的自动化配置机制极大简化了开发流程,使开发者能专注业务逻辑。通过 `@SpringBootApplication` 注解组合,特别是 `@EnableAutoConfiguration`,Spring Boot 可自动激活所需配置。例如,添加 JPA 依赖后,只需在 `application.properties` 配置数据库信息,即可自动完成 JPA 和数据源设置。这一机制基于多种条件注解(如 `@ConditionalOnClass`)实现智能配置。深入理解该机制有助于提升开发效率并更好地解决问题。
72 0
|
4月前
|
存储 算法 数据可视化
云上大数据分析平台:解锁数据价值,驱动智能决策新篇章
实时性与流式处理:随着实时数据分析需求的增加,云上大数据分析平台将更加注重实时性和流式处理能力的建设。通过优化计算引擎和存储架构等技术手段,平台将能够实现对数据流的高效处理和分析,为企业提供实时决策支持。通过优化计算引擎和存储架构等技术手段,平台将能够实现对数据流的高效处理和分析,为企业提供实时决策支持。
675 8
|
4月前
|
存储 监控 数据挖掘
云上大数据分析平台:赋能企业决策,挖掘数据金矿
5.3 场景化 针对不同行业和领域的需求特点,云上大数据分析平台将推出更多场景化的解决方案。这些解决方案将结合行业特点和业务场景进行
131 7