文章目录

  • 重抽样方法
    • 交叉验证法
      • 验证集方法
      • k​折交叉验证法
      • 偏差——方差均衡
      • 交叉验证法在分类问题中的应用
    • 自助法

重抽样方法

重抽样方法(resampling method)是一种不可或缺的工具。这种方法通过反复从训练集中抽取样本,然后对每一个样本重新拟合一个感兴趣的模型,来获取关于拟合模型的附加信息。

这里主要讨论两种最常用的重抽样方法,交叉验证法(cross-validation)、自助法( bootstrap)

交叉验证法

测试误差(test error) 是用一种统计学习方法预测在一个新的观测上的响应值所产生的的平均误差。

相比之下,只要将统计学习的方法用于训练观测上,训练误差是很容易计算的。

但是训练误差和测试误差往往有很大的不同,尤其是前者可能严重低估后者。

验证集方法

把可获得的观测集分为两部分:一个训练集(training set)、一个验证集(validation set)或者说保留集(hold-out set)。

模型在训练集上拟合,之后用拟合的模型来预测验证集中观测的响应变量。

结果产生的验证集错误率提供了对于测试错误率的一个估计。在定量响应变量时通常使用MSE进行评估,而在定性(离散)响应变量时使用错误分类率

验证集方法的缺点:

  1. 测试错误率的验证法估计的波动很大,这取决于具体哪些观测被包括在训练集中,哪些被包括在验证集中。
  2. 在验证法中,只有一部分观测——那些被包含在训练集而非验证集中的观测——被用于拟合模型。由于被训练的观测越少,统计方法表现越不好,这意味着,验证集错误率可能会高估在整个数据集上拟合模型所得到的测试错误率。

k​折交叉验证法

这种方法将观测集随机地分成 kkk 个大小基本一致的组,或者说折(fold),第1折作为验证集,然后在剩下 k−1k-1k−1 折上拟合模型。均方误差 MSE1MSE_1MSE1​ 由验证集的观测计算得出。重复这个过程 kkk 次,每一次把不同的观测值作为验证集,得到 kkk 个测试误差的估计:MSE1,MSE2,⋯,MSEkMSE_1,MSE_2,\cdots,MSE_kMSE1​,MSE2​,⋯,MSEk​。kkk 折CV估计由上述求平均得到:
CV(k)=1k∑i=1kMSEiCV_{(k)}=\frac{1}{k}\sum_{i=1}^kMSE_i CV(k)​=k1​i=1∑k​MSEi​
共有 nnn 个观测值,第 iii 类记为 CiC_iCi​,其中有 nin_ini​ 个观测值:ni=n/kn_i=n/kni​=n/k:
CV(k)=∑i=1kninMSEi其中,MSEi=∑j∈Ci(yj−yj^)2/niCV_{(k)}=\sum_{i=1}^k\frac{n_i}{n}MSE_i\\其中 ,MSE_i=\sum_{j\in C_i}(y_j-\hat{y_j})^2/n_i CV(k)​=i=1∑k​nni​​MSEi​其中,MSEi​=j∈Ci​∑​(yj​−yj​^​)2/ni​
yj^\hat{y_j}yj​^​ 是第 jjj 个观测值的拟合值,通过去除第 iii 类的数据集得到。

当 k=nk=nk=n 时,即为留一交叉验证法(LOOCV)
CV(n)=1n∑i=1nMSEiCV_{(n)}=\frac{1}{n}\sum_{i=1}^nMSE_i CV(n)​=n1​i=1∑n​MSEi​
用最小二乘法来拟合线性或者多项式回归模型时,LOOCV方法所花费的时间将被神奇地缩减至与只拟合一个模型相同:
CV(n)=1n∑i=1n(yi−y^i1−hi)2CV_{(n)}=\frac{1}{n}\sum_{i=1}^n(\frac{y_i-\hat{y}_i}{1-h_i})^2 CV(n)​=n1​i=1∑n​(1−hi​yi​−y^​i​​)2
其中 y^i\hat{y}_iy^​i​ 为用最小二乘拟合的第 iii 个拟合值,hih_ihi​ 为杠杆值,1/n<hi<11/n<h_i<11/n<hi​<1。

