////
Search

샘플링과 리샘플링

출처

1. 샘플링(Sampling)

샘플링모집단에서 임의의 표본들을 뽑아내는 것으로 표본 추출을 의미한다.
샘플링을 하는 이유는 모집단을 전부 조사하는 것이 불가능하기 때문이다. 따라서 샘플링을 이용하여 모집단에 대한 추론을 수행한다.
추출된 표본은 가능한 모집단을 대표할 수 있는 것이 좋으며, 완벽하게 모집단과 동일하지 않기 때문에 분석시 신뢰구간, 오버피팅 등으로 고려해줄 필요가 있다.

2. 리샘플링(Resampling)

리샘플링은 말 그대로 샘플링을 다시 수행하는 것이다. 이 때 샘플링을 수행하는 대상은 원래의 샘플 즉, 표본이다. 리샘플링을 수행하는 이유는 샘플의 부분집합을 뽑아서 통계량의 변동성을 확인하기 위함이다. 주로 사용되는 방법은 k-fold 교차 검증, 부트스트랩핑(Bootstrapping)이 있다.

2-1. K-fold 교차 검증(Cross Validation)

k-fold는 샘플에서 k-1개의 동일한 크기의 부분집합들을 만들어 훈련 세트로 사용하고 나머지 하나의 부분집합을 테스트 세트(또는 검증 세트)로 사용하는 것을 말한다. 이렇게 하면 총 k개의 훈련/테스트 세트가 만들어지며 k번의 훈련과 테스트를 거쳐 k개의 테스트 결과값의 평균을 얻을 수 있다.
평가 결과와 안정성, 정확도는 k값에 의존하며 일반적으로 k는 10을 두고 검증한다. 데이터가 작거나 큰 경우에는 변경할 수 있다.
또한 샘플을 나누는 과정에서 bias가 발생할 수 있기 때문에 일반적으로 p번을 랜덤하게 반복하여 나누어서 진행한다. 즉, 최종적으로 p번의 k겹 교차 검증을 수행하게 된다.

2-2. 시계열 교차 검증

시계열 데이터 분석에서 교차검증을 할 때는 시간 순서를 유지해야 한다.
1-step CV
4-step CV
시계열 예측에서 특정 데이터는 바로 이후 데이터가 아닌 일정 스텝 이후의 데이터와 관련이 있는 경우가 있을 수 있기 때문에 다음과 같이 테스트 데이터를 n 스텝 이후의 값으로 지정하고 교차검증을 수행할 수도 있다

2-3. 부트스트래핑(Bootstrapping)

원래 부트스트래핑(bootstrapping) 방식은 다음과 같다.
1.
n개의 표본에서 m개를 복원 추출한다.
2.
m 번 재표본추출한 값의 평균을 구한다.
3.
1-2 step을 R번 반복한다.
4.
R 개의 값을 사용하여 신뢰구간을 구한다.
그리고 이를 머신러닝 방식에 적용하면 다음과 같이 활용할 수 있다.
1.
m 개의 샘플이 있는 데이터 세트 D에서 m개를 복원 추출하여 D’를 만든다.
2.
D’를 훈련 데이터로, D-D’를 테스트 데이터 세트로 사용한다.
위와 같은 방식이 활용될 수 있는 이유는 m번의 복원 추출 과정을 살펴보면 알 수 있다.
m 번의 복원 추출 과정 중 어떠한 샘플이 한 번도 뽑히지 않을 확률은 (11m)m(1-\frac{1}{m})^m이다. 그리고 극한값을 계산하면,
limx(11m)m=1e0.368\lim_{x \rightarrow \infty} (1-\frac{1}{m} )^m = \frac{1}{e} \approx 0.368
즉, 부트스트래핑을 사용하면 원래 데이터 세트 D 중에 36.8% 정도의 샘플은 D’에 들어가지 못한다는 것이다.
이러한 테스트를 Out-of-Bag이라고 한다.