回归树

简介:   大家都知道,决策树能够做分类问题,但是到了CART(classsiification and regression tree)算法发明的时候,树又能做分类也能做回归。

  大家都知道,决策树能够做分类问题,但是到了CART(classsiification and regression tree)算法发明的时候,树又能做分类也能做回归。感谢这位博主分享这么通俗易懂的博客,我只是对这篇博客进行整理,作为自己学习之用

1.原理描述

  一个回归树对应这输入空间(即特征空间)的一个划分以及在划分单元上的输出值。分类树中,我们采用信息论的方法,通过计算选择最佳划分点。而在回归树中,采用的是启发式的方法。假如我们有n个特征,每个特征有s_i(i\in(1,n))个取值,那我们遍历所有特征,尝试该特征所有取值,对空间进行划分,直到取到特征j的取值s,使得损失函数最小(回归树的损失函数用平方差),这样就得到了一个划分点。公式如图:

img_6201427e67c79b1408372d07166fad9d.gif

  假设将输入空间划分为M个单元: R_1R_2,..., R_m,那么每个区域的输出值就是: c_m = ave(y_i|x_i\in R_m),也就是该区域内所有点y值的平均数。
  举个例子。如下图所示,假如我们想要对楼内居民的年龄进行回归,将楼划分为3个区域 R_1R_2R_3(红线),那么 R_1的输出就是第一列四个居民年龄的平均值, R_2的输出就是第二列四个居民年龄的平均值, R_3的输出就是第三、四列八个居民年龄的平均值。
img_cd4304fd0251b3a5ac6dfcf4dcd76b06.png

2.算法描述

img_6b009e9d6d68b92752d5cb1ec6f181c8.png
回归树

3.一个实例

  依照个人的见解,其实树模型无论是回归还是分类,都是用关于自变量的不等式将整个空间分成一个个的小区域,然后依照提交对应哪个区域是几(回归)或者哪个区域是哪个类别(分类)。下图是回归树的图


img_1881cbb0f39bfb50e8419d3bafebfefb.png

  下面这个实例我就直接贴了。


img_125952c2ce1bbed833fb18ed470ce042.png

img_1487d7734dd22ebc1b50f3388e278547.png

img_1487d7734dd22ebc1b50f3388e278547.png

img_ed329dfb645028dd819cab181cdb9360.png

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

目录
相关文章
|
11月前
|
前端开发 JavaScript 测试技术
前端工程化:构建高效、可维护的现代Web应用
【10月更文挑战第5天】前端工程化:构建高效、可维护的现代Web应用
|
11月前
|
人工智能 算法 BI
第十四届蓝桥杯省赛大学C组(C/C++)三国游戏
第十四届蓝桥杯省赛大学C组(C/C++)三国游戏
|
9月前
|
机器学习/深度学习 Web App开发 人工智能
Amurex:开源AI会议助手,提供实时建议、智能摘要、快速回顾关键信息
Amurex是一款开源的AI会议助手,提供实时建议、智能摘要、快速回顾关键信息等功能,帮助用户提升会议效率。本文将详细介绍Amurex的功能、技术原理以及如何运行和使用该工具。
399 18
Amurex:开源AI会议助手,提供实时建议、智能摘要、快速回顾关键信息
|
9月前
|
Web App开发 安全 虚拟化
在单个IP地址下实现HTTP代理IP的高效使用
本文介绍了如何在单个窗口使用单个IP以及在多个窗口使用不同IP的方法,包括浏览器设置、使用虚拟机或容器、隐身模式、多浏览器和指纹浏览器等技术手段,并强调了控制IP频率、保证代理质量、注意安全性和法律合规的重要性。
143 8
|
10月前
|
前端开发 Unix 测试技术
揭秘!前端大牛们如何高效管理项目,确保按时交付高质量作品!
【10月更文挑战第30天】前端开发项目涉及从需求分析到最终交付的多个环节。本文解答了如何制定合理项目计划、提高团队协作效率、确保代码质量和应对项目风险等问题,帮助你学习前端大牛们的项目管理技巧,确保按时交付高质量的作品。
222 2
|
11月前
|
搜索推荐 算法
数据结构与算法学习十四:常用排序算法总结和对比
关于常用排序算法的总结和对比,包括稳定性、内排序、外排序、时间复杂度和空间复杂度等术语的解释。
106 0
数据结构与算法学习十四:常用排序算法总结和对比
|
数据采集 存储 Java
如何让Python爬虫在遇到异常时继续运行
构建健壮Python爬虫涉及异常处理、代理IP和多线程。通过try/except捕获异常,保证程序在遇到问题时能继续运行。使用代理IP(如亿牛云)防止被目标网站封锁,多线程提升抓取效率。示例代码展示了如何配置代理,设置User-Agent,以及使用SQLite存储数据。通过`fetch_url`函数和`ThreadPoolExecutor`实现抓取与重试机制。
265 4
如何让Python爬虫在遇到异常时继续运行
|
11月前
|
开发框架 数据可视化 JavaScript
鸿蒙可视化代码生成器神器
本文介绍了鸿蒙生态中的ArkTS语言,它在TypeScript基础上强化了静态类型并提供声明式UI和状态管理。同时,ArkUI作为分布式UI开发框架,提升了界面开发效率,且配合可视化工具的改进,简化了组件管理和API集成过程。
243 0
|
弹性计算 运维 监控
高弹性、高可用、低成本的云上资源管理最佳实践
阿里云弹性计算团队十三位产品专家和技术专家共同分享云上运维深度实践,详细阐述如何利用CloudOps工具实现运维提效、弹性降本。
702 0
|
消息中间件 监控 测试技术
Flink实时计算大促压测实践
Flink实时计算大促压测实践
226 0