但是,每一折的估计都是高度相关的,因此它们的平均会有很高的方差。更好的选择是 k=5、k=10k=5、k=10k=5、k=10。

偏差——方差均衡

当 k=nk=nk=n(LOOCV)时,偏差是最小的,但是方差却很大。

k=5、10k=5、10k=5、10 为偏差——方差均衡提供了很好的折中,从经验上来说,这些值使得测试错误率的估计不会有过大的偏差或方差。

交叉验证法在分类问题中的应用

我们将数据分成 kkk 个大小大致相同的部分 C1,C2,⋯,CkC_1,C_2,\cdots,C_kC1​,C2​,⋯,Ck​,第 iii 类中有 nin_ini​ 个观测值:ni=n/kn_i=n/kni​=n/k
CVk=∑i=1kninErri其中Erri=∑j∈CiI(yj≠y^j)/niCV_k=\sum_{i=1}^k\frac{n_i}{n}Err_i\\其中Err_i=\sum_{j\in C_i}I(y_j\neq\hat{y}_j)/n_i CVk​=i=1∑k​nni​​Erri​其中Erri​=j∈Ci​∑​I(yj​​=y^​j​)/ni​
CVkCV_kCVk​ 估计的标准差为
SE^(CVk)=∑i=1k(Erri−Errˉi)2/(k−1)\hat{SE}(CV_k)=\sqrt{\sum_{i=1}^k(Err_i-\bar{Err}_i)^2/(k-1)} SE^(CVk​)=i=1∑k​(Erri​−Errˉi​)2/(k−1)​

自助法

自助法(bootstrap) 可用来衡量一个指定的估计量或统计学习方法中不确定的因素。

假设希望用一笔固定数额的钱对两个收益分别为X、Y的金融资产进行投资,打算把所有钱的百分比为 α\alphaα 的部分投资到X,1−α1-\alpha1−α 的部分投资到Y。选择一个 α\alphaα 使投资风险或者说方差最小,即 Var(αX+(1−α)Y)Var(\alpha X+(1-\alpha)Y)Var(αX+(1−α)Y) 最小。使风险最小的 α\alphaα 为:
α=σY2−σXYσX2+σY2−2σXY其中:σX2=Var(X),σY2=Var(Y),σXY=Cov(X,Y)\alpha=\frac{\sigma^2_Y-\sigma_{XY}}{\sigma_X^2+\sigma_Y^2-2\sigma_{XY}}\\其中:\sigma_X^2=Var(X),\sigma_Y^2=Var(Y),\sigma_{XY}=Cov(X,Y) α=σX2​+σY2​−2σXY​σY2​−σXY​​其中:σX2​=Var(X),σY2​=Var(Y),σXY​=Cov(X,Y)

证明:
Var(αX+(1−α)Y)=α2σX2+2α(1−α)σXY+(1−α)2σY2=α2(σX2−2σXY+σY2)+2α(σXY−σY2)+σY2=(σX2+σY2−2σXY)(α−σY2−σXYσX2+σY2−2σXY)2+CVar(\alpha X+(1-\alpha)Y)=\alpha^2\sigma_X^2+2\alpha(1-\alpha)\sigma_{XY}+(1-\alpha)^2\sigma^2_Y\\=\alpha^2(\sigma_X^2-2\sigma_{XY}+\sigma_Y^2)+2\alpha(\sigma_{XY}-\sigma_Y^2)+\sigma_Y^2\\=(\sigma_X^2+\sigma_Y^2-2\sigma_{XY})(\alpha-\frac{\sigma^2_Y-\sigma_{XY}}{\sigma_X^2+\sigma_Y^2-2\sigma_{XY}})^2+C Var(αX+(1−α)Y)=α2σX2​+2α(1−α)σXY​+(1−α)2σY2​=α2(σX2​−2σXY​+σY2​)+2α(σXY​−σY2​)+σY2​=(σX2​+σY2​−2σXY​)(α−σX2​+σY2​−2σXY​σY2​−σXY​​)2+C

