xgboost:防止过拟合的方法收缩和特征列、采样

news2024/11/19 11:21:55

xgboost除了第2.1节中提到的正则化目标之外,还使用了另外两种技术来进一步防止过拟合1

目录

    • shrinkage[^1]
    • Column Subsampling[^2]

shrinkage2

第一种技术是由弗里德曼提出的收缩。在树提升的每一步之后,收缩率以η因子的比例缩放新添加的权重。与随机优化中的学习率类似,收缩减少了每棵树的影响,并为未来的树留下了改进模型的空间。

在论文2中有描述:

The “shrinkage” parameter 0 < v ⩽ 1 0<v\leqslant1 0<v1 controls the learning rate of the procedure. Empirically (Friedman, 1999), it was found that small values ( ν ⩽ 0.1 ) (\nu\leqslant0.1) (ν0.1) lead to much better generalization error.

shrinkage参数一般设置在 0 < v ⩽ 1 0<v\leqslant1 0<v1范围内,Empirically (Friedman, 1999)发现小的值 ( ν ⩽ 0.1 ) (\nu\leqslant0.1) (ν0.1)使得有更好的泛化性能;
F m ( x ) = F m − 1 ( x ) + v ⋅ γ l m 1 ( x ∈ R l m ) . F_m(\mathbf{x)=}F_{m-1}(\mathbf{x})+v\cdot\gamma_{lm}1(\mathbf{x}\in R_{lm}). Fm(x)=Fm1(x)+vγlm1(xRlm).
F m ( x ) F_m(x) Fm(x):模型表达式,例如递归树;

γ l m \gamma_{lm} γlm:前面的模型最小损失累加,例如递归树的损失:
γ l m = arg ⁡ min ⁡ γ ∑ x i ∈ R l m Ψ ( y i , F m − 1 ( x i ) + γ ) . \gamma_{l m}=\arg\min\limits_\gamma\sum_{\mathbf{x}_i\in R_{l m}}\Psi(y_i,F_{m-1}(\mathbf{x}_i)+\gamma). γlm=argγminxiRlmΨ(yi,Fm1(xi)+γ).
Ψ \Psi Ψ:损失函数,例如平方误差损失;

Column Subsampling3

第二种技术是列(特征)子采样。该技术在RandomForest[4,13]中使用,它在商业软件TreeNet 4中实现,用于梯度增强,但在现有的开源包中没有实现。根据用户反馈,使用列子采样比传统的行子采样(也支持)更能防止过拟合。列子采样的使用也加快了后面描述的并行算法的计算速度。

Breiman, L.的随机森林算法论文中的特征采样方法和实验:

最简单的具有随机特征的随机森林是通过在每个节点随机选择一小组输入变量进行分割而形成的。使用CART方法将树生长到最大尺寸,不要修剪。用Forest-RI表示这个过程。组的大小F是固定的,我们尝试了F的两个值。第一种方法只使用了一个随机选择的变量,即F = 1。第二种选择F是第一个小于 l o g 2 ( M + 1 ) log_2(M + 1) log2(M+1)的整数,其中M是输入的数量。

注:实验方法是使用来自UCI存储库的13个较小的数据集,3个较大的数据集,分别分为训练集和测试集,以及4个合成数据集。选择前10组是因为在过去的研究中使用过它们。表1给出了一个简要的总结。

Breiman, L.在13个较小的数据集上,使用以下程序:随机留出10%的数据。在剩下的数据上,随机森林运行两次,生长并组合100棵树——第一次是 F = 1 F = 1 F=1,第二次是 F = i n t ( l o g 2 ( M + 1 ) ) F = int(log_2(M +1)) F=int(log2(M+1))。然后将留出的10%进行两个随机森林模型推理,以获得两者的测试集误差。所选的测试集误差对应于两次运行中out-of-bag估计的较低值。并且重复100次,测试集误差取平均值。

在随机森林中,使用特征随机选择的方式得到的结果如下。

在这里插入图片描述

