5折交叉验证_ISL统计学习导论-基于R|05重抽样:交叉验证与自助法

重抽样其实属于范围更广的一种统计方法——computer-intensive("运算密集"),它充分利用计算机,对相同的数据不断地重复进行大量的运算。重抽样方法通过反复从训练集中抽取样本,然后对每一个样本重新拟合一个感兴趣的模型,来获取关于拟合模型的附加信息。这章讨论两个最重要的重抽样方法——交叉验证法(cross-validation)以及自助法(bootstrap)。

交叉验证-定量变量

1.验证集方法

我们的目标是根据一堆观测去拟合一种特定的统计学习方法所产生的测试误差。方法的基本原理在图中表示出来。

08fd73c5ee21c3de9ba5008119625149.png

这种方法首先把这一堆观测随机地分为两个部分——训练集与测试集(一般这两个集合的大小是相当的),像上边的图中一样,蓝色部分为训练集,黄色部分为测试集。我们将模型在训练集上进行拟合,然后再将拟合出来的模型在测试集上去计算错误率(通常我们用均方误差作为定量响应变量的误差度量)。

比如说,我们想探究

之间的关系,可能这里两者之间是线性关系,或者还存在着更高次的关系。为了看是否存在线性关系,我们可以用交叉验证的方法。在下图的这个例子中,作者把数据集随机地分成两个部分,一部分用来训练,一部分用来测试。右边的图表示将“把数据集随机地分成两个部分”这一过程重复了10次,并且每一次分割都拟合了从1次到10次的多项式模型后,得到的MSE的图像。左图只是当中的一种情形。

5f3e42f999dbe55de28522ce9bdc6beb.png

虽然从图中我们似乎觉得高次的模型拟合效果更好,但是,这些曲线并不能说明当中的某个模型具有最小的测试集均方误差。我们只能通过这些曲线的波动,得到“线性拟合不合适这个数据集”这样的结论。

验证集方法的缺陷主要由两个方面:

  • 测试集上错误率的波动很大(这一点从右图可以看出来)。
  • 验证集方法中,只有一部分观测被使用了,而利用的信息越少,模型就越可能偏离真实情形,这就意味着验证集的错误率可能高估在整个数据集上拟合应得的错误率。

针对这两个问题,交叉验证法进行了改进。

2.去一交叉验证法(LOOCV)

和验证集方法一样,去一交叉验证也是将所有的观测分为两个部分。但是,去一交叉验证的测试集仅仅是一个单独的观测。

就好比,你想研究网易云歌手热度值与歌手的歌曲数量、曲风种类、专辑数量、演唱会数量、专辑价格、受众群体之间的关系,于是你分别去搜集了100位歌手的这些信息,只留下了一个人(比如洗牙)作为测试集,剩下的99个全部拿去拟合你的模型了。假设你做的是线性回归,于是通过这99条数据,你得到了一个形如

的模型,由于洗牙的数据没有参与模型的拟合,我们把她的各个维度带入到我们的模型里去,得到了一个估计的热度值
,而洗牙自己本身是有一个热度值
的,于是
给出了这个线性模型测试集误差的一个估计。

但是,由于去一交叉验证仅仅用了一个样本来估计测试误差,它的波动性会很大,你换一个歌手的数据,会得到完全不同的测试误差。

于是,我们重复刚刚的步骤,将洗牙放回去成为99个训练观测的一员,把阿黛尔拿出来作为那个“去一”的一,又得到一个

作为第二个测试误差的估计值。以此类推,我们得到了

9b39a500546c679a4b34b7023a875e6b.png

接下来我们要做的事情想必你也能够猜得到,就是把

作为这个数据集测试误差的最终估计。我们把这个估计记为
。而实际应用中,用最小二乘来拟合线性或者多项式回归模型时,LOOCV方法的公式还要加上一个杠杆值:

去一交叉验证的好处是:

  • 偏差较小。我们能够获得
    个估计值,相比于验证集方法,我们更不容易高估测试错误率。
  • LOOCV方法在训练集和测试集的分割上不存在随机性。

但是,模型由于需要拟合

次,如果
非常大,那么这种方法会非常耗时。

3. k折交叉验证法(k-fold CV)

k折交叉验证其实时LOOCV方法的一个替代。这种方法将观测集随机地分为

个大小基本一致的组(组里的观测数大于或者等于1)。首先,把第一折作为验证集,然后在剩下的
折上拟合模型得到测试误差。重复整个过程
次,得到
个不同的测试误差,然后求平均值得到最终估计值

2a76f71e492c08a1c85f29a39d0cdc38.png

所以,

就是我们的去一交叉验证了。

在实际中,一般会采用

或者
,为了方便计算,特别是当
很大的时候。

下边这个图显示的是去一交叉验证法得到的最终估计值在不同次数多项式上的表现以及10折得到的估计值。由于分成10折的方法有多种,每种分法得到的结果存在波动,但显然,这样的波动比验证集法小了许多。

