데이터가 너무 커서 다 분석할 수 없을 때, 전체를 잘 대표하는 일부만 뽑아 쓰는 방법이다. 뽑은 것을 다시 넣지 않고 뽑을 수도, 다시 넣고 뽑을 수도 있고, 무리를 나눠 무리마다 뽑을 수도 있다. 작은 표본으로 빠르게 분석할 수 있지만, 뽑는 방법이 나쁘면 드문 무리를 통째로 놓쳐 전체와 다른 결론이 나온다.
예시로 보기
고객 1,000명 중 VIP가 10명(1%)이다. 20명만 무작위로 뽑아 설문하면 VIP가 한 명도 안 뽑힐 확률이 약 \(0.99^{20} \approx 0.82\)다1. 열 번에 여덟 번은 VIP 의견 없이 결론을 내는 셈이다.
등급을 먼저 나눠(VIP 10명, 일반 990명) 각 등급에서 같은 비율로 뽑으면 이 문제가 없다. 100명을 뽑는다면 VIP에서 1명, 일반에서 99명을 뽑는다. 이렇게 나눈 무리 하나하나를 층이라 부르고, 층마다 뽑는 방법을 층화 추출이라 부른다.
정의
표본 추출은 대표성 있는 소수의 자료만 뽑아 데이터 크기를 줄인다. 데이터가 너무 클 때 쓸모 있다.
| 방법 | 하는 일 | 특징 |
|---|---|---|
| 비복원 추출 | 데이터 \(D\)에서 뽑은 것을 다시 넣지 않는다 | 같은 자료가 두 번 뽑히지 않는다 |
| 복원 추출 | 뽑은 것을 다시 \(D\)에 넣고 또 뽑는다 | 같은 자료가 여러 번 뽑힐 수 있다 |
| 층화 추출 | \(D\)를 겹치지 않는 부분(층)으로 나누고 층마다 뽑는다 | 층의 비율이 표본에 그대로 남는다 |
복원 추출로 \(n\)개에서 \(n\)개를 뽑으면, 어떤 자료가 한 번도 안 뽑힐 확률은 \((1 - \frac1n)^n\)이다. \(n = 100\)이면 약 0.366이라, 서로 다른 자료는 평균 약 63.4개만 들어간다1.
활용
- 복원 추출은 배깅이 훈련 자료를 여러 벌 만들 때 쓴다1.
- 층화 추출은 분류 모델을 평가할 때 훈련·시험 자료의 정답 비율을 맞추는 데 쓴다. 사이킷런
train_test_split(..., stratify=y)가 이것이다1.
연결
확인 문제
C1 다음에 알맞은 추출 방법은? ① 1억 건의 로그에서 분석용으로 10만 건을 겹치지 않게 뽑는다 ② 같은 자료로 서로 조금씩 다른 훈련 자료 여러 벌을 만든다 ③ 사기 거래가 0.1%뿐인 자료에서 시험 자료를 뽑는다
답: ① 비복원 추출 ② 복원 추출(중복이 생겨 벌마다 조금씩 달라진다) ③ 층화 추출. 단순 추출이면 시험 자료에 사기 거래가 거의 없거나 아예 없을 수 있다.
C2 고객 1,000명 중 VIP가 10명이다. 20명을 단순 무작위로 뽑으면 VIP가 빠질 확률은 대략 얼마이고, 층화 추출은 이 문제를 어떻게 막는가?
답: 한 명이 VIP가 아닐 확률이 0.99라 약 \(0.99^{20} \approx 0.82\)다. 층화 추출은 VIP 층과 일반 층에서 따로 뽑으므로 VIP가 반드시 비율만큼 들어간다1.