提升树模型

news2024/9/25 7:19:39

提升树(Boosting Tree)是一种集成学习方法,它通过组合多个弱分类器(通常是决策树)来构建一个强分类器。这种方法在许多统计学习任务中表现出色,被认为是性能最好的方法之一。

提升树模型概述

提升树模型是一种基于提升方法的集成学习技术,它使用加法模型和前向分步算法来逐步构建模型。在提升树中,决策树作为基本的分类器,可以是二叉分类树或二叉回归树,具体取决于问题是分类问题还是回归问题。

基本分类器

对于分类问题,基本分类器是一个简单的二叉分类树,通常称为决策树桩(Decision Stump)。它由一个根节点和两个叶节点组成,通过一个特征的阈值来分割数据。

对于回归问题,基本分类器是一个二叉回归树,它同样使用特征的阈值来预测连续值。

加法模型和前向分步算法

提升树模型采用加法模型,即将多个基函数(这里是决策树)的线性组合作为最终模型。前向分步算法是一种逐步添加基函数的方法,每一步都试图找到最优的决策树来减少残差。

提升树算法

回归问题的提升树算法

回归算法运用的例题:

 

解题如下:

 

Code

from sklearn.ensemble import GradientBoostingRegressor
from sklearn.model_selection import train_test_split
import numpy as np

# 示例数据,X为特征,y为目标变量
X = np.array([[0.5], [1], [2], [3], [4], [5], [6], [7], [8], [9], [10]])
y = np.array([5.56, 5.70, 5.91, 6.40, 6.80, 7.05, 8.90, 8.70, 9.00, 9.05])

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 初始化提升树回归模型
gradient_boosting_regressor = GradientBoostingRegressor(
    n_estimators=100,
    learning_rate=0.1,
    max_depth=3,
    loss='squared_error',  # 使用均方误差作为损失函数
    random_state=42
)

# 训练模型
gradient_boosting_regressor.fit(X_train, y_train)

# 在测试集上进行预测
y_pred = gradient_boosting_regressor.predict(X_test)

# 计算测试集的均方误差
mse = ((y_test - y_pred) ** 2).mean()
print(f"Mean Squared Error: {mse}")

# 可视化提升树模型的性能
import matplotlib.pyplot as plt

plt.scatter(X_train, y_train, label='Training data')
plt.scatter(X_test, y_test, label='Test data')
plt.plot(X, gradient_boosting_regressor.predict(X), color='red', label='Regression Tree')

plt.xlabel('X')
plt.ylabel('y')
plt.legend()
plt.show()

Mean Squared Error: 0.05479278432780284

 

损失函数:

针对不同问题的提升树学习算法,使用的损失函数不同:

1.用指数损失函数的分类问题。

2.用平方误差损失函数的回归问题。

3.用一般损失函数的一般决策问题。

对二类分类问题:提升树算法只需将AdaBoost算法中的基本分类器限制为二类分类树即可,这时的提升树算法是AdaBoost算法的特殊情况。

提升树的优点

  1. 高准确性:通过逐步优化,提升树能够构建出高精度的模型。

  2. 灵活性:提升树可以处理各种类型的数据分布,无论是线性还是非线性。

  3. 鲁棒性:集成多个决策树可以减少模型对异常值和噪声的敏感性。

  4. 易于实现:提升树算法容易理解和实现,且有现成的库支持。

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

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

相关文章

我的世界 java 1.21 版本中 function 命令介绍使用教程

仅限java中的1.21版本 一、函数文件位置二、创建配置和函数文件1.函数名称.mcfunction2.pack.mcmeta【默认文件】 三、加载执行函数1.刷新数据包,重新加载2.查询数据包加载情况3.执行函数 四、特别感谢 特别注意,在1.21版本中function目录名没有s&#x…

Katalon Studio 使用教程(小白快速入门版)

如果你还没有安装,可以点击下方安装教程链接,里面有详细的安装链接与教程: Katalon Studio 保姆级安装教程-CSDN博客 安装好后,应当是这样的界面。本篇从安装好后开始讲。 katalon的使用很简单,三步就能实现一个完整的…

网络原理(2)——封装和分用

1. 数据在网络通信中的整体流程:封装和分用 例子:通过 QQ 发送一个 hello 给另一个人 a) 发送方视角 1. 用户在输入框中输入 “hello” 字符串,点击发送按钮 QQ 这样的程序就会把 hello 这个内容从输入框读取到,并构造成一个“…

关于dubbo3.x端口绑定22222报错问题

