原理透析

确认了有多少棵树之后,我们来思考一个问题:建立了众多的树,怎么就能够保证模型整体的效果变强呢?集成的目的是为了模型在样本上能表现出更好的效果,所以对于所有的提升集成算法,每构建一个评估器,集成模型的效果都会比之前更好。也就是随着迭代的进行,模型整体的效果必须要逐渐提升,最后要实现集成模型的效果最优。要实现这个目标,我们可以首先从训练数据上着手。


我们训练模型之前,必然会有一个巨大的数据集。我们都知道树模型是天生过拟合的模型,并且如果数据量太过巨大,树模型的计算会非常缓慢,因此,我们要对我们的原始数据集进行有放回抽样(bootstrap)。有放回的抽样每次只能抽取一个样本,若我们需要总共N个样本,就需要抽取N次。每次抽取一个样本的过程是独立的,这一次被抽到的样本会被放回数据集中,下一次还可能被抽到,因此抽出的数据集中,可能有一些重复的数据。

无论是Bagging还是Boosting的集成算法中,有放回抽样都是防止过拟合,让单一弱分类器变得更轻量的必要操作。实际应用中,每次抽取50%左右的数据就能够有不错的效果了。sklearn的随机森林类中也有名为boostrap的参数来帮助我们控制这种随机有放回抽样。同时,这样做还可以保证集成算法中的每个弱分类器(每棵树)都是不同的模型,基于不同的数据建立的自然是不同的模型,而集成一系列一模一样的弱分类器是没有意义的。在梯度提升树中,我们每一次迭代都要建立一棵新的树,因此我们每次迭代中,都要有放回抽取一个新的训练样本。不过,这并不能保证每次建新树后,集成的效果都比之前要好。因此我们规定,在梯度提升树中,每构建一个评估器,都让模型更加集中于数据集中容易被判错的那些样本。来看看下面的这个过程。

首先我们有一个巨大的数据集,在建第一棵树时,我们对数据进行初次又放回抽样,然后建模。建模完毕后,我们对模型进行一个评估,然后将模型预测错误的样本反馈给我们的数据集,一次迭代就算完成。紧接着,我们要建立第二棵决策树,于是开始进行第二次又放回抽样。但这次有放回抽样,和初次的随机有放回抽样就不同了,在这次的抽样中,我们加大了被第一棵树判断错误的样本的权重。也就是说,被第一棵树判断错误的样本,更有可能被我们抽中。基于这个有权重的训练集来建模,我们新建的决策树就会更加倾向于这些权重更大的,很容易被判错的样本。建模完毕之后,我们又将判错的样本反馈给原始数据集。下一次迭代的时候,被判错的样本的权重会更大,新的模型会更加倾向于很难被判断的这些样本。如此反复迭代,越后面建的树,越是之前的树们判错样本上的专家,越专注于攻克那些之前的树们不擅长的数据。对于一个样本而言,它被预测错误的次数越多,被加大权重的次数也就越多。我们相信,只要弱分类器足够强大,随着模型整体不断在被判错的样本上发力,这些样本会渐渐被判断正确。如此就一定程度上实现了我们每新建一棵树模型的效果都会提升的目标。

参数设置

参数含义
xgb.train()
随机抽样的时候抽取的样本比例,范围(0,1]
subsample,默认1
除了让模型更加集中于那些困难样本,采样还会减少样本数量,而从学习曲线来看样本数量越少模型的过拟合会越严重,因为对模型来说,数据量越少模型学习越容易,学到的规则也会越具体越不适用于测试样本。所以subsample参数通常是在样本量本身很大的时候来调整和使用。

