【机器学习】决策树如何实现回归

news2024/11/18 0:33:08

【机器学习】决策树如何实现回归

文章目录

  • 【机器学习】决策树如何实现回归
    • 1. 介绍
    • 2. 回归树的构建方法
    • 3. 递归二分法
    • 4. 回归树的剪枝
    • 5. 总结
    • 参考

1. 介绍

在 https://blog.csdn.net/qq_51392112/article/details 中,我们详细介绍了决策树基本内容:如何实现、决策树的类型、公式计算等,内容更偏向于决策树的分类任务,而分类任务也是很好理解的,因为直观上来说,决策树本身就很适合分类任务。

  • 但是决策树还可以实现回归任务,这一讲我们将要细讲。
  • 与线性回归不同,回归树是将“空间”进行划分,每个空间则对应一个统一的预测值。

2. 回归树的构建方法

1)预测的标签值是根据该区域(空间)内的总样本数平均化得出的。
在这里插入图片描述

2)与线性回归类似,回归树也需要一个损失函数对回归的效果进行评估,这里采用平方残差和RSS进行评估:

在这里插入图片描述

  • 其中, y i y_i yi 是样本的真实值, y R j y_{R_j} yRj 是第 R j R_j Rj 空间所有样本的预测值。
  • 内层 ∑ 就是将该区域内所有的样本预测值和真实值的差值平方进行加和;
  • 外层 ∑ 就是遍历所有划分出来的区域。

但是如果我们仔细想一下,如果采用这种方法来回归,这个计算量是惊人的,因为空间划分有太多的情况,为了处理这种问题,我们常使用一种方法对划分空间提出了简化要求!

  • 这种方法称作“递归二分法”!

3. 递归二分法

什么是递归二分?顾名思义,树的每次分裂都以二叉树的形式分裂。当我们初步根据特征及其最佳划分点分裂出了2个子结点(即空间)RJ
​后,不断从当前位置,继续将该空间的样本再次划分成2份!
在这里插入图片描述
1)划分方案:

  • 自顶向下,从所有样本开始,不断从当前位置,把样本切分到2个分支里
  • 贪婪,每一次的划分,只考虑当下划分的最优,不回头考虑先前的划分

2)优化原则:

  • 选择切分的维度x_j (即将数据的每一个特征)以及切分点s,使得再次划分后的回归树RSS结果最小
    在这里插入图片描述

通俗来说,当我们初步划分出了两个空间后,接下来,将继续根据损失函数RSS开始选择维度,以及该维度下的切分点 t 再次将 子空间进行二分。
在这里插入图片描述
在这里插入图片描述

4. 回归树的剪枝

同样的,回归优化的过程同线性回归一样,在通过降低损失函数来优化模型的过程中,模型容易陷入“过拟合”的状态。同样需要引入“正则化项”作为惩罚。

  • 与线性回归区别的是,由于回归树并不是数值模型,所以正则化项不可以引入如L2正则化项这种数值项,因此回归树里的正则化项与叶子结点相关:
    在这里插入图片描述
    这里的 ∣T∣示树T的结点数,当超参数α > 0时,树的结点越多,代表模型越复杂,树将为它的复杂性付出代价,所以使上式取到最小值的子树会变得更小。

5. 总结

回归决策树算法:

  1. 利用递归二叉分裂在训练集中生成一棵大树,只有当终端结点包含的观测值个数低于某个最小值时才停止。
  2. 对大树进行代价复杂性剪枝,得到一系列最优子树,子树是 α 的函数。
  3. 利用K折交叉验诞选择 α 。具体做法是将训练集分为K折。
    • 对所有k = 1 , 2 , 3 , ⋯ K; 对训练集上所有不属于第k折的数据重复第(1)步~第(2)步得到与α对应的子树,并求出上述子树在第k折上的均方预测误差。
  4. 每个α会有相应的K个均方预测误差,对这K个值求平均,选出使平均误差最小的α。
  5. 找出选定的α在第(2)步中对应的子树。

参考

【1】https://blog.csdn.net/RichardsZ_/article/details/108903858

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/492824.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Visual Studio搭建Linux环境

环境:ubantu22.04.2 Visual Studio2019 可以先参考这个文章 微软官网 1.在配置之前需要搭建好远程Linux系统的环境需要安装penssh-server、gdb、gdbserver: sudo apt-get install openssh-server sudo apt-get install gdb gdbserver2.然后启动ssh服务 …

Filename: “/usr/local/flexlm/licenses/license.dat“

故障现象1:学习安装vcs时,出现如下打印: 8:30:51 (lmgrd) Servers System Date and Time: Fri May 05 2023 08:30:51 EDT 8:30:51 (lmgrd) SLOG: Summary LOG statistics is enabled. 8:30:51 (lmgrd) license manager: cant initialize:Ca…

K8S管理系统项目实战[API开发]

前端: Vueelement plus 后端: gogin 后端 Go 快速入门 Gin Web框架 K8s管理系统项目实战[API开发] 项目背景,整体设计,Client-go,框架搭建 一、项目背景 随着容器技术的广泛应用,kubernetes逐渐成为业内的核心技术&#xf…

【SpringBoot】SpringBoot集成ElasticSearch

文章目录 第一步,导入jar包,注意这里的jar包版本可能和你导入的不一致,所以需要修改第二步,编写配置类第三步,填写yml第四步,编写util类第五步,编写controller类第六步,测试即可 第一…

黎曼几何与黎曼流形