参考:


  1. XGBoost: A Scalable Tree Boosting System ↩︎

  2. Friedman, J. H. (2002). Stochastic gradient boosting. Computational Statistics & Data Analysis, 38(4), 367–378. doi:10.1016/s0167-9473(01)00065-2 ↩︎ ↩︎

  3. Breiman, L. (2001). Machine Learning, 45(1), 5–32. doi:10.1023/a:1010933404324 ↩︎

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

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

相关文章

Scrapy框架(高效爬虫)

文章目录一、环境配置二、创建项目三、scrapy数据解析四、基于终端指令的持久化存储1、基于终端指令2、基于管道3、数据同时保存至本地及数据库4、基于spider爬取某网站各页面数据5、爬取本页和详情页信息&#xff08;请求传参&#xff09;6、图片数据爬取ImagesPipeline五、中…

IP欺骗种类有哪些?

每台计算机都有一个IP地址&#xff0c;发送的任何数据都被分成许多块&#xff08;“数据包”&#xff09;&#xff0c;每个数据包单独传输&#xff0c;当这些数据包到达链的末端时&#xff0c;就会重新组装并作为一个整体呈现。此外&#xff0c;每个数据包还有其可识别信息&…

4、High-Resolution Image Synthesis with Latent Diffusion Models

简介github地址diffusion model明显的缺点是耗费大量的时间、计算资源&#xff0c;为此&#xff0c;论文将其应用于强大的预训练自编码器的潜在空间 &#xff0c;这是首次允许在复杂性降低和细节保存之间达到一个近乎最佳的点&#xff0c;极大地提高了视觉保真度。通过在模型架…

操作系统复习题

什么是线程&#xff1f; 线程&#xff08;Thread&#xff09;&#xff1a;轻量级进程&#xff0c;是操作系统进行调度的最小单位。一个线程是一个任务&#xff08;一个程序段&#xff09;的一次执行过程。线程不占有内存空间&#xff0c;它包括在进程的内存空间中。在同一个进程…

自然语言处理历史最全预训练模型(部署)汇集分享

什么是预训练模型&#xff1f;预练模型是其他人为解决类似问题而创建的且已经训练好的模型。代替从头开始建立模型来解决类似的问题&#xff0c;我们可以使用在其他问题上训练过的模型作为起点。预训练的模型在相似的应用程序中可能不是100&#xff05;准确的。本文整理了自然语…

踩坑:maven打包失败的解决方式总结

Maven打包失败原因总结如下&#xff1a; 失败原因1&#xff1a;无法使用spring-boot-maven-plugin插件 使用spring-boot-maven-plugin插件可以创建一个可执行的JAR应用程序&#xff0c;前提是应用程序的parent为spring-boot-starter-parent。 需要添加parent的包spring-boot…

QML组件

一个QML文件定义了一个独立的、顶级的QML组件。 一个QML组件就是一个模板&#xff0c;被QML运行环境解释来创建一个带有一些预定义行为的对象。 一个独立的QML组件可以运行多次来禅城多个对象&#xff0c;每个对象都可以称为该组件的实例。 例子&#xff1a; 在项目中添加一…

Redis基础入门

文章目录前言一、redis是什么&#xff1f;二、安装步骤1.下载安装包2.安装三、Redis的数据类型redis是一种高级的key-value的存储系统&#xff0c;其中的key是字符串类型&#xff0c;尽可能满足如下几点&#xff1a;字符串(String)列表(List)集合(Set&#xff0c;不允许出现重复…

MySQL面试题-索引篇

1.什么是索引 MySQL的索引是一种数据结构&#xff0c;可以用于加快数据库中数据的查询速度。索引是基于表中一个或多个列的值排序的快速查找数据结构&#xff0c;可以大大提高查询效率。MySQL支持多种类型的索引&#xff0c;如B-tree索引、哈希索引、全文索引等。 索引可以在…

【java基础】异常处理(Exception)

文章目录基本介绍异常分类抛出异常非检查型异常检查型异常捕获异常捕获单个异常捕获多个异常创建自定义异常类finally字句try-with-Resource总结基本介绍 对于一个程序&#xff0c;总是有bug的。如果我们的程序遇到一个错误就终止了&#xff0c;那么肯定是不合理&#xff0c;程…

数据爬取(urllib+BeautifulSoup)

