6、梯度提升XGBoost(eXtreme Gradient Boosting)

XGBoost梯度提升

结构化数据最精确的建模技术。

在本节课中,我们将学习如何使用梯度增强来构建和优化模型。这种方法在Kaggle的许多竞争中占据主导地位,并在各种数据集上获得了最先进的结果。

本课程所需数据集夸克网盘下载链接:https://pan.quark.cn/s/9b4e9a1246b2 提取码:uDzP

文章目录

  • 1、简介
  • 2、梯度提升
  • 3、举例
  • 4、参数调整
      • 4.1`n_estimators`
      • 4.2早停机制`early_stopping_rounds`
      • 4.3learning_rate`学习率`
      • 4.4`n_jobs`
  • 5、总结

1、简介

我们已经使用随机森林方法进行了预测,该方法仅通过对许多决策树的预测进行平均就可以获得比单个决策树更好的性能。

我们把随机森林方法称为“集成方法”。根据定义,集成方法结合了几种模型的预测(例如,在随机森林的情况下,若干棵树)。

接下来,我们将学习另一种称为梯度增强的集成方法。

2、梯度提升

梯度提升是一种通过循环迭代将模型添加到集成中的方法。

它首先使用单个模型初始化集合,这个模型的预测可能非常天真。(即使它的预测非常不准确,随后增加的集合将解决这些错误。)

然后,我们开始循环:

  • 它首先用一个模型初始化集成,该模型的预测可能相当天真。(即使它的预测非常不准确,后续的补充将解决这些错误。)
  • 然后,我们开始这个循环:首先,我们使用当前集成来为数据集中的每个观察结果生成预测。
  • 为了做出预测,我们将所有模型的预测相加。这些预测用于计算损失函数(例如,均方误差)。
  • 然后,我们使用损失函数来拟合一个将被添加到集成中的新模型。具体地说,我们确定模型参数,以便将这个新模型添加到集成中将减少损失。(注:“梯度增强”中的“梯度”指的是我们将在损失函数上使用梯度下降来确定新模型中的参数。)
  • 最后,我们将新的模型加入到集成中,并且… 重复!
    在这里插入图片描述

3、举例

在本例中,我们将使用XGBoost库。XGBoost是extreme gradient boost的缩写,它是梯度增强的一种实现,还有几个额外的特性侧重于性能和速度。

(Scikit-learn有另一个梯度增强版本,但XGBoost有一些技术优势。)

在下一个代码单元中,我们将导入用于XGBoost (XGBoost . xgbregressor)的scikit-learn API。

这使我们能够像在scikit-learn中一样构建和适应一个模型。正如您将在输出中看到的,XGBRegressor类有许多可调参数——您很快就会了解这些参数!

In [1]:

import pandas as pd
from sklearn.model_selection import train_test_split

# 加载数据
data = pd.read_csv('../input/melbourne-housing-snapshot/melb_data.csv')

# 选择预测子集
cols_to_use = ['Rooms', 'Distance', 'Landsize', 'BuildingArea', 'YearBuilt']
X = data[cols_to_use]

# 选择目标
y = data.Price

# 将数据分成训练集和验证集
X_train, X_valid, y_train, y_valid = train_test_split(X, y)

在本例中,您将使用 XGBoost 库。XgBoost 代表了极限梯度提升,这是一个梯度提升的实现,其中包含了一些侧重于性能和速度的额外特性。(Scikit-learn 有另一个版本的梯度提升,但 XgBoost 有一些技术优势。)

在下一个代码单元中,我们为 XGBoost (XGBoost.XGBRegressor)导入 scikit-learn API。这使我们能够建立和适应一个模型,就像我们在 scikit-learn 中所做的那样。正如您将在输出中看到的,XGBRegressor 类有许多可调参数——您很快就会了解这些参数!

In [2]:

from xgboost import XGBRegressor

my_model = XGBRegressor()
my_model.fit(X_train, y_train)

