python bootstrap 中位数_【机器学习】Bootstrap详解
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详解相关推荐
- python popen阻塞_对Python subprocess.Popen子进程管道阻塞详解
问题产生描述 使用子进程处理一个大的日志文件,并对文件进行分析查询,需要等待子进程执行的输出结果,进行下一步处理. 出问题的代码 # 启用子进程执行外部shell命令 def __subprocess ...
- python平方数迭代器_对python中的高效迭代器函数详解
python中内置的库中有个itertools,可以满足我们在编程中绝大多数需要迭代的场合,当然也可以自己造轮子,但是有现成的好用的轮子不妨也学习一下,看哪个用的顺手~ 首先还是要先import一下: ...
- python流获取控制台_对Python捕获控制台输出流的方法详解
有时候我们的代码里可能要调用控制台命令,比如我想用Python写一个批量编译 .java 文件的脚本,用到如下代码 常规用法 os.system import os,traceback try: p ...
- python医学图像读取_对python读取CT医学图像的实例详解
需要安装OpenCV和SimpleItk. SimpleItk比较简单,直接pip install SimpleItk即可. 代码如下: #coding:utf-8 import SimpleITK ...
- python中累加函数_对Python实现累加函数的方法详解
对Python实现累加函数的方法详解 发布时间:2020-10-26 00:02:44 来源:脚本之家 阅读:120 作者:岚漾忆雨 这个需求比较奇怪,要求实现Sum和MagaSum函数,实现以下功能 ...
- 怎样用python生成中文字符画_如何利用Python实现图片转字符画详解
本篇文章主要介绍了Python实现图片转字符画的示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 字符画真的很有意思,将图片中的像素用字符代替,就生成了字符画. 但是像 ...
- python二维图颜色函数_通过python改变图片特定区域的颜色详解
通过python改变图片特定区域的颜色详解 首先让我祭出一张数学王子高斯的照片,这位印在德国马克上的神人有多牛呢? 他是近代数学的奠基人之一,与牛顿, 阿基米德并称顶级三大数学家,随便找一个编程语言的 ...
- python3占位符详解_占位符最新:Python 占位符的使用方法详解_爱安网 LoveAn.com
关于"占位符"的最新内容 聚合阅读 这篇文章主要介绍了Python 占位符的使用方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以 ...
- 使用pickle保存机器学习模型详解及实战(pickle、joblib)
使用pickle保存机器学习模型详解及实战 pickle模块实现了用于序列化和反序列化Python对象结构的二进制协议. "Pickling"是将Python对象层次结构转换为字节 ...
- python镜像下载包_python包详解
干货大礼包!21天带你轻松学Python(文末领取更多福利) 点击查看课程视频地址 本课程来自于千锋教育在阿里云开发者社区学习中心上线课程<Python入门2020最新大课>,主讲人姜伟. ...
最新文章
- [zz]mysql 和 mongo db 语法对比
- 2017.6.26小学期1
- Navicat工具安装及建表语句
- 【三维深度学习】多视角场景点云重建模型PointMVS
- 如何让你的手机比别人最先升级到 Android L
- 关于pytorch里面的图像变换
- UI设计干货模板|引导网格系统
- mysql防止误操作之prompt命令提示符
- python实现排序算法 整理
- spring事务失效二:业务代码捕获异常
- cad卸载_CAD绘图效率太低?1GCAD逆天插件送给你,用了再也不卸载
- 在Windows下配置svn服务端钩子程序
- Convert to RINEX安装及简单使用
- 微信小程序开发 - 起步
- spring boot 2.x 拦截器
- 内核ppp编制和错误分析
- 知我者谓我心忧 不知我者谓我何求
- MySQL单表数据量大优化方案及注意事项
- 华为交换机配置基础命令
- 全球地形起伏模型ETOPO1
热门文章
- 大数据体系的4个热点4个趋势,还有3个疑问
- 龙蜥操作系统(Anolis OS)正式登陆阿里云公共云
- php原始 实现双向队列,用PHP实现一个双向队列
- 【危险品识别】基于matlab颜色直方图危险品识别【含Matlab源码 470期】
- 【图像分割】基于matlab直觉模糊C均值聚类图像分割IFCM【含Matlab源码 120期】
- 仅使用Python代码从零开始进行Logistic回归
- php wecp 启动_U-boot启动详解
- 用scikit-learn和pandas学习线性回归,XGboost算法实例,用MSE评估模型
- C++赋值运算符重载函数(operator=)
- 用技术——设计模式22——行为型模式——模板模式——待补充