부트캠프와 다른 AI학교,
AI는 아이펠에서 배우세요
#인공지능 

더미 변수 (Dummy Variable)

더미 변수(Dummy Variable) 는 범주형 데이터를 수치형 데이터로 변환하여 통계 분석 및 머신러닝 모델에 사용할 수 있게 하는 변수입니다. 더미 변수는 이진 변수로, 값이 0과 1로 할당되어 특정 범주에 속하는지를 나타냅니다.

2024-06-28 | 김성진

더미 변수란 무엇인가?

더미 변수(Dummy Variable) 는 범주형 데이터를 수치형 데이터로 변환하여 통계 분석 및 머신러닝 모델에 사용할 수 있게 하는 변수입니다. 더미 변수는 이진 변수로, 값이 0과 1로 할당되어 특정 범주에 속하는지를 나타냅니다.

왜 더미 변수를 만드는가?

  • 모델링의 용이성: 많은 통계 모델과 머신러닝 알고리즘은 수치형 데이터를 요구합니다. 범주형 변수를 더미 변수로 변환하면 회귀 분석, 로지스틱 회귀 등 통계적 모델에서 사용할 수 있습니다.
  • 해석의 용이성: 더미 변수는 특정 범주에 속하는지 여부를 명확하게 나타내므로, 모델의 결과를 쉽게 해석할 수 있습니다.

더미 변수의 특징

  • 범주별 변환: 범주형 변수의 각 범주는 별도의 더미 변수로 변환됩니다.
  • 해석 가능성: 0과 1로 표현된 더미 변수는 특정 범주에 속하는지 여부를 명확하게 나타냅니다.
  • 모델 호환성: 더미 변수는 수치형 데이터로 변환되므로, 통계 모델과 머신러닝 알고리즘에 쉽게 통합될 수 있습니다.

더미 변수의 한계와 주의사항

다중 공선성(Multicollinearity) 문제

여러 더미 변수를 사용하면 다중 공선성 문제가 발생할 수 있습니다. 다중 공선성(multicollinearity)은 회귀 분석에서 독립 변수들이 서로 강한 상관관계를 가질 때 발생합니다. 즉, 예측 변수들 간에 강한 선형 관계가 있는 경우를 말합니다.

다중 공선성은 다음과 같은 문제를 초래할 수 있습니다:

  • 불안정한 계수 추정: 회귀 모델의 계수(베타 값)가 매우 불안정해져서, 작은 데이터 변경에도 큰 변화가 생길 수 있습니다.
  • 해석의 어려움: 어떤 독립 변수가 종속 변수에 더 큰 영향을 미치는지 알기 어려워집니다.
  • 결론의 신뢰성 저하: 모델의 결과를 신뢰하고 해석하는 데 어려움을 겪을 수 있습니다.

예시: 텔레비전 시청과 칩 먹기

콜린은 텔레비전을 보면서 칩을 먹는 것을 좋아합니다. 더 많이 텔레비전을 보면 더 많이 칩을 먹고, 그럴수록 더 행복해집니다.

  • 상황 설명: 콜린의 행복을 측정하려고 할 때, 텔레비전을 보는 것과 칩을 먹는 것 중 어떤 것이 더 큰 영향을 미치는지 알아내기 어렵습니다. 왜냐하면 텔레비전을 볼 때마다 콜린은 칩을 먹고, 칩을 먹을 때마다 텔레비전을 보기 때문입니다.
  • 다중 공선성 문제: 텔레비전 시청과 칩 먹기 활동은 서로 강한 상관관계가 있어서, 각각의 활동이 콜린의 행복에 미치는 개별적인 영향을 분리하여 측정하기 어렵습니다.

더미 변수 함정 (Dummy Variable Trap)

더미 변수 함정은 범주형 변수를 더미 변수로 변환할 때, 모든 범주의 더미 변수를 모델에 포함시키면 발생합니다. 이는 위에서 언급한 다중 공선성 문제를 초래하며, 모델이 불필요한 중복 데이터를 포함하게 됩니다. 이같은 다중 공선성 문제를 피하기 위해, 한 개의 더미 변수를 제외하고 나머지만 모델에 포함시킵니다.

한 개의 더미 변수를 제외할 때, 기본값은 순서상 첫번째 혹은 마지막 변수를 선택합니다. 어떤 변수를 선택했는지만 안다면, 사실상 큰 문제가 아니기 때문입니다. 하지만 다음의 기준을 고려해볼 수 있습니다.

  • 기준 범주 (Baseline Category) 선택
    • 일반적으로 가장 자연스럽거나 의미 있는 기준 범주를 선택합니다. 기준 범주는 회귀 분석의 결과 해석을 위해 중요한 역할을 합니다.
    • 기준 범주를 제외하고 나머지 범주들을 더미 변수로 사용합니다. 이렇게 하면 나머지 범주들이 기준 범주와 비교되는 형태로 결과를 해석할 수 있습니다.
  • 빈도에 따라 선택
    • 특정 범주가 다른 범주에 비해 매우 빈번하게 나타나는 경우, 해당 범주를 기준으로 선택할 수 있습니다.
    • 예를 들어, 데이터셋에서 ‘서울’, ‘부산’, ‘대구’ 중 ‘서울’이 가장 빈번하게 나타난다면, ‘서울’을 기준 범주로 선택할 수 있습니다.
  • 연구 질문에 따라 선택
    • 연구나 분석의 목적에 따라 가장 관심이 없는 범주를 기준으로 선택할 수 있습니다.
    • 분석의 목적에 따라 비교 대상이 아닌 범주를 기준으로 선택하여, 나머지 범주들의 효과를 명확히 볼 수 있습니다.

더미 변수 만드는 방법

파이썬을 이용한 더미 변수 생성

파이썬에서는 `pandas` 라이브러리를 사용하여 쉽게 더미 변수를 만들 수 있습니다. `pd.get_dummies` 함수를 사용하면 범주형 데이터를 더미 변수로 변환할 수 있습니다.

예시 1: 단순한 범주형 변수 변환

import pandas as pd

# 예제 데이터프레임 생성
data = {'성별': ['남성', '여성', '여성', '남성', '여성']}
df = pd.DataFrame(data)

# 더미 변수 생성
df_dummy = pd.get_dummies(df, columns=['성별'])
print(df_dummy)

출력 결과:

  성별_남성 성별_여성
0     1       0
1     0       1
2     0       1
3     1       0
4     0       1

예시 2: 여러 범주를 가진 변수 변환

import pandas as pd

# 예제 데이터프레임 생성
data = {'지역': ['서울', '부산', '대구', '서울', '부산']}
df = pd.DataFrame(data)

# 더미 변수 생성
df_dummy = pd.get_dummies(df, columns=['지역'])
print(df_dummy)

출력 결과:

  지역_서울 지역_부산 지역_대구
0     1       0        0
1     0       1        0
2     0       0        1
3     1       0        0
4     0       1        0

첫 번째 범주를 기준으로 더미 변수 생성

`pd.get_dummies` 함수의 `drop_first=True` 옵션을 사용하면 첫 번째 더미 변수를 자동으로 제외할 수 있습니다.

예시 : 더미 변수 함정 피하기

import pandas as pd

# 예제 데이터프레임 생성
data = {'지역': ['서울', '부산', '대구', '서울', '부산']}
df = pd.DataFrame(data)

# 첫 번째 범주를 제외하고 더미 변수 생성
df_dummy = pd.get_dummies(df, columns=['지역'], drop_first=True)
print(df_dummy)

출력 결과:

  지역_부산 지역_대구
0     0       0
1     1       0
2     0       1
3     0       0
4     1       0