ed2cae49250faf5267c32653454895a9.png

使用交叉验证法时,我们的目的可能是想评价某一种特定的统计学习方法在独立的数据运用上的表现,而在这种情况下,我们感兴趣的是测试均方误差的估计精度。不过,我们也有可能仅仅对测试均方误差曲线的最小值点感兴趣。所以,交叉验证法的用处可以是,对同一个数据集,使用不同的模型(比如,上边的热度值的例子里,通过线性拟合、多项式拟合等多种统计学习方法训练模型)亦或是同一种统计学习方法在不同光滑度水平上使用交叉验证法,通过寻找测试误差最小的位置,确定哪种方法更合适。

当然,k折交叉验证方法的好处不仅仅在于计算上的优势,它相对于去一交叉验证法(LOOCV)来说,对测试错误率的估计通常来说会更加准确。

我们曾经介绍过,验证集方法往往会高估测试错误率——由于信息的不充分利用;LOOCV可以提供近似无偏的测试误差估计;k折CV则会产生一个中等程度的偏差。所以,LOOCV方法从减少偏差的角度是优于k折CV方法的。

但是,bias-variance trade-off 提醒我们还有方差需要注意。当

的时候,LOOCV方法的方差要比k折CV方法的方差大。为什么呢?
  • 在使用LOOCV方法的时候,实际上是在平均
    个拟合模型的结果,每一个模型都是几乎相同的观测集上训练的,这些结果之间是高度相关的。
  • 在使用k折CV方法的时候,由于每个模型的训练集之间的重叠部分相对较小,结果之间的相关性也较小。
  • 许多高度相关的量的均值要比不相关性相对较小的量的均值具有更高的波动性。
  • 因此,k折CV方法产生的测试误差估计小于LOOCV方法。

交叉验证-定性变量

回想我们的KNN回归与KNN分类器的区别,交叉验证在对于定量变量的分析中,仅仅是将其对于定量变量的应用稍作了改动——MSE变成了误分类率。

在分类问题的背景下,LOOCV方法的错误率形式为:

自助法

20世纪30年代的一位意大利数学家——Francesco Paolo Cantelli与另一个人,Joseph Glivenko 证明了一个引理。这个引理在说明的事情是:如果有一些数,我们对它们的概率分布一无所知,那么数据本身可以用来构造一个非参数分布。这个非参数分布是一个并不好看的函数,有许多断点,但是,可以通过增大观测值的数量,来使不那么美的经验分布函数越来越接近真实的分布函数。

Bootstrap其实是基于上边这个引理的简单应用。之所以自助法的发明者Bradley Efron会将它起这样的名字,是因为整个计算过程是一个数据自身模拟提升的过程,就像是在解开靴子上的带子一样,一个接着一个。

作为一个强大的统计工具,自助法可以用来衡量一个特定的估计量或者一个特定的统计学习方法中不确定的因素。

书上是通过一个例子来说明自助法原理的。关于相应的理论,可以自行搜索MIT的lecture notes阅读。

现在,我们希望用一笔固定数额的钱对于两个分别收益为
的金融资产进行投资,其中
是随机变量。为了分配这一笔固定数额的钱,我们将所有钱的
投资到
,把剩下的
投资到
。由于这两笔投资的收益存在波动性,所以我们希望找到一个
,使得投资的总风险最小。

问题用数学语言转化出来是:

我们得到使得风险最小的

值为:

为了得到这个

的值,而方差协方差都是未知的,那么我们可以用样本量来估计未知的参数可以得到
的估计值
,这些样本量是过去投资与收益的历史数据。

估计通过模拟完成。根据历史的波动情况,我们模拟真实的投资与收益发生状况。每一次我们可以模拟生成100对投资与收益,这样我们可以得到许多估计值,从而得到一个

的取值范围。

8215a7e3cbb2d69828e30f6e6d7ba397.png

为了评估

的估计精度,我们可以去估计
的标准差。为了更通俗易懂,如何使用自助法估计标准差作者在这里给了一个自助法数据集观测数仅为3的例子。

假设我们从刚刚模拟的所有数据中仅抽取了3对

,就是下图左边的original Data,来作为我们的自助法数据集。接下来,我们将进行有放回的抽样,每次抽取的样本数与自助法数据集中的观测数是一样的,共抽取
次。可以看到,在右边的图中,我们第一次抽取了两次3号观测与一次1号观测;第二次,每一号观测都抽取到了一次;第
次,我们抽到了两次2号观测与一次1号观测。

aa8e99779973426cb883d0606b52fa1a.png

根据每一次抽样,我们可以利用公式算得一个

的估计值,记为
。接着,利用以下公式(这些估计值
的标准差)作为原始数据集中所估计的
的标准误差的估计。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值