• 作者:韩信子@ShowMeAI
  • 教程地址:https://www.showmeai.tech/tutorials/34
  • 本文地址:https://www.showmeai.tech/article-detail/192
  • 声明:版权所有,转载请联系平台与作者并注明出处

引言

大家在前面的部分学习到了使用决策树进行分类,实际决策树也可以用作回归任务,我们叫作回归树。而回归树的结构还是树形结构,但是属性选择与生长方式和分类的决策树有不同,我们一起来看看它的原理知识吧。

(本篇回归树模型部分内容涉及到机器学习基础知识、决策树算法,没有先序知识储备的宝宝可以查看ShowMeAI的文章 [图解机器学习 | 机器学习基础知识]((https://www.showmeai.tech/article-detail/185) 及 决策树模型详解)。

1.决策树回归算法核心思想

1)决策树结构回顾

我们一起来回顾一下决策树的结构,决策树的典型结构如下图所示

决策树的学习过程预测过程如下图所示。详细内容可以参考ShowMeAI的文章 决策树模型详解。

主流的决策树算法有:

  • ID3:基于信息增益来选择分裂属性(每步选择信息增益最大的属性作为分裂节点,树可能是多叉的)。

  • C4.5:基于信息增益率来选择分裂属性(每步选择信息增益率最大的属性作为分裂节点,树可能是多叉的)。

  • CART:基于基尼系数来构建决策树(每步要求基尼系数最小,树是二叉的)。

其中:CART树全称Classification And Regression Tree,即可以用于分类,也可以用于回归,这里指的回归树就是CART树,ID3和C4.5不能用于回归问题。

2)回归树的核心思想

要讲回归树,我们一定会提到CART树,CART树全称Classification And Regression Trees,包括分类树与回归树

CART的特点是:假设决策树是二叉树,内部结点特征的取值为「是」和「否」,右分支是取值为「是」的分支,左分支是取值为「否」的分支。这样的决策树等价于「递归地二分每个特征」,将输入空间(特征空间)划分为有限个单元,并在这些单元上确定预测的概率分布,也就是在输入给定的条件下输出的条件概率分布。

设有数据集 DDD ,构建回归树的大体思路如下:

  • ①考虑数据集 DDD 上的所有特征 jjj ,遍历每一个特征下所有可能的取值或者切分点 sss ,将数据集 DDD 划分成两部分 D1D_1D1D2D_2D2

  • ②分别计算 D1D_1D1D2D_2D2 的平方误差和,选择最小的平方误差对应的特征与分割点,生成两个子节点(将数据划分为两部分)。

  • ③对上述两个子节点递归调用步骤①②,直到满足停止条件。

回归树构建完成后,就完成了对整个输入空间的划分(即完成了回归树的建立)。将整个输入空间划分为多个子区域,每个子区域输出为该区域内所有训练样本的平均值。

我们知道了回归树其实是将输入空间划分为M个单元,每个区域的输出值是该区域内所有点y值的平均数。但我们希望构建最有效的回归树:预测值与真实值差异度最小。下面部分我们展开讲讲,回归树是如何生长的。

2.启发式切分与最优属性选择

1)回归树模型示例

我们用一个经典的棒球案例来解释回归树:根据从业年限和表现,去预估棒球运动员的工资。如下所示,有1987个数据样本,包含322个棒球运动员。红黄表示高收入,蓝绿表示低收入。横坐标是年限,纵坐标是表现。

这个简单案例中,每个样本数据有两个特征:从业年限years和成绩表现hits,回归树的决策过程由最终生成的回归树决定,如右图所示:

  • 根决策节点为特征Years,其划分阈值为4.5,Years小于4.5的样本划分到左边,大于或等于4.5的样本划分到右边;

  • 第二个决策节点的特征为Hits,其划分阈值为117.5,Hits小于117.5的样本划分到左边,大于或等于117.5的样本划分到右边。

  • 一个样本顺着决策树的决策条件,走到叶子节点,即可获得预测工资,这里的预测工资总共就3种取值,分别为5.11、6.00、6.74。

我们来深入拆解和对应一下,其实回归树构建完成后,实现了对整个空间的划分(如下图所示)。实际预测时,新样本会按照回归树的决策过程,被划分到下图 R1R_1R1R2R_2R2R3R_3R3 之中的一个区域 RiR_iRi ,而这个新样本的预测值(本案例中为棒球运动员的工资)就是它所在的区域。

  • RiR_iRi 中所有训练样本的工资平均值。

