1. 개요[편집]
| 부트스트랩 Bootstrap | |
|---|---|
| 제안 | B. Efron (1979, Annals of Statistics) |
| 핵심 | 모르는 F 자리에 경험분포 F̂n 를 꽂는다 |
| 기본 절차 | n 개에서 n 개 복원추출을 B 번 |
| 빠질 확률 | (1−1/n)n → 1/e ≈ 0.368 |
| 신뢰구간 | 백분위수 · 기본 · BCa · 스튜던트화 |
| 깨지는 곳 | 극단통계량, 경계 모수, 종속 데이터 |
부트스트랩(bootstrap)은 통계량 의 표본분포를 알고 싶은데 모집단분포 를 모를 때, 자리에 관측 데이터가 만드는 경험분포 을 꽂아 넣고 거기서 표본을 다시 뽑아 표본분포를 흉내 내는 재표본 기법이다. 에프론(1979)이 잭나이프를 다시 들여다보다 내놓았다.
에서 크기 표본을 뽑는다는 것은 원 데이터에서 개를 복원추출한다는 뜻이다. 이걸 번 반복해 를 모으면, 그 히스토그램이 우리가 원래 알고 싶었던 의 표본분포를 대신한다. 표준오차는 들의 표본표준편차, 편향은 , 신뢰구간은 아래에 정리한 방법들로.
이름은 “자기 신발끈을 잡아당겨 스스로를 들어 올린다”는 불가능한 묘기에서 왔다.1 데이터 하나로 데이터가 흔들리는 정도를 알아낸다는 것이 딱 그렇게 들리기 때문인데, 마술이 아니라는 점은 분명히 해 두는 게 좋다. 부트스트랩은 정보를 만들어 내지 않는다. 이 를 잘 대신한다는 것(글리벤코-칸텔리 정리)과 통계량이 에 매끄럽게 의존한다는 것, 두 가지에 전부 기대고 있다. 그 두 전제가 깨지는 자리를 아는 것이 이 문서의 절반이다.2
2. 왜 되는가 — 플러그인 원리와 두 겹의 근사[편집]
부트스트랩의 논리는 세 줄이다.
- 알고 싶은 것은 아래에서의 의 분포다.
- 를 모르니 으로 갈아 끼운다. 그러면 아래에서의 의 분포가 그 대역이 된다. 이때 참값 자리에 들어가는 것은 가 아니라 이다. 이 대응을 놓치면 신뢰구간을 반대로 뒤집는 실수를 한다.
- 2번의 분포는 원리적으로는 정확히 계산 가능하다 — 서로 다른 복원추출 결과가 유한 개니까. 하지만 그 개수가 이라 만 돼도 천문학적이므로, 몬테카를로 방법으로 번 뽑아 근사한다.
여기서 근사가 두 겹이라는 점이 중요하다. 통계적 오차()는 데이터가 늘어야 줄고, 몬테카를로 오차()는 재표본을 늘리면 줄어든다. 후자는 컴퓨터 시간으로 살 수 있지만 전자는 못 산다. 를 100만으로 올려도 인 데이터는 여전히 짜리 정보만 담고 있다. 실무 관행은 표준오차용 , 신뢰구간용 , BCa처럼 꼬리 백분위수를 쓰는 경우 정도다.3
3. 세 가지 부트스트랩[편집]
| 종류 | 무엇을 재표본하나 | 언제 |
|---|---|---|
| 비모수 | 관측치 자체를 복원추출 | 분포 가정을 하기 싫을 때 (기본값) |
| 모수 | 적합한 에서 새 표본을 생성 | 분포족을 믿을 만하고 이 작을 때 |
| 잔차 | 적합값은 고정, 잔차만 복원추출 | 회귀에서 설계행렬을 고정하고 싶을 때 |
비모수 부트스트랩이 기본형이다. 아무 가정 없이 관측 벡터를 통째로 복원추출한다.
모수 부트스트랩은 대신 를 쓴다. 예컨대 최대우도추정으로 를 얻은 뒤 그 분포에서 인공 데이터를 생성해 추정을 반복하는 식. 분포 가정이 맞으면 비모수판보다 훨씬 효율적이고, 특히 이 작아 이 듬성듬성할 때 차이가 크다. 물론 가정이 틀리면 틀린 채로 자신만만한 답을 준다.
잔차 부트스트랩은 회귀 전용이다. 에서 잔차 만 복원추출해 로 새 반응을 만든다. 설계행렬 를 고정하므로 계획된 실험처럼 가 무작위가 아닌 상황에 맞고, 대신 오차가 등분산이라는 가정을 정면으로 쓴다. 이분산이 의심되면 관측쌍 를 통째로 재표본하는 쌍 부트스트랩이나, 잔차에 평균 0·분산 1인 무작위 부호를 곱하는 와일드 부트스트랩으로 가야 한다. 잔차를 그대로 쓰면 축소되어 있으므로() 로 나눠 표준화한 뒤 재표본하는 것이 정석이다.
4. 신뢰구간 세 가지[편집]
부트스트랩 표준오차에 을 곱하는 정규 근사는 가장 싸지만 분포가 비대칭이면 바로 무너진다. 제대로 된 방법은 셋이다.
백분위수(percentile). 들의 , 백분위수를 그대로 구간으로 쓴다.
가장 직관적이고 변환에 대해 동변이다 — 의 구간에 지수를 씌우면 의 구간이 나온다. 상관계수처럼 범위가 제한된 모수에서 구간이 자동으로 범위 안에 들어오는 것도 이 성질 덕이다. 대신 정당화가 은근히 강한 가정을 쓴다. 어떤 단조변환 가 있어 가 와 무관한 대칭분포를 따라야 한다. 그리고 자체에 편향이 있으면 구간이 통째로 밀린다.
기본(basic, 역백분위수). 근사할 대상을 통계량이 아니라 오차 로 두는 쪽이 논리적으로는 더 곧다. 부트스트랩 세계의 대응물은 이므로, 그 백분위수로 를 감싸고 에 대해 풀면
백분위수 구간을 에 대해 거울처럼 뒤집은 모양이다. 부트스트랩 분포가 오른쪽으로 꼬리가 길면 백분위수 구간은 오른쪽으로, 기본 구간은 왼쪽으로 늘어난다. 둘이 눈에 띄게 다르면 그 자체가 경고 신호다. 기본 구간은 편향을 자동으로 한 번 걷어내지만(그래서 가 나온다) 변환 동변성이 없고, 범위 밖으로 삐져나갈 수 있다.
BCa(bias-corrected and accelerated, 에프론 1987). 위 두 방법의 약점을 한꺼번에 손보려는 것으로, 백분위수를 쓰되 어느 백분위수를 쓸지를 두 개의 보정 상수로 옮긴다.
- 편향 보정 . 부트스트랩 분포에서 가 정확히 중앙값이면 이고, 한쪽으로 치우친 만큼 백분위수를 밀어 준다.
- 가속 . 표준오차가 에 따라 변하는 정도(척도의 비일정성)를 잡는 항으로, 보통 잭나이프 값들의 왜도로 추정한다.
는 번 관측을 뺀 잭나이프 추정값이다. 두 상수로 보정한 백분위수
를(상단도 같은 꼴로) 써서 구간을 잡는다. 이면 정확히 백분위수 구간으로 되돌아간다.
값어치는 정확도의 차수에 있다. 백분위수·기본 구간의 피복확률 오차는 로 1차 정확이지만, BCa와 스튜던트화(bootstrap-) 구간은 로 2차 정확이다. 이 커질수록 격차가 벌어진다. 대가는 계산량( 를 위해 잭나이프 번을 더 돌아야 한다)과 꼬리 백분위수의 불안정성이라, 를 크게 잡아야 한다. 스튜던트화 구간은 2차 정확이면서 계산이 덜 복잡하지만, 표준오차 추정치가 매 재표본마다 필요해 이중 부트스트랩이 되기 십상이고 변환 동변성이 없다.
5. 36.8% — 남는 자와 빠지는 자[편집]
개에서 개를 복원추출할 때, 특정 관측 하나가 한 번도 안 뽑힐 확률은 매 추첨에서 안 뽑힐 확률을 번 곱한 것이다.
| 5 | 0.3277 |
| 10 | 0.3487 |
| 20 | 0.3585 |
| 100 | 0.3660 |
| 1000 | 0.3677 |
| 0.3679 |
수렴이 아주 빠르다. 즉 재표본 하나에는 원 데이터의 서로 다른 관측이 평균 63.2%만 들어 있고, 36.8%는 통째로 빠진다. 이 빠진 몫을 OOB(out-of-bag)라 부른다.
같은 계산이 앙상블에서 공짜 검증 집합으로 되돌아온다. 랜덤 포레스트의 각 트리는 자기만의 부트스트랩 표본으로 학습되므로, 관측 는 전체 트리의 약 36.8%에게 한 번도 보인 적이 없다. 그 트리들만 골라 를 예측하고 집계하면, 별도 홀드아웃 없이 일반화오차 추정치가 나온다 — 이것이 OOB 오차다. 트리를 심는 과정에서 부산물로 떨어지므로 교차검증처럼 배 학습비를 낼 필요가 없다.
다만 “OOB는 공짜 CV”라는 말은 절반만 맞다. 정직하게 짚을 것 셋.
- OOB 예측은 전체 개가 아니라 개 트리의 집계다. 트리 수가 적으면 최종 모형보다 작은 앙상블을 채점하는 셈이라 비관적으로 치우친다.
- 관측이 그룹으로 묶여 있으면(같은 환자, 같은 배치) OOB도 CV와 똑같이 무너진다. 재표본 단위가 관측이면 같은 그룹의 형제가 in-bag에 남아 정보를 흘린다.
- 클래스 불균형이나 표본이 작은 설정에서 OOB 오분류율이 편향된다는 보고가 여럿 있다. 규제·계약처럼 숫자에 책임이 걸리면 여전히 봉인된 홀드아웃이 정답이다.
부트스트랩을 예측오차 추정에 직접 쓰는 계보도 여기서 나온다. .632 추정량(에프론 1983)은 낙관적인 훈련오차와 비관적인 OOB 오차를 로 섞고, .632+ 는 과적합 정도에 따라 그 비율을 조정한다. 교차검증 문서에서 CV의 사촌으로 언급되는 그것이다.
6. 실패하는 경우[편집]
부트스트랩이 “아무 데나 쓰면 되는 만능 도구”로 유통되는 것이 이 기법의 최대 위험이다. 실패가 조용하다 — 구간은 멀쩡하게 출력되고, 다만 피복확률이 명목값과 무관할 뿐이다. 실패 유형은 크게 셋이고, 공통 원인은 통계량이 에 매끄럽게(하다마르 미분가능하게) 의존하지 않는다는 것이다.
극단통계량. 최댓값 이 교과서적 반례다. 재표본의 최댓값 이 원 표본의 최댓값과 정확히 같을 확률은 위 계산의 여집합, 즉
이다. 부트스트랩 분포의 63.2%가 한 점에 뭉쳐 있는 이산 덩어리인데, 참 극한분포는 연속(적절히 정규화하면 극값 통계의 GEV족)이다. 을 아무리 키워도 이 덩어리는 0.632에서 안 줄어든다 — 일치성이 없다. 같은 이유로 최솟값·범위·경계 근처 극단분위수가 전부 위험하다. 처방은 개만 뽑는 -out-of- 부트스트랩이나 비복원 부분표본추출(subsampling)이다. 이면 저 원자가 사라진다.
매끄럽지 않은 통계량과 경계 모수. 여기는 결이 갈리니 구분해서 적는다. 표본중앙값은 미분가능하지 않지만 부트스트랩 분포는 일치한다 — 다만 수렴이 느리고 분산 추정에 조건이 붙어, “되긴 되는데 비싸다”에 가깝다. 진짜로 깨지는 것은 통계량이 꺾이는 점 위에 참값이 놓인 경우다. 를 로 추정하는데 참값이 정확히 이면, 표준 부트스트랩은 일치하지 않는다(앤드루스 2000). 분산성분이 0인 혼합효과모형, 제약 경계에 붙은 모수, 그리고 라쏘에서 참 계수가 정확히 0인 좌표의 분포 추정이 모두 같은 병이다 — 라쏘 계수의 신뢰구간을 순진한 부트스트랩으로 뽑아 보고하는 것은 지금도 흔한 실수다. 꼬리가 두꺼워 분산이 무한한 모집단( 안정분포)에서의 표본평균도 여기 낀다.
종속 데이터. iid 복원추출은 관측을 무작위로 섞어 버리므로 자기상관을 통째로 파괴한다. 양의 자기상관이 있는 시계열에서 표본평균의 참 분산은 자기공분산의 합만큼 부풀어 있는데, iid 부트스트랩은 그 몫을 통째로 빠뜨려 표준오차를 심하게 과소평가한다. 신뢰구간이 좁게 나오니 실패가 눈에 안 띄고, 유의성 검정은 죄다 통과한다.4 처방은 관측이 아니라 연속된 블록을 재표본하는 것이다.
- 이동블록 부트스트랩(퀸시 1989): 길이 의 겹치는 블록들에서 개를 복원추출해 이어 붙인다. 블록 안의 의존구조는 살고, 블록 경계에서만 끊긴다.
- 정상 부트스트랩(폴리티스·로마노 1994): 블록 길이를 기하분포로 무작위화해 재표본 계열이 정상성을 유지하게 만든다.
- AR/체 부트스트랩: 모형을 적합해 잔차를 재표본하는 모수적 접근.
핵심 손잡이는 이다. 너무 짧으면 의존을 못 살리고, 너무 길면 블록 개수가 모자라 부트스트랩 자체의 분산이 커진다. 이 과 함께 자라되 이어야 한다는 것이 이론이 요구하는 조건이고, 분산 추정 목적이면 이 표준 처방이다. 공간 데이터도 사정이 같아 공간 블록으로 묶고, 군집 데이터는 관측이 아니라 군집 단위로 재표본해야 한다.
7. 관련 문서[편집]
- 교차검증 · 편향-분산 분해 · 잭나이프
- 몬테카를로 방법 · 중요도 표본추출 · 준몬테카를로
- 최대우도추정 · 통계 · 중심극한정리
- 랜덤 포레스트 · 라쏘 · 능형회귀
- 극값 통계 · 블록 부트스트랩 · 칼만 필터
- 불확실성 정량화 · 민감도 해석 · 검증 및 확인
8. Footnotes[편집]
-
“부트스트랩”이라는 말은 컴퓨터 부팅(boot)의 어원이기도 하다. 전원이 들어오면 아무것도 없는 상태에서 자기가 자기를 끌어올려 OS를 띄운다는 그 비유. 통계와 컴퓨터가 같은 허풍선이 남작 이야기에서 이름을 빌려 온 셈이다. ↩
-
에프론이 1979년 논문에 붙인 원래 제목이 Bootstrap Methods: Another Look at the Jackknife 다. 즉 출발점은 새 기법이 아니라 잭나이프(관측을 하나씩 빼 보는 재표본법)를 다시 해석하는 것이었고, 잭나이프가 부트스트랩의 1차 선형 근사라는 관계가 뒤에 정리됐다. BCa의 가속항을 잭나이프로 추정하는 것이 우연이 아닌 이유다. ↩
-
를 얼마로 할지 물으면 “커피 한 잔 마실 동안 끝나는 만큼”이라는 답이 농담 반 진담 반으로 돌아온다. 다만 이 농담은 통계적 오차와 몬테카를로 오차를 구분한 사람만 해도 된다. 짜리 데이터에 을 돌려 놓고 소수점 넷째 자리까지 보고하는 그래프를 실제로 본 적 있다. ↩
-
종속 데이터에 iid 부트스트랩을 돌려 좁아진 신뢰구간은 이 바닥에서 가장 조용한 사고다. 결과가 발산하거나 NaN이 뜨면 차라리 다행인데, 이건 예쁜 숫자가 나오고 심지어 유의하다. 시계열·공간 데이터를 받으면 재표본 단위부터 정하는 습관이 유일한 방어다. ↩