自举中的.632+规则是什么?


107

在这里, @ gung引用了.632+规则。快速的Google搜索无法就此规则的含义以及它的用途产生简单易懂的答案。有人可以阐明.632+规则吗?

Answers:


115

我将使用0.632估算器,但这将是一个漫长的发展:

假设我们要预测与使用函数,其中可以取决于所使用的数据来估计一些参数例如YXff(Y,X)f(X)=Xβ

预测误差的简单估计为,其中是某些损失函数,例如平方误差损失。这通常称为训练错误。Efron等。称为表观错误率或替换率。这不是很好,因为我们使用数据来拟合。这导致被向下偏置。您想知道模型在预测新值方面做得如何。

err¯=1Ni=1NL(yi,f(xi))
L(xi,yi)ferr¯f

通常,我们使用交叉验证作为估计预期样本外预测误差的简单方法(我们的模型对不在训练集中的数据的处理效果如何?)。

Err=E[L(Y,f(X))]

一种流行的方法是进行折交叉验证。将您的数据分成组(例如10个)。对于每个组,将模型拟合到其余的组,并在第组进行测试。我们的交叉验证的额外样本预测误差仅为平均值其中是一些指数函数,用于指示观测分区被分配和是预测值不在使用数据个组。KKkK1k

ErrCV=1Ni=1NL(yi,fκ(i)(xi))
κifκ(i)(xi)xiκ(i)

当时,该估计器对于真实的预测误差几乎是无偏的,并且具有较大的方差,而对于较大的计算量更大。因此,我们再次看到偏差与方差的权衡在起作用。K=NK

代替交叉验证,我们可以使用引导程序来估计额外样本的预测误差。引导程序重采样可用于估计任何统计信息的采样分布。如果我们的训练数据,那么我们可以认为服用从这组bootstrap样本(带替换),其中每个是一组样本。现在,我们可以使用引导程序样本来估计样本外预测误差:,其中是模型拟合到模型的处的预测值X=(x1,,xN)BZ1,,ZBZiN

Errboot=1Bb=1B1Ni=1NL(yi,fb(xi))
fb(xi)xib引导数据集。不幸的是,这并不是一个特别好的估计器,因为用于产生引导样本可能包含。留一法引导程序估计器通过模仿交叉验证提供了一种改进,其定义为:,其中是引导样本的索引集,不包含观测值和是此类样本的数量。fb(xi)xi
Errboot(1)=1Ni=1N1|Ci|bCiL(yi,fb(xi))
Cii|Ci|Errboot(1)解决了过度拟合的问题,但仍然存在偏见(这一点是向上偏见的)。偏差归因于自举样品中的明显区别,这是由于更换样品而导致的。每个样本中平均不同观测值的平均数约为(请参阅此答案以解释为什么每个引导样本平均为何平均包含大约三分之二的观测值?)。为了解决偏差问题,Efron和Tibshirani提出了0.632估算器: 其中0.632N
Err.632=0.368err¯+0.632Errboot(1)
err¯=1Ni=1NL(yi,f(xi))
是对预测误差的幼稚估计,通常称为训练误差。这个想法是平均一个向下偏差的估计和一个向上偏差的估计。

但是,如果我们具有高度过拟合的预测函数(即),那么即使.632估计量也将向下偏置。.632+估算器设计为和之间的偏差较小。 其中 ,其中是无信息错误率,通过评估预测模型对所有可能的组合进行估算目标和预测变量。err¯=0err¯Errboot(1)

Err.632+=(1w)err¯+wErrboot(1)
w=0.63210.368RandR=Errboot(1)err¯γerr¯
γyixi

γ=1N2i=1Nj=1NL(yi,f(xj))

在此,衡量相对过拟合率。如果没有过度拟合(R = 0,则当)时,它等于.632估计量。RErrboot(1)=err¯


2
这些是很好的问题,@ rpierce,但它们与该主题的核心话题有些偏离。从CV组织角度来看,最好将它们放在一个新线程中,这样人们以后可以更轻松地查找和利用该信息。
gung



1
@rpierce对不起,我的问题很难理解。正在将模型的拟合度与用于拟合模型的数据进行比较。因此对于平方误差损失,它只是err¯=1Ni=1NL(yi,f(xi))1ni=1n(yiy^i)2
bdeonovic