回归树背后的含义:对空间的划分。整个平面被划分成3部分:

  • R1={X∣Years<4.5}R1 = \{X |Years < 4.5\}R1={XYears<4.5}
  • R2={X∣Years≥4.5,Hits<117.5}R2 = \{X |Years ≥ 4.5, Hits < 117.5\}R2={XYears4.5,Hits<117.5}
  • R3={X∣Years≥4.5,Hits≥117.5}R3 = \{X |Years ≥ 4.5, Hits ≥ 117.5\}R3={XYears4.5,Hits117.5}

2)回归树构建方法

下面切到回归树构建的核心:切分方式与属性选择。

假设一回归问题,预估结果 y∈Ry \in RyR ,特征向量为 X=[x1,x2,x3,…,xp]X = [x_1,x_2,x_3, \dots , x_p ]X=[x1,x2,x3,,xp] ,回归树2个步骤是:

  • ①把整个特征空间 XXX 切分成 JJJ 个没有重叠的区域 R1,R2,R3,…,RJR_1,R_2,R_3, \dots ,R_JR1,R2,R3,,RJ

  • ②其中区域 RJR_JRJ 中的每个样本我们都给一样的预测结果 y~Rj=1n∑j∈Rjyj\tilde{y}_{R_{j}}=\frac{1}{n} \sum j \in R j y_{j}y~Rj=n1jRjyj ,其中 nnnRJR_JRJ 中的总样本数。

仔细观察一下上面的过程,实际上我们希望能找到如下的RSS最小的化划分方式 R1,R2,R3,…,RJR_1,R_2,R_3, \dots ,R_JR1,R2,R3,,RJ

RSS=∑j=1J∑i∈Rj(yi−y~Rj)2R S S=\sum_{j=1}^{J} \sum_{i \in R j}\left(y_{i}-\tilde{y}_{R_{j}}\right)^{2} RSS=j=1JiRj(yiy~Rj)2

  • yyy :为每个训练样本的标签构成的标签向量,向量中的每个元素 $y_j $ 对应的是每个样本的标签。

  • XXX :为特征的集合, x1,x2,…,xpx_1,x_2, \dots , x_px1,x2,,xp 为第1个特征到第 ppp 个特征。

  • R1,R2,R3,…,RJR_1,R_2,R_3, \dots ,R_JR1,R2,R3,,RJ 为整个特征空间划分得来的J个不重叠的区域(可以参考上页的右图)。

  • y~Rj\tilde{y}_{R_{j}}y~Rj :为划分到第 jjj 个区域 $R_j $ 的样本的平均标签值,用这个值作为该区域的预测值,即如果有一个测试样本在测试时落入到该区域,就将该样本的标签值预测为 y~Rj\tilde{y}_{R_{j}}y~Rj

但是这个最小化和探索的过程,计算量是非常非常大的。我们采用「探索式的递归二分」来尝试解决这个问题。

递归二分

回归树采用的是「自顶向下的贪婪式递归方案」。这里的贪婪,指的是每一次的划分,只考虑当前最优,而不回头考虑之前的划分。从数学上定义,即选择切分的维度(特征) xjx_jxj 以及切分点 sss 使得划分后的树RSS结果最小,公式如下所示:

R1(j,s)={x∣xj<s}R2(j,s)={x∣xj≥s}RSS=∑xi∈R1(j,s)(yi−y~R1)2+∑xi∈R2(j,s)(yi−y~R2)2\begin{aligned} & R_{1}(j, s)=\left\{x \mid x_{j}<s\right\} \\ & R_{2}(j, s)=\left\{x \mid x_{j} \geq s\right\} \\ & RSS=\sum x_{i} \in R_{1}(j, s)\left(y_{i}-\tilde{y}_{R 1}\right)^{2}+\sum x_{i} \in R_{2}(j, s)\left(y_{i}-\tilde{y}_{R_{2}}\right)^{2} \end{aligned} R1(j,s)={xxj<s}R2(j,s)={xxjs}RSS=xiR1(j,s)(yiy~R1)2+xiR2(j,s)(yiy~R2)2

我们再来看看「递归切分」。下方有两个对比图,其中左图是非递归方式切分得到的,而右图是二分递归的方式切分得到的空间划分结果(下一次划分一定是在之前的划分基础上将某个区域一份为二)。