目录 1.报错信息如下 2.由于每个dubbo应用注册的时候都当做一个qos-server ,有一个固定的端口号,默认是22222, 不同应用需要设置不同的端口号 3.在application.yml,或者在application.properties指定就好了(修改qos…

PUMA论文阅读

PUMA: Efficient Continual Graph Learning with Graph Condensation PUMA:通过图压缩进行高效的连续图学习 ABSTRACT 在处理流图时,现有的图表示学习模型会遇到灾难性的遗忘问题,当使用新传入的图进行学习时,先前学习的这些模…

Redis6-秒杀

目录 全局唯一ID 实现优惠券秒杀下单 超卖问题 一人一单 全局唯一ID 全局ID生成器,是一种在分布式系统下用来生成全局唯一ID的工具,一般要满足下列特性: 为了增强ID的安全性,不直接使用Redis自增的数值,而是拼接一…

告别数据丢失烦恼,转转数据恢复和另外三款工具助你一臂之力!

不知道大伙儿有没有和我一样,到哪都喜欢拍照片和视频,加上办公上也是七七八八的各种格式的文件实在是多,所以电脑和手机等等设备上经常内存爆满需要清理,难免会出现不小心误删或者格式化、清空等等的情况,用过几款和转…

微服务实现-sleuth+zipkin分布式链路追踪和nacos配置中心

1. sleuthzipkin分布式链路追踪 在大型系统的微服务化构建中,一个系统被拆分成了许多微服务。这些模块负责不同的功能,组合成系统,最终可以提供丰富的功能。 这种架构中,一次请求往往需要涉及到多个服务。互联网应用构建在不同的软…

嵌入式day22

getpwuid 通过uid 获取用户名 uid 用户uid 返回值: 成功 返回用户名 失败 NULL getgrgid 通过gid 获取组名 gid 组名gid 返回值: 成功 返回组名 失败 NULL 1、获取秒数 2、转换为需要的格式 time 获得1970年到现在的秒数(系统时间…

IEC103设备数据 转 CCLink IE Field Basic项目案例

目录 1 案例说明 1 2 VFBOX网关工作原理 1 3 准备工作 2 4 配置VFBOX网关采集103设备数是 2 5 使用CCLINK协议转发数据 4 6 三菱PLC连接网关的CCLINK的设置 5 7 IEC103协议说明 9 8 案例总结 10 1 案例说明 设置网关采集IEC103设备数据把采集的数据转成CCLink IE Field Basic…

UDP服务器实现

目录 一、服务端创建 1.1、创建套接字 1.2、端口绑定 1.3、sockaddr_in结构体 1.4、字符串IP和整数IP说明 1.5、绑定好端口号的服务端代码 1.6、服务端代码 二、客户端创建 2.1、关于客户端的绑定问题 2.2、客户端代码 一、服务端创建 首先明确,这个简单…

ThinkPad T14p Gen1(21J7,21N3)原厂Windows11系统镜像下载

LENOVO联想ThinkPad 系列笔记本电脑原装出厂Win11系统安装包,恢复出厂开箱状态预装OEM系统 适用型号:T14p Gen1【21J7,21N3】 链接:https://pan.baidu.com/s/1bLHdQoQ9zsAeZgd4c0ie4A?pwdxps2 提取码:xps2 联想原装WIN系统自…

QT 布局管理器之QHBoxLayout

文章目录 概述.ui来看看Cmain.cpp运行 小结 概述 QHBoxLayout,在QT中是一个布局文件,而且相对来说还是比较简单的。接下来看下。 .ui 先看下在qt design中是如何用的,如下图: 就是这个布局文件,是一个xml的文件&am…

Redis之golang编程实战

Redis 介绍 官网:Redis - The Real-time Data Platform Redis 可作为数据库、缓存、流引擎和消息代理的开源内存数据存储。被用在不计其数的应用中。Redis 连续 5 年被评为最受欢迎的数据库,是开发人员、架构师和开源贡献者参与社区的中心。 Redis 是…

苹果计划推出付费版Apple Intelligence AI服务,费用高达20美元

本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点 苹果计划推出付费版Apple Intelligence AI服务 苹果公司正在计划推出一项新的高级人工智能服务,名为Apple Intelligence&#xff0…

关于嵌套循环之深入理解

关于嵌套循环之深入理解 # 外层循环遍历第一维(深度) for depth in range(len(cube)):# 中层循环遍历第二维(行)for row in range(len(cube[depth])):# 内层循环遍历第三维(列)for col in range(len(cube[d…

秒懂C++之进程状态及优先级

目录 一.进程状态 1.1 进程排队 1.2 进程状态 运行状态 阻塞状态 挂起状态 二.Linux环境下的进程状态 R运行状态 S睡眠状态 D磁盘休眠状态 T停止状态 X死亡状态 Z僵尸进程状态 三.进程优先级 基本概念 查看系统进程 用top命令更改已存在进程的nice 一.进程状态…

【数据结构】十大排序全面分析讲解及其对比分析(排序看懂就这篇!)

【数据结构】十大排序全面分析讲解及其对比分析 🔥个人主页:大白的编程日记 🔥专栏:数据结构 文章目录 【数据结构】十大排序全面分析讲解及其对比分析前言一.排序的概念及其运用1.1排序的概念1.2排序的应用 二.插入排序2.1 插入…

Gather:开启绝密社交和收益双重惊喜之旅

在数字时代,我们的隐私信息面临着严重的泄露风险,保护个人隐私变得尤为重要。基于区块链加专利硬件技术,Gather成为全球唯一实现真正绝密社交的DePIN社交产品,带来了划时代的社交体验。而其硬件产品G-BOX,不仅是你的隐…

Vercel Error: (Azure) OpenAI API key not found

题意:Vercel 错误:(Azure) OpenAI API 密钥未找到 问题背景: I implemented openAI API in my Next.js app with the help of langchain library and it works superb on localhost, but in Vercel (ProVersion) it throws an error: 我使用…