1
@rpierce,是的!我之所以有点一般,是因为我从一些课堂笔记中重新学习了很多这种材料。
bdeonovic 2014年

53

您将在本文1的第3节中找到更多信息。但总而言之,如果您将随机抽取并替换为的数字称为,则平均包含大约独特元素。Sn{1:n}S(1e1)n0.63212056n

推理如下。我们通过从采样次(随机且替换)来填充。考虑一个特定的索引。 S={s1,,sn}i=1,,n{1:n}m{1:n}

然后:

P(si=m)=1/n

P(sim)=11/n

这是正确的(直觉上,由于我们进行替换采样,所以概率不取决于)1ini

从而

P(mS)=1P(mS)=1P(i=1nsim)=1i=1nP(sim)=1(11/n)n1e1

您还可以进行以下模拟,以凭经验检查近似值的质量(取决于):n

n <- 100
fx01 <- function(ll,n){
    a1 <- sample(1:n, n, replace=TRUE)
    length(unique(a1))/n
}
b1 <- c(lapply(1:1000,fx01,n=100), recursive=TRUE)
mean(b1)

1. Bradley Efron和Robert Tibshirani(1997)。交叉验证的改进:.632+引导程序方法美国统计协会杂志,第一卷。92,第438号,第548--560页。



1
(+1)很好。我只会使表示法更加标准。数据:。IID随机变量与。结果:。(x1,,xn)S1,,SnP(Si=k)=1nI{1,,n}(k)P(i=1n{Si=k})=1P(i=1n{Sik})=1i=1nP{Sik}=1(11/n)n11/e63.21%
2014年

4
@rpierce:对。当前答案未能提及的“显而易见”位是。1e10.63212056
Ilmari Karonen 2014年

1
这个答案也很棒,实际上,被接受的答案加上这个答案实际上可以提供我问题的完整答案-但是在这两者之间,我觉得本杰明的答案更接近我在答案中寻找的内容。话虽如此-我真的希望有可能接受两者。
russellpierce 2014年

1
@rpierce:引用Celine Dion的话:“ 故事源于时间,歌曲源于韵律/“美女与野兽”。:P
Nick Stauner 2014年

8

以我的经验为基础,主要基于模拟,仅由于使用不正确的准确性评分规则(即正确地“分类”的比例)引起的严重问题,才需要0.632和0.632+的引导程序变体。当您使用适当的(例如,基于偏差或Brier评分)或半适当的(例如, -index = AUROC)评分规则时,标准的Efron-Gong乐观引导程序就可以正常工作。c


3
我不明白你在弗兰克所说的大多数话。您愿意澄清吗?听起来您有一些独特而重要的贡献。
russellpierce 2014年

如果您可以提出一个具体的问题,我很高兴扩展。
弗兰克·哈雷尔

1
这些得分规则是……判断引导结果的质量?您能否提供一个描述比例正确分类规则的“分类”比例的链接,我无法想象可能是哪种野兽。在Google上“ Efron-Gong乐观”的最佳搜索结果中,绝大多数似乎是您发布的信息……与我在没有限定词的情况下说“ bootstrap”有什么不同?我应该看哪一篇Effron和Gong的文章?似乎有几个。
russellpierce 2014年

3
参见有关0.632的原始论文,该论文使用并定义了正确分类的比例(Efron&Tibshirani JASA 92:548; 1997)。乐观引导程序是引导程序的一种变体,用于估计偏差。在Gong中进行了描述:JASA 85:20;1990年
弗兰克·哈雷尔

2

这些答案非常有用。我找不到用数学证明它的方法,所以我写了一些效果很好的Python代码:

    from numpy import mean
    from numpy.random import choice

    N = 3000

    variables = range(N)

    num_loop = 1000
    # Proportion of remaining variables
    p_var = []

    for i in range(num_loop):
        set_var = set(choice(variables, N))
        p=len(set_var)/float(N)
        if i%50==0:
            print "value for ", i, " iteration ", "p = ",p
        p_var.append(p)

    print "Estimator of the proportion of remaining variables, ", mean(p_var)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.