계층적 샘플링 (Stratified Sampling)

calico·2025년 11월 25일

Artificial Intelligence

목록 보기
112/171

1. 계층적 샘플링 (Stratified Sampling)


  • 계층적 샘플링(Hierarchical Sampling 또는 Stratified Sampling)은 모집단을 특정 기준(계층, 층, Strata)으로 나눈 뒤, 각 계층에서 샘플을 추출하는 방법입니다.

    • 예: 고객 데이터를 성별, 연령대, 지역 등으로 나누고 각 그룹에서 일정 비율로 표본을 뽑는 방식.



2. 활용 목적


  • 대표성 확보: 모집단의 다양한 특성이 샘플에 반영되도록 함

  • 편향(Bias) 감소: 특정 그룹이 과소/과대 대표되는 문제 방지

  • 분석 정밀도 향상: 각 계층별 통계치를 정확하게 추정 가능



3. 실무 활용 예시


분야활용 예시
마케팅 조사고객을 연령대별로 나누고 각 그룹에서 동일 비율로 설문 대상 선정
인사(HR) 분석부서별 직원 만족도 조사 시, 부서별 인원 비율에 맞춰 샘플 추출
품질관리생산라인별 불량률 조사 시, 라인별 샘플 수를 비례 배분
데이터 분석머신러닝 학습 데이터에서 클래스 불균형 문제 해결



4. 샘플링 절차


  1. 계층 기준 설정

    • 예: 성별, 연령대, 지역, 제품 카테고리 등
  2. 모집단 분할

    • 각 계층별로 데이터 그룹화
  3. 샘플 크기 결정

    • 비례 할당(Proportional Allocation): 각 계층의 모집단 비율에 맞춰 샘플 수 결정
    • 균등 할당(Equal Allocation): 각 계층에서 동일한 수의 샘플 추출
  4. 계층별 무작위 추출(Random Sampling)

    • 각 계층 내에서 랜덤하게 표본 선택
  5. 샘플 병합

    • 모든 계층의 샘플을 합쳐 최종 데이터셋 구성



5. 장단점


장점

  • 모집단의 다양한 특성을 반영

  • 표본 추정치의 정확성 향상

  • 소규모 그룹의 데이터 확보 가능

단점

  • 계층 기준 설정이 잘못되면 오히려 편향 발생

  • 계층별 데이터 파악과 관리가 필요 → 준비 시간 증가

  • 계층 수가 많으면 복잡성 증가



6. Python 예시 코드


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)



7. 주의사항


  • 계층 기준은 분석 목적과 관련성이 높아야 함

  • 계층별 표본 수가 너무 적으면 통계적 유의성이 떨어짐

  • 머신러닝에서는 stratify 옵션을 활용해 클래스 불균형을 완화

L마케팅 캠페인 타겟 선정 시, 계층적 샘플링을 사용하면 특정 고객군이 과소 대표되는 문제를 줄이고, 캠페인 효과 분석의 신뢰도를 높일 수 있습니다.



profile
개인 블로그

0개의 댓글