더미 변수
더미 변수
개
더미 변수(Dummy Variable 또는 일변량 가변수(One-hot Encoding Variable)는 범주형 데이터(categorical data) 수치형 데이터로 변환하기 위해 사용하는 통계 및 데이터 과학의 핵심 기법입니다. 머신러닝 모델이나 회귀 분석과 같은 수적 알고리즘은 일반적으로 숫자 데이터만을 입력으로 처리할 수 있기 때문에, 문자열이나 범주 형태의 변수(예: 성별, 지역, 직업군 등)를 모델에 입력하기 위해서는 이를 수치 형태로 변환해야 합니다. 이 과정에서 더미 변수가 활용됩니다.
더미 변수는 특정 범주에 속하는지를 0 또는 1로 표시하는 이진(binary) 변수입니다. 예를 들어, '지역'이라는 변수가 '서울', '부산', '대구' 세 가지 범주를 가질 경우, 각 범주에 대해 하나의 더미 변수를 생성하여 해당 범주에 속하면 1, 아니면 0을 할당합니다.
이 문서는 더미 변수의 개념, 생성 방식, 활용 예시, 주의사항 및 데이터 과학에서의 중요성을 다룹니다.
더미 변수의 원리
범주형 변수의 문제점
범주형 변수는 고유한 값의 집합을 가지며, 그 값들 사이에 순서나 크기 관계가 없을 수 있습니다. 예를 들어, 색상 변수에서 '빨강', '파랑', '초록'은 단순히 구분되는 값이지, 수치적인 크기 차이가 없습니다. 그러나 이를 그대로 숫자(예: 빨강=1, 파랑=2, 초록=3)로 인코딩하면 알고리즘이 '파랑이 초록보다 크다'는 잘못된 순서 정보를 추론할 수 있습니다.
이러한 문제를 해결하기 위해 더미 변수화(Dummy Encoding)를 사용합니다.
더미 변수 생성 방식
가장 일반적인 방법은 원-핫 인코딩(One-Hot Encoding)입니다. 이 방법은 각 범주에 대해 하나의 새로운 이진 변수를 생성합니다.
예를 들어, 다음과 같은 데이터가 있다고 가정합니다:
이름 | 지역 |
---|---|
홍길동 | 서울 |
김철수 | 부산 |
이영희 | 대구 |
박민수 | 서울 |
이를 더미 변수로 변환하면:
이름 | 지역_서울 | 지역_부산 | 지역_대구 |
---|---|---|---|
홍길동 | 1 | 0 | 0 |
김철수 | 0 | 1 | 0 |
이영희 | 0 | 0 | 1 |
박민수 | 1 | 0 | 0 |
각 행은 특정 지역에 속하는지를 1로 표시하고, 나머지는 0으로 표시합니다.
더미 변수와 가변수 함정 (Dummy Variable Trap)
다중공선성 문제
더미 변수를 생성할 때 주의해야 할 중요한 통계적 문제는 가변수 함정(Dummy Variable Trap)입니다. 이는 더미 변수들 사이에 완전한 선형 종속성(linear dependency)이 발생하여 회귀 분석 시 다중공선성(multicollinearity)이 생기는 현상입니다.
예를 들어, 지역이 3개 범주(서울, 부산, 대구)라면 3개의 더미 변수를 만들 수 있지만, 실제로는 N-1개의 더미 변수만 사용해야 합니다. 왜냐하면 세 변수 중 두 개를 알면 나머지 하나는 자동으로 결정되기 때문입니다 (예: 서울=0, 부산=0이면 대구=1임).
따라서 통계 모델링(특히 선형 회귀)에서는 기준 범주(reference category)를 설정하고, 나머지 범주에 대해 N-1개의 더미 변수를 생성합니다.
예시: 회귀 분석에서의 적용
임금을 예측하는 회귀 모델에서 '학력' 변수(고졸, 대졸, 대학원졸)를 더미 변수로 포함할 때:
- 기준 범주: 고졸
- 더미 변수:
대졸
,대학원졸
이 경우, 고졸자는 두 더미 변수 모두 0, 대졸자는 대졸=1
, 대학원졸자는 대학원졸=1
이 됩니다. 계수 해석 시, 기준 범주(고졸) 대비 대졸 또는 대학원졸의 임금 차이를 분석할 수 있습니다.
데이터 과학에서의 활용
머신러닝 모델 입력 전처리
대부분의 머신러닝 알고리즘(scikit-learn, XGBoost 등)은 범주형 변수를 직접 처리하지 못하므로, 더미 변수화는 전처리 과정에서 필수적입니다.
import pandas as pd
data = pd.DataFrame({'지역': ['서울', '부산', '대구', '서울']})
dummy_data = pd.get_dummies(data, columns=['지역'], drop_first=True)
print(dummy_data)
출력:
지역_부산 지역_서울
0 0 1
1 1 0
2 0 0
3 0 1
drop_first=True
옵션을 사용하면 기준 범주를 자동 제거하여 가변수 함정을 방지합니다.
고차원 문제와 대안
범주 수가 매우 많은 경우(예: 100개 이상의 도시), 더미 변수 생성 시 피처 수가 급격히 증가하여 차원의 저주(Curse of Dimensionality) 문제가 발생할 수 있습니다. 이 경우 다음과 같은 대안 기법을 고려합니다:
- 임베딩(Embedding): 딥러닝에서 범주형 변수를 저차원 밀집 벡터로 변환
- 타겟 인코딩(Target Encoding): 범주별 타겟 평균으로 인코딩
- 해싱 트릭(Hashing Trick): 해시 함수를 이용해 차원 축소
참고 자료 및 관련 문서
- Pandas 공식 문서 - get_dummies
- James, G., Witten, D., Hastie, T., & Tibshirani, R. (2013). An Introduction to Statistical Learning. Springer. (더미 변수와 회귀 분석 설명)
- Scikit-learn:
[OneHotEncoder](/doc/%EA%B8%B0%EC%88%A0/%EB%8D%B0%EC%9D%B4%ED%84%B0%EA%B3%BC%ED%95%99/%EB%8D%B0%EC%9D%B4%ED%84%B0%20%EB%B6%84%EC%84%9D%20%EB%8F%84%EA%B5%AC/OneHotEncoder)
클래스 - "Dummy Variable Trap" – 통계학 교재 또는 머신러닝 전처리 가이드
더미 변수는 데이터 과학에서 범주형 데이터를 효과적으로 활용하기 위한 기초적이면서도 필수적인 기법입니다. 올바르게 적용하면 모델의 정확도와 해석 가능성을 크게 향상시킬 수 있습니다.
이 문서는 AI 모델(qwen-3-235b-a22b-instruct-2507)에 의해 생성된 콘텐츠입니다.
주의사항: AI가 생성한 내용은 부정확하거나 편향된 정보를 포함할 수 있습니다. 중요한 결정을 내리기 전에 반드시 신뢰할 수 있는 출처를 통해 정보를 확인하시기 바랍니다.