Bootstrap简介Bootstrap方法是非常有用的一种统计学上的估计方法,是斯坦福统计系的教授Bradley Efron(我曾有幸去教授办公室约谈了一次)在总结、归纳前人研究成果的基础上提出一种新的非参数统计方法。Bootstrap是一类非参数Monte Carlo方法,其实质是对观测信息进行再抽样,进而对总体的分布特性进行统计推断。

因为该方法充分利用了给定的观测信息,不需要模型其他的假设和增加新的观测,并且具有稳健性和效率高的特点。1980年代以来,随着计算机技术被引入到统计实践中来,此方法越来越受欢迎,在机器学习领域应用也很广泛。

首先,Bootstrap通过重抽样,可以避免了Cross-Validation造成的样本减少问题,其次,Bootstrap也可以用于创造数据的随机性。比如,我们所熟知的随机森林算法第一步就是从原始训练数据集中,应用bootstrap方法有放回地随机抽取k个新的自助样本集,并由此构建k棵分类回归树。

具体讲解

下面我们用一个例子具体介绍bootstrap的原理和用法:

假设我们有两个金融资产X和Y,我们现在想要合理配置这两个资产,使得其资产组合的风险最小。也就是找到一个

,使得

最小。这个问题几十年前马尔可维茨已经在其投资组合理论里给出了解答,最优的

表达式如下:

但是现实生活中实际上我们并不知道

,

以及

的值,故而只能通过X和Y的一系列样本对其进行估计。并用估计值

,

以及

代替

,

以及

插入公式:

所以我们唯一的任务就是合理地估计

,

以及

,传统方法中我们一般会考虑直接使用样本方差(sample variance)去估计

,

以及

的值,然而自从有了Bootstrap之后,我们有了另一种方法与途径,可以更好地去做估计总体的分布特性,即不仅可以估计

,还可以估计

的方差、中位数等值。下面就讲讲Bootstrap究竟是如何做到这一点的:

Bootstrap步骤:

1. 在原有的样本中通过重抽样抽取一定数量(比如100)的新样本,重抽样(Re-sample)的意思就是有放回的抽取,即一个数据有可以被重复抽取超过一次。

2. 基于产生的新样本,计算我们需要估计的统计量。

在这例子中,我们需要估计的统计量是

,那么我们就需要基于新样本的计算样本方差、协方差的值作为

,

以及

,然后通过上面公式算出一个

3. 重复上述步骤n次(一般是n>1000次)。

在这个例子中,通过n次(假设n=1000),我们就可以得到1000个

。也就是

4. 最后,我们可以计算被估计量的均值和方差(不用关注最后的具体数值,这与原本的样本有关):

我们发现,通过Bootstrap方法我们竟然不仅可以估计

的值( 这点普通方法也可以很容易做到),还可以估计

的accuracy也就是其Standard Error。这可是只利用原有的样本进行一次估计所做不到的。那么Bootstrap对于分布特性的估计效果究竟如何呢?请看下图:

左边是真实的

分别,右边则是基于bootstrap方法得到的1000个

的分布,可以看到,二者是比较相近的,也就是说Bootstrap有着不错的估计效果。而且当重复次数增多,Bootstrap的估计效果会更好。

不仅是

的标准差,如果我们想要估计

的中位数、分位数等统计量,也是可以通过Boostrap方法做到的,其整个流程可以用下面一张图诠释:

本质上,Bootstrap方法,是将一次的估计过程,重复上千次上万次,从而便得到了得到上千个甚至上万个的估计值,于是利用这不止一个的估计值,我们就可以估计

均值以外的其他统计量:比如标准差、中位数等。

本文部分图片来源:《An Introduction to Statistical Learning with Applications in R》

说在后面

关于机器学习的内容还未结束,请持续关注该专栏的后续文章。

或者关注我的知乎账号:温如

