부트 스트랩에서 .632+ 규칙은 무엇입니까?


107

여기서 @gung은 .632+ 규칙을 참조합니다. 빠른 Google 검색은이 규칙의 의미와 사용 목적에 대한 이해하기 쉬운 답변을 제공하지 않습니다. 누군가 .632+ 규칙을 설명해 주시겠습니까?

답변:


115

0.632 추정값에 도달하지만 다소 긴 개발이 될 것입니다.

우리가 예측한다고 가정 가진 X 함수를 사용하여 F , F는 데이터를 사용하여 추정되는 몇몇 파라미터들에 의존 할 수있다 ( Y , X ) , 예를 들면 F ( X ) = X의 β을YXff(Y,X)f(X)=Xβ

예측 오차의 순진한 추정값은 여기서L은 손실 함수 (예 : 제곱 오차)입니다. 이것을 종종 훈련 오류라고합니다. Efron et al. 명백한 오류율 또는 재치 환율이라고합니다. 우리는 데이터(xi,yi)f에 맞추기때문에 그리 좋지 않습니다. 그 결과¯err이 하향 바이어스됩니다. 새 값을 예측하는 데모델f의 성능을 알고 싶습니다.

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

종종 우리는 예상 추가 샘플 예측 오차를 추정하는 간단한 방법으로 교차 검증을 사용합니다 (모델이 훈련 세트에없는 데이터에 대해 얼마나 잘 수행합니까?).

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

이 작업을 수행하는 일반적인 방법은 배 교차 검증을 수행하는 것입니다. 데이터를 K 그룹 으로 분할하십시오 (예 : 10). 각 그룹 k 에 대해 나머지 K - 1 그룹 에 모형을 적합 시키고 k 번째 그룹 에서 검정합니다 . 교차 검증 된 추가 샘플 예측 오차는 평균 E r r C V = 1입니다.KKkK1k여기서κ는 관측치i가 할당 된파티션을 나타내는 인덱스 함수이며fκ(i)(xi)κ(i)번째 세트에없는 데이터를 사용한xi의 예측값

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

K=NK

X=(x1,,xN)BZ1,,ZBZiN

Errboot=1Bb=1B1Ni=1NL(yi,fb(xi))
fb(xi)xibfb(xi)xi
Errboot(1)=1Ni=1N1|Ci|bCiL(yi,fb(xi))
Cii|Ci|Errboot(1)0.632N
Err.632=0.368err¯+0.632Errboot(1)
err¯=1Ni=1NL(yi,f(xi))

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))

RErrboot(1)=err¯


2
@rpierce와 같은 좋은 질문이지만이 스레드의 중심 주제에서 다소 멀어집니다. CV는 조직 단위로 새 스레드에 배치하는 것이 더 좋으므로 나중에 사람들이 해당 정보를 쉽게 찾고 사용할 수 있습니다.
gung



1
err¯=1Ni=1NL(yi,f(xi))1ni=1n(yiy^i)2

1
@rpierce, 그렇습니다! 나는 약간의 수업 노트 에서이 자료를 많이 재활용했기 때문에 약간 일반적이었습니다.
bdeonovic

53

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+ 부트 스트랩 방법 . 미국 통계 협회 , Vol. 92, No. 438, 548--560 쪽.


3
여기에 참조에 당신을위한 문서입니다 - stat.washington.edu/courses/stat527/s14/readings/...

1
(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%

4
1e10.63212056

1
이 대답은 또한 훌륭합니다. 실제로 받아 들여진 대답과이 대답은 실제로 내 질문에 대한 완전한 대답을 제공하지만 벤자민의 생각이 대답에서 찾고있는 것에 더 가깝습니다. 그 말은-나는 정말로 둘 다 받아 들일 수 있기를 바랍니다.
russellpierce

1
@rpierce : Celine Dion의 말을 인용하자면, " 시간만큼 오래된 이야기 / 운율과 같은 오래된 노래 / 미녀와 야수." : P
Nick Stauner

8

c


3
나는 당신이 프랭크에게 말한 대부분의 내용을 이해하지 못한다고 생각합니다. 기꺼이 설명 하시겠습니까? 독창적이고 중요한 요소가있는 것 같습니다.
russellpierce

특정 질문을 할 수 있다면 확장하게되어 기쁩니다.
Frank Harrell

1
이 점수 규칙은 ... 부트 스트랩 결과의 품질을 판단하고 있었습니까? "분류 된"비율을 정확하게 기록하는 비율을 설명하는 링크를 제공 할 수 있습니까? 나는 어떤 종류의 짐승인지 상상하기가 어렵습니다. Google의 "Efron-Gong 낙관론"에 대한 최고의 결과 중 대다수가 귀하의 게시물 인 것 같습니다 ... 한정자가없는 "부트 스트랩"이라고 말하면 어떻게 다른가요? 어떤 Effron 및 Gong 기사를보아야합니까? 여러 가지가있는 것 같습니다.
russellpierce

3
올바르게 분류 된 비율을 사용하고 정의하는 0.632에 대한 원본 논문을 참조하십시오 (Efron & Tibshirani JASA 92 : 548; 1997). 낙관론 부트 스트랩은 바이어스를 추정하기위한 부트 스트랩의 변형입니다. 공 : JASA 85:20; 1990
프랭크 하렐

2

이 답변은 매우 유용합니다. 나는 수학으로 그것을 증명하는 방법을 찾을 수 없으므로 꽤 잘 작동하는 파이썬 코드를 작성했습니다.

    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)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.