关于决策树,你一定要知道的知识点!
在现实生活中,我们每天都会面对各种抉择,例如根据商品的特征和价格决定是否购买。
不同于逻辑回归把所有因素加权求和然后通过Sigmoid函数转换成概率进行决策,我们会依次判断各个特征是否满足预设条件,得到最终的决策结果。例如,在购物时,我们会依次判断价格、品牌、口碑等是否满足要求,从而决定是否购买。
决策的流程,如图1所示。
图1
可以看到,决策过程组成了一棵树,这棵树就称为决策树。
在决策树中,非叶子节点选择一个特征进行决策,这个特征称为决策点,叶子节点则表示最终的决策结果。
在上例中,我们只是根据经验主观建立了一棵决策树,这棵决策树在数据量和特征维度较小且逻辑简单时是可以使用的。
然而,在数据量和特征维度较大时,仅凭主观观察建立决策树显然是不可行的。在实际应用中,训练集中的样本往往有上万个,样本的特征通常有上百维,该怎么处理呢?
在实际建立决策树的过程中,每次选择特征都有一套科学的方法。下面就详细讲解如何科学地建立决策树。
不难发现,建立决策树的关键在于选取决策点时使用的判断条件是否合理。每个决策点都要有区分类别的能力。例如,在电商场景中,将发货的快递公司作为决策点的选取条件就是一个很差的选择,其原因在于快递公司和购买行为没有必然联系,而将商品价格作为决策点的选取条件就是合理的,毕竟大部分消费者对商品价格比较敏感。
一个好的决策点可以把所有数据(例如商品)分为两部分(左子树和右子树),各部分数据所对应的类别应尽可能相同(例如购买或不购买),即两棵子树中的数据类别应尽可能“纯”(这种决策点有较高的区分度)。
和逻辑回归类似,用已知数据(例如用户的购买记录、商品信息)求解决策树的形状和每个决策点使用的划分条件,就是决策树的训练过程。
首先看一下如何量化数据的纯度。假设在一组数据中有P和N两类样本,它们的数量分别为 个和 个。P类样本出现的概率为
类
N类样本出现的概率为
类
我们可以直观地发现:当数据只有一个类别( 类 或 类 )时,数据最纯;当两类数据“平分秋色”( 类类
)时,数据最混乱。
可以使用基尼(Gini)系数来量化数据的混乱程度。基尼系数的计算公式如下。
类类
可见,基尼系数越小,数据就越纯(类, )。当数据最混乱时, 类类 ,也就是说,基尼系数的最大值为0.5。
基尼系数和概率 类 的关系,如图2所示。
图2
决策树有一些常用的构建方法,在这里我们详细讲解一下最为流行的CART树。
CART树是一棵二叉树,它不仅能完成分类任务,还能完成数值预测类的回归任务。
下面先介绍分类树,再介绍回归树。在构建CART树时,可以使用基尼系数来度量决策条件的合理性。
假设有 个训练样本,特征一共有 维,即 。和逻辑回归中特征 是连续值不同,在这里, 既可以是连续值(例如价格、好评数、销量等,
),也可以从集合中“多选一”(例如学历, 专科本科硕士博士其他
)。
决策树的构建(训练)过程是一个不断生成决策点的过程,每次生成的决策点都要尽可能把训练样本中的两类数据分开。
例如, 为价格,划分条件为 ,将训练数据分成两类(如果某个样本在划分条件上有特征缺失,就随机分配该样本),如图3所示。
图3
中有 个样本,它们对应于不同的类别,基尼系数为 。Data1中的数据越纯(类别越单一),Gini1就越小。同理, 中有 个样本,基尼系数为
。
此次划分的基尼系数为
为 和 加权求和(权重为两堆数据的数量占比)的结果,用于度量划分条件 的合理性。 越小,说明度量划分越合理。
若 专科本科硕士博士其他 ,则可将“ 本科 ”作为划分条件,将数据划分为“ 本科
”“ 本科
”两部分,并计算基尼系数 本科
。
遍历所有维度( )中可能的划分条件,对每种划分方法均可计算相应的基尼系数,例如
、
、
、 本科
、 博士
、
。以最小基尼系数所对应的特征和划分条件为决策点,数据将被划分为两堆。
但是,决策树是不停生长的,仅划分一次是不够的,需要再使用同样的方法对每个子堆(Data 1、Data 2)进行划分,最终生成CART树,步骤如下。
算法的输入为训练集 、基尼系数的阈值、样本数量的阈值,输出为决策树
。算法从根节点开始,用训练集递归建立CART树。
1. 当前节点的数据集为 。如果样本数量小于阈值、基尼系数小于阈值或没有特征,则返回决策子树,当前节点停止递归。
2. 在当前节点的数据上计算各个特征的各个划分条件对划分后的数据的基尼系数。当维度过高且每维所对应的可取值比较多时(例如,价格的值为
1~10000的整数,将有10000种划分方式;如果为浮点数,划分方式更多),可以随机选取一些特征和划分条件,不再强制要求全部遍历。
3. 在计算出来的各个特征的各个特征值对数据集 的基尼系数中,选择基尼系数最小的特征 和对应的划分条件,例如“
”或“
本科 ”。通过划分条件把数据集划分成 和 两部分,同时分别建立当前节点的左节点和右节点,左节点的数据集为 ,右节点的数据集为 。
4. 对 和 递归调用以上步骤,生成决策树。
这就是决策树的训练过程。
在第1步中,判断样本数量和基尼系数是为了控制生成的决策树的深度,避免不停地递归。不停地递归会导致划分条件过细,从而造成过拟合。
决策树建立后,每个叶子节点里都有一堆数据。可以将这堆数据的类别比例作为叶子节点的输出。
决策树在复杂度上和其他模型有所不同。例如,在逻辑回归中,当特征维度不变时,模型的复杂度就确定了。但是,在决策树中,模型会根据训练数据不断分裂,决策树越深,模型就越复杂。
可以看出,数据决定了决策树的复杂度,且当数据本身线性不可分时,决策树会非常深,模型会非常复杂。
所以,在决策树中,需要设置终止条件,以防模型被数据带到极端复杂的情况中。在决策树中,终止条件的严格程度相当于逻辑回归中正则项的强度。
训练完成后,我们可以得到一棵决策树,如图4所示。
图4
在使用决策树时,用数据 在决策树上找到对应的叶子节点作为分类结果。例如,当 时,对应的分类结果为 类,类 。决策树对输入 的预测结果常写为 , 表示决策树的决策过程。
决策树理解起来比较简单,其本质就是以基尼系数来量化划分条件的分类效果,自动探寻最佳划分条件。
下面我们把决策树和逻辑回归进行对比。为了方便对比,假设决策树的特征为2维且均为连续特征。决策树的分类效果图可以理解为如图5所示的形式。
图5
可见,决策树分类的几何意义和逻辑回归一样,都是在平面上画直线。相比逻辑回归的分类线是一条直线,决策树的分类线是平面上与坐标轴平行的多条直线(一个判断条件对应于一条直线,这些直线共同组成了分类线)。多条直线可以组合成非线性的形式,以处理线性不可分的情况,如图6所示。
图6
虽然决策树在训练时需要遍历所有可能的类别划分方法,速度比较慢,但是在预测阶段,决策树只需进行一些逻辑判断和比较,速度非常快,故适合在对时间要求较高的场景中使用。
决策树不仅可以用在分类中,还可以用在回归中(预测连续的值而非类别概率)。用在分类中的决策树称为分类树,用在回归的中决策树称为回归树。在回归任务中,学习目标不再是分类,而是一个连续值 。此时,基尼系数不再适用于衡量数据的混乱程度,一般使用方差来衡量数据的混乱程度。
例如,当 时,将它作为划分条件,把数据划分为 和 两部分, 中有 个样本, 中有 个样本。
中数据的混乱程度为
为 中目标值的平均值,即
如果 中所有数据的目标值 都一样,那么 ,此时 中的数据最纯。
同理,可以求出 中数据的混乱程度 。
对于划分条件 ,其对应的混乱程度为
回归树除了使用方差代替基尼系数来度量数据的纯度,其他均与分类树一致,叶子节点输出的值为该节点所有样本目标值的平均值。
▼
本文摘自《速通机器学习》一书!
▊《速通机器学习》
卢菁 著
轻松有趣的机器学习知识点读本
通过14个轻松有趣的专题,帮助初学者掌握机器学习的相关概念,帮助求职者快速梳理和回顾机器学习知识
本书从传统的机器学习,如线性回归、逻辑回归、朴素贝叶斯、支持向量机、集成学习,到前沿的深度学习和神经网络,如DNN、CNN、BERT、ResNet等,对人工智能技术进行零基础讲解,内容涵盖数学原理、公式推导、图表展示、企业应用案例。
本书面向初中级读者,能帮助读者迅速掌握机器学习技术的相关概念及原理。本书内容结合作者多年的科研工作经验,理论和实践并重,对科研、学习、面试等均有帮助。
(京东限时活动,快快扫码抢购吧!)
互动赠书
在本文下方留言区推荐一篇近期所读论文以及简述“自己的”推荐理由,如:
论文:Prototype-supervised Adversarial Network for Targeted Attack of Deep Hashing
地址:https://arxiv.org/abs/2105.07553
将由CV君选取5位小伙伴(走心且对别人有价值),赠送《速通机器学习》一书。
活动截止时间:2021.7.12-9:00
▼点击阅读原文,查看本书详情~
关于决策树,你一定要知道的知识点!相关推荐
- 一级造价师案例分析的难点是什么?哪一题最难?
要说一级造价师里面哪个科目是最难的,相信很多考生脑海里第一个涌出来的就是造价案例,那么造价工程案例分析它的难点到底是什么?哪一题最难?应该怎么学造价案例?今天就在这里和大家聊聊这一块 造价案例分析难点 ...
- 机器学习实践:鸢尾花分类-4
机器学习实践:鸢尾花分类 1.实验描述 决策树是机器学习中一种简单而又经典的算法.本实验将带领大家学习决策树的基本原理,并学习使用 scikit-learn 来构建一个决策树分类模型,最后使用此模型预 ...
- 关于决策树,你一定要知道的知识点!(文末送书)
在现实生活中,我们每天都会面对各种抉择,例如根据商品的特征和价格决定是否购买. 不同于逻辑回归把所有因素加权求和然后通过Sigmoid函数转换成概率进行决策,我们会依次判断各个特征是否满足预设条件,得 ...
- 机器学习知识点(七)决策树学习算法Java实现
为理解机器学习第四章节决策树学习算法,通过网上找到的一份现成代码,主要实现了最优划分属性选择和决策树构造,其中最优划分属性选择采用信息增益准则.决策树构造采用递归实现,代码如下: package sk ...
- 【机器学习】决策树知识点小结
决策树原理简述 决策树是一类常见的机器学习方法,它是基于树的结构进行决策的.每次做决策时选择最优划分属性,一般而言,随着划分过程不断进行,我们希望决策树的分支节点所包含的样本尽可能属于同一个类别,即节 ...
- 树模型知识点(1)——决策树
1.决策树的原理 决策树是一种树结构,从根节点出发,每个分支都将训练数据划分成了互不相交的子集.分支的划分可以以单个特征为依据,也可以以特征的线性组合为依据.决策树可以解决回归和分类问题,在预测过程中 ...
- 自然语言处理算法工程师历史最全资料汇总-基础知识点、面试经验
2019年秋招已过,零星的招聘任然在继续.本资源适用于NLP算法工程师面试,也适用于算法相关的其他岗位.整理了算法面试需要数学基础知识.编程语言.深度学习.机器学习.计算机理论.统计学习.自然语言处理 ...
- 30个学习大数据挖掘的重要知识点!
https://www.jianshu.com/p/2441b69794b0 下面是一些关于大数据挖掘的知识点,今天和大家一起来学习一下. 1. 数据.信息和知识是广义数据表现的不同形式. 2. 主要 ...
- 一文理清集成学习知识点(BoostingBagging)
点击上方"AI遇见机器学习",选择"星标"公众号 原创干货,第一时间送达 ???? 导读 相信这个环节的内容大家都会比较熟悉的,因为我们经常用到的XGBoost ...
最新文章
- SerialPort实现对串口COM的操作(有些纠结)
- hdu 1251+hdu 1671(字典树)
- 【BZOJ】1067: [SCOI2007]降雨量(rmq+变态题)
- 叉乘(三)——线段与线段相交吗?
- MyBatisPlus3.x代码生成器自定义模板配置
- awk 系列Part5:如何使用 awk 复合表达式
- SAP UI5 视图控制器 View Controller 的生命周期方法 - Lifecycle methods
- Java DES 加解密(DES/CBC/PKCS5Padding)
- TD8.0管理员工具
- ip复原Java_Java实现 LeetCode 93 复原IP地址
- Unity 资源断舍离(资源清理重复以及引用被引用查找)
- [状压DP]帮助Bubu
- 使用python爬取google翻译的语音
- Tab页的两种写法 - jeesite记录
- centos7升级GLIBC版本
- C# this.Invoke()的作用与用法、不阻塞UI界面线程的延时函数
- 微信内测朋友圈内容转发功能;快手前副总裁侵占756万余元,一审获刑7年;​俄罗斯法院驳回苹果上诉,将继续进行反垄断调查|极客头条
- 品牌声量是什么?怎么查询统计品牌声量?
- 阿里云短信服务平台注册
- mac mini u盘安装系统_用PE系统U盘启动盘安装操作系统
热门文章
- mysql大批量数据写入_存储过程写入大批量数据,用于测试mysql查询优化
- 微服务架构 vs SOA架构
- IntelliJ IDEA常用快捷键——基于Eclipse
- HttpServletRequest说明
- A. Gamer Hemose
- uint8_t / uint16_t / uint32_t /uint64_t 有什么区别?
- dedecms备份mysql数据库文件_dedecms备份的数据库文件在哪里
- thinkphp extend.php,【ThinkPHP5.1】如何引用extend的类库
- c语言皮尔森系数程序,按条件选入观测;皮尔森相关系数
- php sql获取字段名称,mssql获取字段名及注释,以及一系列问题