目录 0.黎曼几何 1. 欧几里得几何与黎曼几何的区别 2.黎曼流形 3.黎曼距离 4.切空间 5.黎曼均值 6. SPD矩阵如何形成黎曼流型 7.切线空间映射 8.同余变换和同余不变 9.黎曼对齐 科普性笔记,做了解,不深入。 0.黎曼几何 黎曼几何是一种基于欧几…

MySQL 表操作

目录 创建表 案例 查看表结构 修改表 案例: 删除表 创建表 CREATE TABLE table_name ( field1 datatype, field2 datatype, field3 datatype ) character set 字符集 collate 校验规则 engine 存储引擎 ; 说明: field 表示列名 dat…

【Vue学习笔记3】使用Vite开启一个Vue3工程项目

1. 什么是Vite? Vite是一个web开发构建工具。Vite 的竞品是 Webpack,而且按照现在的趋势看,使用率超过 Webpack 也是早晚的事。 Vite 主要提升的是开发的体验,Webpack启动调试环境需要 3 分钟都很常见,Vite大大缩短了这个时间。…

应急加固初试(windows sever 2008)

前言 红中(hong_zh0) CSDN内容合伙人、2023年新星计划web安全方向导师、 华为MindSpore截至目前最年轻的优秀开发者、IK&N战队队长、 吉林师范大学网安大一的一名普通学生、搞网安论文拿了回大挑校二、 阿里云专家博主、华为网络安全云享专家、腾讯云自媒体分享计划博主 …

SEO优化新手必须掌握的10个技巧和工具

随着互联网的不断发展,SEO(搜索引擎优化)已成为网站拓展和推广的重要手段之一。对于新手而言,学习SEO的基础知识和技巧是至关重要的。在本文中,我将分享SEO优化新手必须掌握的10个技巧和工具。 1.关键词研究 关键词是…

Spring Cloud学习笔记【分布式配置中心-Config】

文章目录 SpringCloud Config概述概述传统方式弊端主要功能与GitHub整合配置 Config服务端配置与测试服务端配置(即Gitee上的配置文件)Config Demo配置Spring Cloud Config访问规则 Config客户端配置与测试bootstrap.yml说明Config客户端 Demo配置 SpringCloud Config概述 概述…

学校信息化管理系统通常包含哪些功能?

学校管理信息化是现代教育发展的必然趋势,随着信息技术的飞速发展,学校管理也逐渐地实现了信息化。信息化的学校管理已经成为教育现代化建设的重要内容,也是提高学校教育教学质量和保障学生安全的重要手段。 作为一款低代码开发平台&#xf…

【Shell编程】| if 判断的五个关键点

个人主页:董哥聊技术 我是董哥,嵌入式领域新星创作者 创作理念:专注分享高质量嵌入式文章,让大家读有所得! 文章目录 1、if语法格式1.1 if格式1.2 else if 和 else 2、算数比较3、文件判断4、字符串判断5、test指令测试…

Unity Audio -- (1)概览

准备工作 资源包: https://connect-prd-cdn.unity.com/20230208/8dab3a98-4fe1-4adf-99df-8f6c9e1058c9/creativecore-audio-2021.3LTS.zip 下载,解压后用Unity Hub导入本地工程,具体方法,参考: Project setup proce…

放弃40k月薪的程序员工作,选择公务员,我来分享一下看法

我有一个朋友,拒绝了我为他提供的4万薪水的工作,去了一个体制内的银行,做程序员,即使薪水减半。他之前在北京一家大公司做程序员,一个月30k。当我开始创业时,我拉他来和我一起干,但那时我们太小…

干货 | 思维转变之如何成为一个快速学习者!!!

Hello,大家好! 这里是壹脑云科研圈,我是喵君姐姐~ 在信息爆炸的今天,网络上有各种资源,其实有心想要学习,都可以学到。 但是,其实自我学习的过程还是比较艰难,那么是否…

人员管理KPI和OKR

文章目录 人员管理KPI和PI一、关键绩效指标概述(一)关键绩效指标的内涵(二)关键绩效指标的类型(三)基于关键绩效指标的绩效指标体系 二、关键绩效指标库三、指标权重与员工责任 OKR360 环评3P汇报法 人员管…

只使用位运算实现加减乘除

在线OJ: LeetCode 29. 两数相除 原题目的要求是不能使用乘法, 除法和取余运算符实现除法. 在本篇博客中把题目要求提高一点, 这里只使用位运算来实现, 顺便的也就把只使用位运算实现加减乘除实现了. 1 . 实现加法 首先我们需要知道两数之和可以是两个数位相加和不进位相加之…

c++ 入门概述

c 入门概述 1. c 关键字2. c 命名空间3. c 输入与输出4. c 缺省参数5. c 函数重载6. c 引用6.1 引用概念6.2 引用特性6.3 常引用6.4 引用与指针区别 7. c 内联函数8. c auto 关键字9. 范围 for 循环 1. c 关键字 c 98中,规定的关键字总共有63个: 2. c…

排序算法 - 插入排序

文章目录 插入排序介绍插入排序实现插入排序的时间复杂度和稳定性插入排序时间复杂度插入排序稳定性 代码实现核心&总结 每日一道算法,提高脑力。第三天,插入排序。 插入排序介绍 插入排序(Insertion Sort)的基本思想是: 把n个待排序的元素看成为一…

全网最火,Web自动化测试驱动模型详全,一语点通超实用...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 自动化测试模型&a…