用包含过去X、Y的数据集来计算上述值的估计量,得到使投资方差最小的 α\alphaα 为:
α^=σ^Y2−σ^XYσ^X2+σ^Y2−2σ^XY\hat{\alpha}=\frac{\hat{\sigma}^2_Y-\hat{\sigma}_{XY}}{\hat\sigma_X^2+\hat\sigma_Y^2-2\hat\sigma_{XY}} α^=σ^X2​+σ^Y2​−2σ^XY​σ^Y2​−σ^XY​​
为估计 α^\hat\alphaα^ 的标准差,重复模拟生成100对X、Y的观测,然后估计 α\alphaα,重复上述过程1000次,得到1000个 α\alphaα 的估计,记为 α^1,α^2,⋯,α^1000\hat\alpha_1,\hat\alpha_2,\cdots,\hat\alpha_{1000}α^1​,α^2​,⋯,α^1000​,模拟生成这些数据时,参数设定为 σX2=1,σY2=1.25,σXY=0.5\sigma_X^2=1,\sigma_Y^2=1.25,\sigma_{XY}=0.5σX2​=1,σY2​=1.25,σXY​=0.5,所以 α\alphaα 的真值为0.6。

1000个 α\alphaα 估计的均值为
αˉ=11000∑r=11000α^r=0.5996\bar\alpha=\frac{1}{1000}\sum_{r=1}^{1000}\hat\alpha_r=0.5996 αˉ=10001​r=1∑1000​α^r​=0.5996
与 α=0.6\alpha=0.6α=0.6 非常接近,估计量的标准差为
11000−1∑r=11000(α^r−αˉ)2=0.083\sqrt{\frac{1}{1000-1}\sum_{r=1}^{1000}(\hat\alpha_r-\bar\alpha)^2}=0.083 1000−11​r=1∑1000​(α^r​−αˉ)2​=0.083
实际中,对于真实数据,不能从原始的总体中生成新的样本。但是自助法可以用电脑模拟得到新的样本集,估计 α^\hat\alphaα^ 的波动性而不用生成额外的样本。自助法通过反复从原始数据集中抽取观测得到数据集。

考虑包括 nnn 个观测的简单数据集 ZZZ。首先随机从数据集中选择 nnn 个观测来产生一个自助法数据集 Z∗1Z^{*1}Z∗1。抽样通过有放回的方式执行,意味着同一个观测可能多次出现在自助法数据集中。用 Z∗1Z^{*1}Z∗1 产生一个新的对 α\alphaα 的自助法估计,记为 α^∗1\hat\alpha^{*1}α^∗1,重复这个步骤 BBB 次,BBB 是个很大的值,可以产生 BBB 个不同的自助法数据集,Z∗1,Z∗2,⋯,Z∗BZ^{*1},Z^{*2},\cdots,Z^{*B}Z∗1,Z∗2,⋯,Z∗B,和 BBB 个相应的 α\alphaα 估计,α^∗1,α^∗2,⋯,α^∗B\hat\alpha^{*1},\hat\alpha^{*2},\cdots,\hat\alpha^{*B}α^∗1,α^∗2,⋯,α^∗B,用下式计算自助法估计的标准误差:
SEB(α^)=1B−1∑r=1B(α^∗r−α^ˉ∗)2SE_B(\hat\alpha)=\sqrt{\frac{1}{B-1}\sum_{r=1}^B(\hat\alpha^{*r}-\bar{\hat\alpha}^*)^2} SEB​(α^)=B−11​r=1∑B​(α^∗r−α^ˉ∗)2​
这可以作为原始数据集中所估计的 α^\hat\alphaα^ 的标准误差的估计。

在更复杂的数据情况下,找出生成自助法样本的适当方法需要进行一些思考。例如,如果数据的时间序列,就不能简单的采样观测结果。

自助法还可以提供参数的置信区间(Bootstrap Percentile confidence interval)。

交叉验证中,每个 KKK 验证折都不同于其他用于训练的 K−1K-1K−1 折,无重叠。但自助法样本中每个都与原始数据有显著的重叠,将导致其严重低估真正的预测误差。

