【机器学习基础】CH2 - 监督学习(5)决策树
2.5 决策树
到目前为止,我们已经研究了线性或线性基模型及其核变量。 在本节中,我们将考虑一种不同的分类或回归方法,在这种方法中,分类器是分段常数函数。 这类方法中最简单的是决策树,它将输入空间 分层 或划分为简单的规则区域,并为每个区域分配一个 常数 预测。
决策树是一种非常自然的决策模型,由一类易于解释的机器学习模型组成,从这个意义上说,我们可以很容易地推断出模型是如何得到预测的。 使用决策树的回归和分类模型称为CART classification and regression trees,即分类和回归树
2.5.1 回归决策树
数学上,(有向)树是一个 有向无环图 directed acyclic graph (见图2.3)。树的基顶点 base vertex 称为根节点 root node.。终端顶点terminal vertices 称为终端节点 terminal nodes。所有其他顶点称为内部节点 internal nodes。连接结点的边称为分支 branches。
在决策树的基础上,我们如何建立一个能够做出预测的模型?让我们先从一维回归的角度来讨论这个问题。
假设我们想去估计一些 oracle 函数 f ∗ : [ 0 , 1 ] → R f^*:[0,1]\to\mathbb{R} f∗:[0,1]→R。最简单的决策树通过筛选一些 θ 0 ∈ ( 0 , 1 ) \theta_0\in(0,1) θ0∈(0,1) 以及定义分段常函数:
我们应该如何选择 a a a 和 b b b ?一个简单的方法是将他们作为区域内 f ∗ f^* f∗ 的均值:
这是一个深度为1的决策树,因为只有两个节点连接到根节点。
我们也可以通过进一步分割来构建更深层次的决策树:
更一般地,一个基于回归器的决策树通过分割输入域 X \mathcal{X} X 为 J \mathcal{J} J 个不同的、无重叠的区域 R 1 , R 2 , . . . R J \mathcal{R}_1,\mathcal{R}_2,...\mathcal{R}_J R1,R2,...RJ,其中, ∪ j = 1 N R j = X \cup^N_{j=1}\mathcal{R}_j=\mathcal{X} ∪j=1NRj=X。然后给每个在区域 R j \mathcal{R}_j Rj 的点赋一个常数值 a j a_j aj。
更准确点,一个回归决策树假设平面由下面形式的函数组成:
理论上区域 R j \mathcal{R}_j Rj 可以是任何形状的,但通常我们希望结果是可解释的,因此我们将其限制为高维矩形(图2.5)。
- Optimization
我们如何在回归树的假设空间中进行优化?
给定一个数据集 D = { x i , y j } i = 1 N \mathcal{D}=\{x_i,y_j\}^N_{i=1} D={xi,yj}i=1N,我们设 a j a_j aj 为 y ˉ i \bar{y}_i yˉi for x i ∈ R j x_i\in\mathcal{R}_j xi∈Rj,即:
然后,需要确定区域 { R j } \{\mathcal{R}_j\} {Rj}。因此,经验风险平方损失最小化涉及以下优化问题:
换句话说,我们正在最小化输入空间 X \mathcal{X} X 的所有可能的矩形分割 { R j } \{\mathcal{R}_j\} {Rj}。事实证明,这个问题很难精确地解决。 在复杂性理论的语言中,它是NP-hard。
我们可以以 greedy 的方式进行,而不是精确地求解(2.87)。这种方法称为 递归二进制分割 recursive binary splitting 。
我们从根节点开始,依次将其中一个维度中的输入空间分割为两个部分。这相当于通过将两个叶节点附加到一个选定的叶节点,将它们添加到树中,该叶节点现在成为一个内部节点。
选择分割是为了使损失函数(如平方损失)在 当前 步骤最小化,无论未来的分割是否可能成为次优。这就是为什么它被称为贪心方法,因为它只关心最小化当前的错误,而不是未来的错误。
在图2.6中,我们使用一维的例子来说明贪婪方法给出的次最优解。一个常见的停止标准是当每个分割区域只包含几个样本点时。
2.5.2 分类决策树
分类问题同样可以用决策树来处理。在这种情况下,我们仍然可以考虑假设空间(2.85),除了在优化过程中我们必须选择不同的值 { a j } \{a_j\} {aj}。取代(2.86)中的平均值,我们通常使用 a j a_j aj 作为多数投票: 假设我们有一个 k k k 类的分类问题,其中标签可以取 { c 1 , c 2 , … , c K } \{c_1,c_2,… ,c_K\} {c1,c2,…,cK} 然后我们可以设置 a j = c ˉ j a_j = \bar c_j aj=cˉj,其中 c ˉ j \bar c_j cˉj 是 R j \mathcal{R}_j Rj 中输入 最频繁 出现的类。 关系可以随意打破。
为了像以前一样执行递归二进制分割算法,我们需要一个分类性能指标,以便在每一步都可以选择分割的贪婪选择。一个很自然的选择是 分类错误率 ,但它对分裂不是很敏感,因此不适合构建良好的决策树。相反,我们将 p j k p_{jk} pjk 定义为 R j \mathcal{R}_j Rj 中属于k类的样本所占的比例,那么我们可以使用以下损失函数,也称为杂质的度量 impurity ,作为贪婪分裂的基础:
递归二进制分裂算法可以通过在每次分裂时 最小化损失/杂质 来进行类似的操作。
2.5.3 决策树的优缺点
决策树与我们以前见过的其他类型的模型有很大的不同。 那么,使用决策树有哪些优点和缺点呢? 下面我们给出一个不完整的列表。
- 优点:
- 能很容易地想象和理解预测
- 通过分析分割来隐式特征选择,减少了误差/杂质的贡献
- 对数据类型,监督学习任务和非线性关系 都比较稳健
- 缺点:
- 容易过度拟合
- 对数据变化和平衡敏感
- 贪婪算法可以找到次最优解的经验风险最小化
手写笔记
【机器学习基础】CH2 - 监督学习(5)决策树相关推荐
- 机器学习基础——实现基本的决策树
一.决策树基本流程 决策树是常见的机器学习方法.我在学习周志华的机器学习的时候,用python实现了最基础的ID3算法,其基本思想是: 基于信息论中的信息增益理论,首先找出判断样本的最高的信息增益的 ...
- 机器学习基础——分类算法之决策树、随机森林、Titanic乘客生存分类
目录 1 认识决策树 1.1 信息增益.信息熵的计算 1.2 举例计算编辑 1.3 决策树的分类依据 1.4 sklearn决策树API 2 泰坦尼克号乘客生存分类 2.1 案例背景 2.2 数据 ...
- 机器学习基础(四)——决策树与随机森林
决策树与随机森林 文章目录 决策树与随机森林 一.知识概要(一) 二.决策树使用的算法 三.sklearn决策树API 四.决策树的案例 1. 数据清洗 2. 特征工程 3. 调用决策树API 五.集 ...
- Python机器学习基础篇二《监督学习》
前言 前期回顾: Python机器学习基础篇一<为什么用Python进行机器学习> 前面说过,监督学习是最常用也是最成功的机器学习类型之一.本章将会详细介绍监督学 习,并解释几种常用的监督 ...
- 【机器学习基础】用Python构建和可视化决策树
作者|Nikhil Adithyan 编译|VK 来源|Towards Data Science 决策树 决策树是当今最强大的监督学习方法的组成部分.决策树基本上是一个二叉树的流程图,其中每个节点根据 ...
- Python机器学习基础篇三《无监督学习与预处理》
前言 前期回顾: Python机器学习基础篇二<为什么用Python进行机器学习> 上面这篇里面写了文本和序列相关. 我们要讨论的第二种机器学习算法是无监督学习算法.无监督学习包括没有已知 ...
- python决策树剪枝_机器学习基础:可视化方式理解决策树剪枝
看了一些市面上的经典教材,感觉决策树剪枝这一部分讲的都特别晦涩,很不好理解.本文以理论白话+具体案例的形式来讲清楚这个重要知识点,打好决策树这个基础,有助于理解之后我们要讲解的随机森林.gbdt.xg ...
- Python机器学习基础教程-第2章-监督学习之K近邻
前言 本系列教程基本就是摘抄<Python机器学习基础教程>中的例子内容. 为了便于跟踪和学习,本系列教程在Github上提供了jupyter notebook 版本: Github仓库: ...
- 《机器学习系列教程》:第二章 机器学习基础
第二章 机器学习基础 机器学习and 数据分析 2.2 监督学习.非监督学习.半监督学习.弱监督学习? 根据数据类型的不同,对一个问题的建模有不同的方式.依据不同的学习方式和输入数据,机器学习主要分为 ...
最新文章
- 《你必须掌握的Entity Framework 6.x与Core 2.0》正式出版感想
- AX2009报表打印固定长度Barcode条码
- chrome88 android,Chrome 88 的新特性
- python写appium测试用例找控件的方法总结
- linux dns chroot,chroot DNS 过程(包括一些简单的排错过程)
- Linux环境运行Jmeter
- Could not retrieve transaction read-only status from server
- Flutter入门进阶之旅(七)GestureDetector
- mysql dsec_MySQL基础(一)查询
- STM32-关于Proteus 仿真无法运行STM32CubeMX自动生成的代码
- 姿态估计(人体关键点检测)之CPN
- EDK2从搭建到运行
- Android 微信支付总结
- Cocoa Application-基础
- 查询所有的员工信息 和对应的部门信息
- ERDAS 2015 64位破解安装教程
- Mysql在表中添加约束条件
- 《eNSP - OSPF 查看命令》
- 单片机中psw的作用是什么?
- 团体程序设计天梯赛-练习集 L1-035 情人节
热门文章
- Android Unable to execute dex: method ID not in [0, 0xffff]: 65536 问题解决方法
- html中怎么写css代码,html style样式标签元素教程
- iOS-Mac下安装CocoaPods
- (转载)HCIA-GaussDB 华为认证数据库工程师
- 保留两位小数(四舍五入)
- 基于Webmagic的爬取B站用户数据的爬虫
- 如何删除电脑计算机用户名和密码,如何删除电脑设置的密码
- vlc播放g711 rtp流媒体sdp文件及其参数介绍
- GoogleChromePortable 谷歌chrome浏览器便携版官网下载方式
- 手机端自适应表格table样式如何写