有放回随机抽样:重要参数subsample相关推荐

  1. android随机抽奖代码_用Excel实现不放回随机抽样

    所谓随机抽样,简单理解,顾名思义就是从总体中随机抽取几个或几组个体.现实中常见的例子由抽奖.抽查.数据随机分组等. 它又可分为放回随机抽样和不放回随机抽样.不放回随机抽样是指每次随机取个体后不放回总体 ...

  2. 依概率不放回随机抽样算法

    起因 前段时间帮同学写了下ER网络和BA网络. 其中BA网络要根据度占整个图的度的比例作为概率. 于是就写了个按概率随机抽数的函数pick. 思路 当时想法很简单.就是把数轴分成几块,再随机抽点. 比 ...

  3. pandas对dataframe的数据行进行随机抽样(Random Sample of Rows):使用sample函数进行数据行随机抽样(有放回的随机抽样,replacement)

    pandas对dataframe的数据行进行随机抽样(Random Sample of Rows):使用sample函数进行数据行随机抽样(有放回的随机抽样,replacement) 目录

  4. pandas对dataframe的数据列进行随机抽样(Random Sample of Columns):使用sample函数进行数据列随机抽样(有放回的随机抽样,replacement)

    pandas对dataframe的数据列进行随机抽样(Random Sample of Columns):使用sample函数进行数据列随机抽样(有放回的随机抽样,replacement) 目录

  5. python不放回抽样_PYTHON :有(无)放回简单随机抽样

    模拟概率论中的无放回简单随机抽样问题. 问题:从1,2,3,4,5中无放回的抽取三个数字,组成一个三位数,并输出. 顺序编程,易理解 import random ## 1.目标数字集合 number_ ...

  6. python 有放回随机抽取_Python 随机抽样

    # -*- coding: utf-8 -*- import numpy import pandas data = pandas.read_csv( 'D:\\PDA\\4.9\\data.csv' ...

  7. 放回不等概率抽样-PPS抽样

    放回不等概率抽样-PPS抽样 一.数据描述 二.整群抽样 1. 抽样 (1)调用inclusionprobabilities函数定义每个总体单元的入样概率,第一个参数定义规模变量,第二个参数定义样本容 ...

  8. VBA小模板,一个不放回的抽奖用的例子

    1 问题 一个不放回的抽奖用VBA怎么写,下面用一个类似对对碰/ 翻牌子的游戏(抽到的奖励不放回,可抽的东西越来越少)来举例说明 1.1 首先要回顾下几个经典的随机模型 古典概型,重点就是每次抽奖的各 ...

  9. VBA小模板:一个奖励放回的普通抽奖用VBA怎么写?

    前言: 1 为什么要写这些VBA小模板 因为1这些是小的完整的解决某一问题的代码, 2是因为感觉以前每次都是临时遇到要解决才写,而每次写都没提高,缺少积累,总结和对比,确实需要反思总结后才可以提高, ...

最新文章

  1. Python自动化运维之函数进阶
  2. 如何用openvr api打开vive前置摄像头
  3. STO双中心势能积分
  4. 记一次中台数据传输同步Elasticsearch失败的车祸现场
  5. 获取html滚动条位置,pc和移动端获取滚动条的位置
  6. 【每日一题】7月16日题目精讲—点权和
  7. (JAVA)Integer类之基本数据类型之间的转换
  8. 解决若要安装 Microsoft Office 2010,需要MSXML 版本 6.10.1129的问题
  9. ISTQB高级国际认证试题及答案(一)
  10. mui HTML5 plus 下载文件
  11. jQuery模拟下拉框单选框复选Select,Checkbox,Radio
  12. oracle查看session阻塞,oracle查询blocking session阻塞情况
  13. canvas换图时候会闪烁_基于Canvas实现的高斯模糊(上)「JS篇」
  14. mysql join不加关联条件的含义
  15. 通过cmd命令行开启计算机xx服务
  16. 软件开发需求文档案例_第2部分:开发软件需求,一个案例研究
  17. STM32 DCMI OV9655 直接在LCD显示
  18. 【路径规划】基于改进粒子群实现机器人栅格地图路径规划
  19. 360极速浏览器打不开国内网站的一种解决方法
  20. 在Ubuntu12.04部署OpenStack (1)

热门文章

  1. memcpy 引出的 chunk size 计算与内存对齐
  2. 压强与浮力·复习整理
  3. 前端背景图片模糊较好的办法
  4. U192221 决断(北大附中2022新春公开赛T3)
  5. qgraphicsscene 鼠标画直线_游戏鼠标的进阶玩法,驱动深入打磨
  6. 使用git时,不想提交本地代码并切换分支是如何操作?
  7. Integer的MIN_VALUE
  8. 插件ThinBackup备份与迁移jenkins
  9. 理财-力哥七部定投法
  10. 上海的朋友有没有发现?诡异!