python bootstrap 中位数_【机器学习】Bootstrap详解相关推荐

  1. python popen阻塞_对Python subprocess.Popen子进程管道阻塞详解

    问题产生描述 使用子进程处理一个大的日志文件,并对文件进行分析查询,需要等待子进程执行的输出结果,进行下一步处理. 出问题的代码 # 启用子进程执行外部shell命令 def __subprocess ...

  2. python平方数迭代器_对python中的高效迭代器函数详解

    python中内置的库中有个itertools,可以满足我们在编程中绝大多数需要迭代的场合,当然也可以自己造轮子,但是有现成的好用的轮子不妨也学习一下,看哪个用的顺手~ 首先还是要先import一下: ...

  3. python流获取控制台_对Python捕获控制台输出流的方法详解

    有时候我们的代码里可能要调用控制台命令,比如我想用Python写一个批量编译 .java 文件的脚本,用到如下代码 常规用法 os.system import os,traceback try: p ...

  4. python医学图像读取_对python读取CT医学图像的实例详解

    需要安装OpenCV和SimpleItk. SimpleItk比较简单,直接pip install SimpleItk即可. 代码如下: #coding:utf-8 import SimpleITK ...

  5. python中累加函数_对Python实现累加函数的方法详解

    对Python实现累加函数的方法详解 发布时间:2020-10-26 00:02:44 来源:脚本之家 阅读:120 作者:岚漾忆雨 这个需求比较奇怪,要求实现Sum和MagaSum函数,实现以下功能 ...

  6. 怎样用python生成中文字符画_如何利用Python实现图片转字符画详解

    本篇文章主要介绍了Python实现图片转字符画的示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 字符画真的很有意思,将图片中的像素用字符代替,就生成了字符画. 但是像 ...

  7. python二维图颜色函数_通过python改变图片特定区域的颜色详解

    通过python改变图片特定区域的颜色详解 首先让我祭出一张数学王子高斯的照片,这位印在德国马克上的神人有多牛呢? 他是近代数学的奠基人之一,与牛顿, 阿基米德并称顶级三大数学家,随便找一个编程语言的 ...

  8. python3占位符详解_占位符最新:Python 占位符的使用方法详解_爱安网 LoveAn.com

    关于"占位符"的最新内容 聚合阅读 这篇文章主要介绍了Python 占位符的使用方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以 ...

  9. 使用pickle保存机器学习模型详解及实战(pickle、joblib)

    使用pickle保存机器学习模型详解及实战 pickle模块实现了用于序列化和反序列化Python对象结构的二进制协议. "Pickling"是将Python对象层次结构转换为字节 ...

  10. python镜像下载包_python包详解

    干货大礼包!21天带你轻松学Python(文末领取更多福利) 点击查看课程视频地址 本课程来自于千锋教育在阿里云开发者社区学习中心上线课程<Python入门2020最新大课>,主讲人姜伟. ...

最新文章

  1. [zz]mysql 和 mongo db 语法对比
  2. 2017.6.26小学期1
  3. Navicat工具安装及建表语句
  4. 【三维深度学习】多视角场景点云重建模型PointMVS
  5. 如何让你的手机比别人最先升级到 Android L
  6. 关于pytorch里面的图像变换
  7. UI设计干货模板|引导网格系统
  8. mysql防止误操作之prompt命令提示符
  9. python实现排序算法 整理
  10. spring事务失效二:业务代码捕获异常
  11. cad卸载_CAD绘图效率太低?1GCAD逆天插件送给你,用了再也不卸载
  12. 在Windows下配置svn服务端钩子程序
  13. Convert to RINEX安装及简单使用
  14. 微信小程序开发 - 起步
  15. spring boot 2.x 拦截器
  16. 内核ppp编制和错误分析
  17. 知我者谓我心忧 不知我者谓我何求
  18. MySQL单表数据量大优化方案及注意事项
  19. 华为交换机配置基础命令
  20. 全球地形起伏模型ETOPO1

热门文章

  1. 大数据体系的4个热点4个趋势,还有3个疑问
  2. 龙蜥操作系统(Anolis OS)正式登陆阿里云公共云
  3. php原始 实现双向队列,用PHP实现一个双向队列
  4. 【危险品识别】基于matlab颜色直方图危险品识别【含Matlab源码 470期】
  5. 【图像分割】基于matlab直觉模糊C均值聚类图像分割IFCM【含Matlab源码 120期】
  6. 仅使用Python代码从零开始进行Logistic回归
  7. php wecp 启动_U-boot启动详解
  8. 用scikit-learn和pandas学习线性回归,XGboost算法实例,用MSE评估模型
  9. C++赋值运算符重载函数(operator=)
  10. 用技术——设计模式22——行为型模式——模板模式——待补充