统计学习(四):重抽样方法相关推荐

  1. Bootstrap重抽样方法

    Bootstrap重抽样方法 Bootstrap重抽样数据集的产生方式主要分为3种方法: 非参数重抽样 Non-parametric resampling 此方法不假设数据的分布或模型.数据表示为n个 ...

  2. Kmeans聚类K值选择Parametric Bootstrap方法,以及数据重抽样方法Bootstrapping

    常用的K值选择方法是通过寻找"拐点"确认,或者下游业务需求确定.下文介绍了另一种选择方法. 评论:原始该K值选择法只有在数据为"gaussian-like"时才 ...

  3. python四种抽样方法的使用:随机抽样、聚类抽样、系统抽样、分层抽样

    四种抽样方法见下示例代码 示例代码 from sklearn.model_selection import train_test_split import numpy as npdef random_ ...

  4. 学习最重要是方法,管理最重要是高度

    技术学习要兼顾深度和广度 夯实技术基础 这么多年来,我面试了很多人.我越发感到「技术基础」非常重要. 很多技术的本质是一样的.技术基础足够好的话,学东西可以非常快.往下到操作系统层面,甚至计算机硬件层 ...

  5. (ISLR-note)Chapter5 重抽样方法

    一.交叉验证法 1.验证集方法 将数据分为 训练集 和 验证集. 2.留一交叉验证法LOOCV ①将一个单独的观测(x1,y1)作为验证集,剩下的观测 {(x2,y2), (x3,y3), - , ( ...

  6. 统计学习导论(ISLR)(五):重采样方法(交叉验证和bootstrap)

    统计学习导论(ISLR) 小编大四统计在读,目前保研到统计学top3高校继续攻读统计研究生. 参考资料: The Elements of Statistical Learning An Introdu ...

  7. 统计学习之路|(一)统计学习理论与方法概述

    统计学习之路|(一)统计学习理论与方法概述   各位小伙伴们大家好!经过一段时间的思考,我决定将开更一个"天坑系列":统计学习之路.希望自己能够坚持更下去.   之所以称之为&qu ...

  8. 如何用计算机做样本抽样,抽样的四种基本方法

    1.单纯随机抽样 单纯随机抽样是在总体中以完全随机的方法抽取一部分观察单位组成样本(即每个观察单位有同等的概率被选入样本).常用的办法是先对总体中全部观察单位编号,然后用抽签.随机数字表或计算机产生随 ...

  9. 《统计学习导论》R语言代码整理

    <统计学习导论>R语言代码整理 一.特殊函数 二.基本函数 三.画图 一些函数 一些参数 type pch (plotting character) lty(line types) 特定问 ...

最新文章

  1. 基于Hadoop的58同城离线计算平台设计与实践
  2. 看麦田“蚂蚁网” 想网络新社区
  3. XXL-JOB v2.0.2,分布式任务调度平台 | 多项特性优化更新
  4. StringBuilder StringBuffer
  5. linux ls模糊查询,linux – 找到和ls的通配符
  6. 六十六、Leetcode数组系列(中篇)
  7. CF455B A Lot of Games
  8. 软考信息安全工程师培训精品课-更新中
  9. TechOnTheNet的Oracle专题
  10. 面向对象淡入淡出轮播图(附带面向过程)
  11. xmind可以画流程图吗_如何用xmind做流程图
  12. 软件测试常见的用例设计方法
  13. plupload插件上传总结(分片上传,php后端处理)
  14. 小学计算机教室海报,小学美术制作海报教案.doc
  15. 解决raise OSError(“Truncated File Read“)OSError: Truncated File Read
  16. RC(Cadence RTL Compiler)物理综合
  17. ffmpeg 查看bayer rg8 \ bg8 像素格式图片方法
  18. 状态模式、有限状态机 Unity版本实现
  19. latex多行公式加大括号、整体编号及多行编号及不同方法的区别
  20. 如何开启tiktok之旅

热门文章

  1. C# 委托学习笔记(一)
  2. python学习笔记爬虫——爬取智联招聘信息
  3. 零售巨头家乐福在西班牙推出家禽区块链食物追踪平台
  4. WebRTC -- 官方apprtc示例搭建
  5. paid有计算机功能吗,‎App Store 上的“计算器 - iPad计算机”
  6. app error login.php,自定义错误Think\Think::appError 设计有问题!!
  7. markdown逻辑符号
  8. WorkFlow .Net 流程撤回
  9. 十五天学会Autodesk Inventor,看完这一系列就够了(一),前言—介绍及区别
  10. 狸猫哥哥和他的冬葵花