文章目录知识点总结爬虫步骤爬虫三要素爬虫注意事项python爬取技术学习网页抓取库Urllib网页解析库Beautifulsoup案例知识点总结 爬虫是一种按照一定规则&#xff0c;自动抓取互联网上网页中的相应信息的程序或脚本。 爬虫步骤 1.需求分析 2.找到要爬取信息的网站 3.下载reque…

基于halo后台管理+Gblog-wx搭建的微信小程序

先决条件 1、已经通过docker安装了halo后台管理系统(参考:http://43.136.39.20:8090/archives/halo-build) 2、安装的halo版本为1.5.3版本。此版本的halo才能安装小程序主题并启动小程序 3、需要修改小程序文件配置 解决安装的不是1.5.3的halo 1、如果是docker安装的halo…

蓝牙技术|蓝牙5.4标准正式发布,蓝牙ESL电子价签迎来一波利好

蓝牙技术联盟于2023年1月31日批准了蓝牙核心规范v5.4版本(以下简称蓝牙5.4版本)&#xff0c;并已正式公布。 蓝牙5.4版本引入了四个新特性&#xff0c;如下: 广播数据加密&#xff08;Encrypted Advertising Data&#xff09;&#xff1a;对广播数据进行加密以提高广播数据传…

[神经网络]Swin Transformer网络

一、概述 Swin Transformer是一个用了移动窗口的层级式Vision Transformer。 在图像领域&#xff0c;Transformer需要解决如下两个问题&#xff1a; ①尺度问题&#xff1a;同一语义的物体在图像中有不一样的尺度。(大小不同) ②Resolution过大&#xff1a;若以像素点作为单位&…

利用python写一个gui小公举--环境搭建

文章目录背景搭建环境安装必要库添加工具快捷方式检验背景 在实习过程中遇到一个问题&#xff0c;某项目是通过python代码实现的&#xff0c;而且需要一直修改参数实现功能&#xff0c;过程有些繁琐。虽然师兄用PHP study搭了一个网站用于查看结果&#xff0c;但是还是过于繁琐…

分布式新闻项目实战 - 12.热点文章-实时计算(kafkaStream)

死海效应&#xff1a; 公司发展到一定阶段后&#xff0c;工作能力强的员工&#xff0c;就会离职&#xff0c;因为他无法容忍公司的某些行为&#xff0c;即使辞职也很快会找到好工作&#xff1b;工作能力差的员工&#xff0c;却赖着不走&#xff0c;因为辞职以后也不太好找工作&…

JavaScript实现十大排序算法

目录 概览 一、冒泡排序 1、算法描述 2、图示 3、代码 二、选择排序 1、算法描述 2、图示 3、代码 三、插入排序 1、算法描述 2、图示 ​编辑 3、代码 四、希尔排序 1、算法描述 2、图示 3、代码 五、并归排序 1、算法描述 2、图示 ​编辑​编辑3、代码 …

食品与疾病关系预测赛题

和鲸平台数据分析实战 题目&#xff1a;食品与疾病关系预测算法赛道 一、赛题描述 食品与疾病关系预测算法赛道 越来越多的证据表明&#xff0c;食物分子与慢性疾病之间存在关联甚至治疗关系。营养成分可能直接或间接地作用于人类基因组&#xff0c;并调节参与疾病风险和疾病…

php结课报告--会员注册管理系统

目录 1&#xff0e; 系统背景及意义 1 2&#xff0e; 系统的设计思路 1 2.1 数据库设计分析 1 2.2 功能模块设计分析 1 3&#xff0e; 程序功能测试及截图 1 3.1代码测试与功能演示 1 4&#xff0e; 总结与收获 6 1&#xff0e;系统背景及意义 随着现在时代得发展&#xff0c;…

【AI面试】NMS 与 Soft NMS 的辨析

往期文章&#xff1a; AI/CV面试&#xff0c;直达目录汇总【AI面试】L1 loss、L2 loss和Smooth L1 Loss&#xff0c;L1正则化和L2正则化 一、NMS 非极大值抑制&#xff08;Non-Maximum Suppression&#xff0c;NMS&#xff09;&#xff0c;并不是深度学习时期&#xff0c;目标…