Out[2]:

XGBRegressor(base_score=0.5, booster='gbtree', callbacks=None,
             colsample_bylevel=1, colsample_bynode=1, colsample_bytree=1,
             early_stopping_rounds=None, enable_categorical=False,
             eval_metric=None, gamma=0, gpu_id=-1, grow_policy='depthwise',
             importance_type=None, interaction_constraints=''

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JavaScript之ES6新特性02

模板字符串 模板字符串(template string)是增强版的字符串,用反引号()标识。它可以当作普通字符串使用,也可以用来定义多行字符串,或者在字符串中嵌入变量 。 模版字符串特点 内容中可以直接…

【机器学习】调配师:咖啡的完美预测

有一天,小明带着一脸期待找到了你这位数据分析大师。他掏出手机,屏幕上展示着一份详尽的Excel表格。“看,这是我咖啡店过去一年的数据。”他滑动着屏幕,“每个月的销售量、广告投入,还有当月的气温,我都记录…

【C++提高编程(二)】

一、STL初识 1.1、STL的诞生 长久以来,软件界一直希望建立一种可重复利用的东西 C的面向对象和泛型编程思想,目的就是复用性的提升 大多情况下,数据结构和算法都未能有一套标准,导致被迫从事大量重复工作 为了建立数据结构和算法的一套标…

如何自学Python:一份详细的指南

📝个人主页:五敷有你 🔥系列专栏:有感而谈⛺️稳中求进,晒太阳 引言 Python是一种广泛使用的高级编程语言,以其简洁明了的语法和强大的功能而受到许多程序员的喜爱。无论是数据分析、网络开发&#…

【教程】React-Native代码规范与加固详解

引言 React Native 是一种跨平台的移动应用开发框架,由 Facebook 推出。它可以让我们使用 JavaScript 和 React 语法编写原生应用,大大提高了移动应用的开发效率。但是,对于开发人员来说,代码规范和安全性也是非常重要的问题。本…

C++ memmove 学习

memmove&#xff0c;将num字节的值从源指向的位置复制到目标指向的内存块。 允许目标和源有重叠。 当目标区域与源区域没有重叠则和memcpy函数功能相同。 宽字符版本是wmemmove&#xff0c;安全版本加_s&#xff1b; #include "stdafx.h" #include<iostream&g…

Eureka使用详解

介绍主要特点主要功能与常用服务注册中心的比较Eureka与Zookeeper的区别和联系Eureka与Nacos的区别与联系Eureka与Consul的区别与联系 安装部署Eureka与CAP理论Eureka实现实时上下线Eureka常用注解Eureka架构模式 介绍 Eureka是一个基于REST的服务&#xff0c;主要用于AWS云中…

rem布局

1.0 rem基础 1.1 em单位(了解) 结论1&#xff1a;1em默认字体大小是16像素 结论2: em这个单位会默认参考父元素字体大小为基准 <head><style>/* 结论1: 1em默认字体大小是16像素结论2: em这个单位会默认参考父元素字体大小为基准*//* html {如果根元素默认字体…

面试2024.1.20

简单介绍下你做的项目。 这个神领物流项目是一个前后端分离的项目&#xff0c;前段他有3个客户端&#xff08;用户端为微信小程序、司机端和快递员端为app&#xff09;一个管理端&#xff08;pc&#xff09;&#xff0c;后端用的技术栈用的是SpringAlibabaCloud、数据库用的是M…

ABC337 A-G

Toyota Programming Contest 2024#1&#xff08;AtCoder Beginner Contest 337&#xff09; - AtCoder 手速五题之后看FG&#xff0c;一看榜G过的比F多...两题都有思路然后先开写了F像是大模拟写了一堆bug&#xff0c;赛后对拍调bug调完疯狂re&#xff0c;发现是对数组双倍操作…

Django开发_14_后台管理及分页器

一、后台管理 &#xff08;一&#xff09;登录 http://127.0.0.1:8000/admin/ &#xff08;二&#xff09;创建超级用户 manage.py createsuperuser &#xff08;三&#xff09;注册模型 admin.py&#xff1a; models [model1&#xff0c;model2&#xff0c;model3 ]ad…

VScode新增设备实现无感接入(不需要输入密码)

VScode远程开发接入设备&#xff0c;默认是需要输入密码的&#xff0c;但是日常开发中刷新就需要重新输入密码&#xff0c;很烦人。配置ssh的RSA密钥后会&#xff0c;就可以直接系统级别验证接入&#xff0c;对开发人员来说验证步骤就透明了&#xff0c;实现无感接入&#xff0…

Object.prototype.toString.call个人理解

文章目录 这段代码的常见用处参考文献&#xff1a; 拆分理解1、Object.prototype.toString小问题参考文献&#xff1a; 2、call函数的作用参考文献 3、继续深入一些&#xff08;这部分内容是个人理解&#xff0c;没有明确文献支撑&#xff09; 这段代码的常见用处 Object.prot…

力扣645.错误的集合

一点一点地刷&#xff0c;慢慢攻克力扣&#xff01;&#xff01; 王子公主请看题 集合 s 包含从 1 到 n 的整数。不幸的是&#xff0c;因为数据错误&#xff0c;导致集合里面某一个数字复制了成了集合里面的另外一个数字的值&#xff0c;导致集合 丢失了一个数字 并且 有一个数…

el-upload中的before-upload不生效

我们先来看看官方对before-upload的定义 before-upload是在上传文件时触发&#xff0c;不是添加文件时触发&#xff0c;添加文件时触发 on-change。 所以如果我们要在添加文件时&#xff0c;对文件的大小和后缀等等进行判断&#xff0c;可以用 on-change 方法来实现。 checkSu…

​WordPress顶部管理工具栏怎么添加一二级自定义菜单?

默认情况下&#xff0c;WordPress前端和后台页面顶部都有一个“管理工具栏”&#xff0c;左侧一般就是站点名称、评论、新建&#xff0c;右侧就是您好&#xff0c;用户名称和头像。那么我们是否可以在这个管理工具栏中添加一些一二级自定义菜单呢&#xff1f; 其实&#xff0c…

史上最全EasyExcel

一、EasyExcel介绍 1、数据导入&#xff1a;减轻录入工作量 2、数据导出&#xff1a;统计信息归档 3、数据传输&#xff1a;异构系统之间数据传输 二、EasyExcel特点 Java领域解析、生成Excel比较有名的框架有Apache poi、jxl等。但他们都存在一个严重的问题就是非常的耗内…

64位ATT汇编语言as汇编ld链接,执行报错Segmentation fault

absCallAndPrintAbsAsLd.s里边的内容如下&#xff1a; .section .datastringToShow:.ascii "The abs of number is %d\n\0" .global _start .section .text _start:pushq %rbpmovq %rsp,%rbpmovq $-5,%rdicall absmovq $stringToShow,%rdimovq %rax,%rsicall printf…

EasyRecovery2024电脑数据恢复工具好不好用?

Ontrack是我们综述中的第一个产品&#xff0c;由于该软件的功效和广度&#xff0c;我认为它完全基于业务。有一个具有基本功能的免费版本和一系列付费版本&#xff0c;不仅可以恢复文件&#xff08;免费版和家庭版&#xff09;&#xff0c;还可以创建磁盘映像/从 CD 和 DVD 恢复…

集美大学“第15届蓝桥杯大赛(软件类)“校内选拔赛 H卯酉东海道

dijk spfa思想 然后你需要存一下每个点 * l种颜色&#xff0c;你开个数组存一下 st[i][j] 为到达i点且到达以后是j颜色的最小距离是否已经确定了 #include<bits/stdc.h> using namespace std; using ll long long; const int N 3e510; struct Edge{ll to,col,w;bool …