两种方式的差别是:递归切分一定可以找到一个较优的解,非递归切分穷举不了所有情况,算法上无法实现,可能无法得到一个较好的解。

回归树总体流程类似于分类树:分枝时穷举每一个特征可能的划分阈值,来寻找最优切分特征和最优切分点阈值,衡量的方法是平方误差最小化。分枝直到达到预设的终止条件(如叶子个数上限)就停止。

但通常在处理具体问题时,单一的回归树模型能力有限且有可能陷入过拟合,我们经常会利用集成学习中的Boosting思想,对回归树进行增强,得到的新模型就是提升树(Boosting Decision Tree),进一步,可以得到梯度提升树(Gradient Boosting Decision Tree,GBDT),再进一步可以升级到XGBoost。通过多棵回归树拟合残差,不断减小预测值与标签值的偏差,从而达到精准预测的目的,ShowMeAI会在后面介绍这些高级算法。

3.过拟合与正则化

1)过拟合问题

决策树模型存在过拟合风险,通常情况下,树的规模太小会导致模型效果不佳,而树的规模太大就会造成过拟合,非常难以控制。

2)过拟合问题处理

对于决策树,我们通常有如下一些策略可以用于环节过拟合:

(1)约束控制树的过度生长

  • 限制树的深度:当达到设置好的最大深度时结束树的生长。
  • 分类误差法:当树继续生长无法得到客观的分类误差减小,就停止生长。
  • 叶子节点最小数据量限制:一个叶子节点的数据量过小,树停止生长。

(2)剪枝

约束树生长的缺点就是提前扼杀了其他可能性,过早地终止了树的生长,我们也可以等待树生长完成以后再进行剪枝,即所谓的后剪枝,而后剪枝算法主要有以下几种:

  • Reduced-Error Pruning(REP,错误率降低剪枝)。
  • Pesimistic-Error Pruning(PEP,悲观错误剪枝)。
  • Cost-Complexity Pruning(CCP,代价复杂度剪枝)。
  • Error-Based Pruning(EBP,基于错误的剪枝)。

3)正则化

对于回归树而言,在剪枝过程中我们会添加正则化项衡量。如下所示,考虑剪枝后得到的子树 {Ta}\left \{T_a \right \}{Ta} ,其中 α\alphaα 是正则化项的系数。当固定住 α\alphaα 之后,最佳的 TaT_aTa 就是使得下列式子值最小的子树。

∑m=1∣T∣∑xi∈Rm(yi−y~R2)2+α∣T∣\sum_{m=1}^{|T|} \sum_{x_{i} \in R_{m}}\left(y_{i}-\tilde{y}_{R_{2}}\right)^{2}+\alpha|T| m=1TxiRm(yiy~R2)2+αT

  • ∣T∣|T|T 是回归树叶子节点的个数。

  • α\alphaα 可以通过交叉验证去选择。

更多监督学习的算法模型总结可以查看ShowMeAI的文章 AI知识技能速查 | 机器学习-监督学习。

视频教程

可以点击 B站 查看视频的【双语字幕】版本

【双语字幕+资料下载】MIT 6.036 | 机器学习导论(2020·完整版)

【双语字幕+资料下载】MIT 6.036 | 机器学习导论(2020·完整版)

https://www.bilibili.com/video/BV1y44y187wN?p=12

ShowMeAI图解机器学习算法系列(完整版)

ShowMeAI系列教程精选推荐

