계층적 샘플링(Hierarchical Sampling 또는 Stratified Sampling)은 모집단을 특정 기준(계층, 층, Strata)으로 나눈 뒤, 각 계층에서 샘플을 추출하는 방법입니다.
대표성 확보: 모집단의 다양한 특성이 샘플에 반영되도록 함
편향(Bias) 감소: 특정 그룹이 과소/과대 대표되는 문제 방지
분석 정밀도 향상: 각 계층별 통계치를 정확하게 추정 가능
| 분야 | 활용 예시 |
|---|---|
| 마케팅 조사 | 고객을 연령대별로 나누고 각 그룹에서 동일 비율로 설문 대상 선정 |
| 인사(HR) 분석 | 부서별 직원 만족도 조사 시, 부서별 인원 비율에 맞춰 샘플 추출 |
| 품질관리 | 생산라인별 불량률 조사 시, 라인별 샘플 수를 비례 배분 |
| 데이터 분석 | 머신러닝 학습 데이터에서 클래스 불균형 문제 해결 |
계층 기준 설정
모집단 분할
샘플 크기 결정
계층별 무작위 추출(Random Sampling)
샘플 병합
장점
모집단의 다양한 특성을 반영
표본 추정치의 정확성 향상
소규모 그룹의 데이터 확보 가능
단점
계층 기준 설정이 잘못되면 오히려 편향 발생
계층별 데이터 파악과 관리가 필요 → 준비 시간 증가
계층 수가 많으면 복잡성 증가
import pandas as pd
from sklearn.model_selection import train_test_split
# 예시 데이터
data = pd.DataFrame({
'gender': ['M', 'F', 'M', 'F', 'M', 'F', 'M', 'F'],
'age_group': ['20s', '20s', '30s', '30s', '40s', '40s', '50s', '50s'],
'value': range(8)
})
# 성별을 기준으로 계층적 샘플링
train, test = train_test_split(
data,
test_size=0.25,
stratify=data['gender'], # 계층 기준
random_state=42
)
print("Train set:\n", train)
print("Test set:\n", test)
계층 기준은 분석 목적과 관련성이 높아야 함
계층별 표본 수가 너무 적으면 통계적 유의성이 떨어짐
머신러닝에서는 stratify 옵션을 활용해 클래스 불균형을 완화
L마케팅 캠페인 타겟 선정 시, 계층적 샘플링을 사용하면 특정 고객군이 과소 대표되는 문제를 줄이고, 캠페인 효과 분석의 신뢰도를 높일 수 있습니다.