답변:
0.632 추정값에 도달하지만 다소 긴 개발이 될 것입니다.
우리가 예측한다고 가정 가진 X 함수를 사용하여 F , F는 데이터를 사용하여 추정되는 몇몇 파라미터들에 의존 할 수있다 ( Y , X ) , 예를 들면 F ( X ) = X의 β을
예측 오차의 순진한 추정값은 여기서L은 손실 함수 (예 : 제곱 오차)입니다. 이것을 종종 훈련 오류라고합니다. Efron et al. 명백한 오류율 또는 재치 환율이라고합니다. 우리는 데이터(xi,yi)를f에 맞추기때문에 그리 좋지 않습니다. 그 결과¯err이 하향 바이어스됩니다. 새 값을 예측하는 데모델f의 성능을 알고 싶습니다.
종종 우리는 예상 추가 샘플 예측 오차를 추정하는 간단한 방법으로 교차 검증을 사용합니다 (모델이 훈련 세트에없는 데이터에 대해 얼마나 잘 수행합니까?).
이 작업을 수행하는 일반적인 방법은 배 교차 검증을 수행하는 것입니다. 데이터를 K 그룹 으로 분할하십시오 (예 : 10). 각 그룹 k 에 대해 나머지 K - 1 그룹 에 모형을 적합 시키고 k 번째 그룹 에서 검정합니다 . 교차 검증 된 추가 샘플 예측 오차는 평균 E r r C V = 1입니다.여기서κ는 관측치i가 할당 된파티션을 나타내는 인덱스 함수이며f−κ(i)(xi)는κ(i)번째 세트에없는 데이터를 사용한xi의 예측값
그때:
과
그러므로
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 쪽.
이 답변은 매우 유용합니다. 나는 수학으로 그것을 증명하는 방법을 찾을 수 없으므로 꽤 잘 작동하는 파이썬 코드를 작성했습니다.
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)