图解机器学习算法(8) | 回归树模型详解(机器学习通关指南·完结)相关推荐

  1. 机器学习(六)树模型详解

    树模型详解 决策树 决策树模型 ① 树模型不用做scaling ② 树模型不太需要做离散化 ③ 用Xgboost等工具库,是不需要做缺失值填充 ④ 树模型是非线性模型,有非线性的表达能力 决策树基于& ...

  2. 传统机器学习笔记6——回归树模型

    目录 前言 一.决策树回归 1.1.核心思想 二.启发式切分与最优属性选择 2.1.回归模型示例 2.2.回归树的构建方法 递归二分 过拟合与正则化 3.1.过拟合问题 3.2.过拟合问题的解决方法 ...

  3. 图解机器学习算法(6) | 决策树模型详解(机器学习通关指南·完结)

    作者:韩信子@ShowMeAI 教程地址:https://www.showmeai.tech/tutorials/34 本文地址:https://www.showmeai.tech/article-d ...

  4. 图解机器学习算法(13) | 聚类算法详解(机器学习通关指南·完结)

    作者:韩信子@ShowMeAI 教程地址:https://www.showmeai.tech/tutorials/34 本文地址:https://www.showmeai.tech/article-d ...

  5. ❤️解决非线性回归问题的机器学习方法总结:多项式线性模型、广义线性(GAM)模型、回归树模型、支持向量回归(SVR)模型

    文章目录 前言 多项式回归模型 概念解释: sklearn实现多项式回归模型: 广义线性可加(GAM)模型 概念解释: pygam实现广义线性可加模型: GAM模型的优点与不足: 回归树模型 概念解释 ...

  6. 机器学习(三)树模型

    机器学习(一)LR 机器学习(二)SVM 机器学习(三)树模型 机器学习(四)聚类 机器学习(三)树模型 目录 二.树模型 1.ID3 2.C4.5 3.CART树 (1)算法步骤 (2)举例 (3) ...

  7. 机器学习--CART分类回归树

    目录 文章目录 目录 前言 1.CART回归树简介 2.剪枝策略 3.模型树 4.线性回归 回归树 模型树比较 前言 虽然许多问题都可以用线性方法取得良好的结果,但现实中也有许多问题是非线性的,用线性 ...

  8. id3决策树 鸢尾花 python_机器学习之分类回归树(python实现CART)

    机器学习之分类回归树(python实现CART) 之前有文章介绍过决策树(ID3).简单回顾一下:ID3每次选取最佳特征来分割数据,这个最佳特征的判断原则是通过信息增益来实现的.按照某种特征切分数据后 ...

  9. 机器学习 | 决策树之回归树

    机器学习 | 决策树之回归树 上文提到决策树不仅可用于分类,还可进行回归,本文将继续记录回归决策树. 文章目录 机器学习 | 决策树之回归树 前言 一.回归树的构建方法 二.递归二分法 三.回归树的剪 ...

  10. 使用pickle保存机器学习模型详解及实战(pickle、joblib)

    使用pickle保存机器学习模型详解及实战 pickle模块实现了用于序列化和反序列化Python对象结构的二进制协议. "Pickling"是将Python对象层次结构转换为字节 ...

最新文章

  1. python argparse_Python 命令行之旅:初探 argparse
  2. 阅读mutate源码学习dplyr
  3. [YTU]_2625( 构造函数和析构函数)
  4. vi的插入模式下退格和方向键不能使用的解决方法
  5. java 写文件 异常 磁盘空间满_系统磁盘空间满的一个问题
  6. COLING 2020 | 面向机器阅读理解的双向认知思维网络
  7. 字符输出流的基本使用_写出单个字符到文件
  8. python numpy矩阵乘法_高维Python-Numpy矩阵乘法
  9. 学习:SQL Server的BUILTIN\Administrators用户
  10. LeetCode 804. 唯一摩尔斯密码词(哈希+set)
  11. 如何才能轻松地分析日志?
  12. 标贝科技推出情感合成 TTS,让语音交互更有温度!
  13. .net Asp AdRotator(广告控件)
  14. html5查看xps文件,c# – 在文档查看器中显示XPS文档
  15. 希尔伯特空间、欧几里德空间
  16. ShadowGun shader 解析(1)
  17. http://www.cnblogs.com/qianmojing/p/6142178.html
  18. [苹果开发者账号]04 申请苹果开发者账号 美国报税表
  19. WebStorm 支持微信小程序的 rpx 单位
  20. emoji表情乱码php,推送emoji表情乱码的解决方法

热门文章

  1. echarts 生成 迁徙图_Echarts地图的迁徙图
  2. 【色空win7动漫美女诱惑主题】
  3. 【收益管理】单资源容量控制(2)先从报童模型谈起!
  4. ADT下载地址(含各版本)
  5. word转pdf转换器11.0注册码
  6. android实现语音聊天功能,为实现Android语音聊天室开发,语音聊天室软件源码该如何搭建...
  7. 智慧政府:大数据治国时代的来临 - 电子书下载(高清版PDF格式+EPUB格式)
  8. Java基础知识总结(超详细整理)
  9. JAVA微信小程序购物商城系统毕业设计 开题报告
  10. 非线性控制1.0——自适应控制和鲁棒控制