범주형 변수

AI
qwen-3-235b-a22b-instruct-2507
작성자
익명
작성일
2025.09.01
조회수
6
버전
v1

범주형 변수

개요

범주형 변수(Categorical Variable)는 데이터 과학과 통계학에서 중요한 데이터 유형 중 하나로, 특정 범주나 그룹에 속하는 값을 가지는 변수를 의미합니다. 이 변수는 정량적인 수치가 아닌 정성적인 속성을 표현하며, 데이터 분석, 머신러닝 모델링, 데이터 시각화 등 다양한 과정에서 핵심적인 역할을 합니다. 예를 들어, 사람의 성별(남성, 여성), 혈액형(A형, B형, AB형, O형), 지역(서울, 부산, 대구 등)은 모두 범주형 변수의 예입니다.

범주형 변수는 데이터 준비 과정에서 적절한 처리가 필요하며, 대부분의 머신러닝 알고리즘이 수치 입력을 요구하기 때문에 인코딩(Encoding) 과정을 거쳐야 합니다. 이 문서에서는 범주형 변수의 정의, 유형, 전처리 방법, 그리고 분석 시 고려사항을 다룹니다.


범주형 변수의 유형

범주형 변수는 그 성격에 따라 두 가지 주요 하위 유형으로 나뉩니다:

1. 명목형 변수 (Nominal Variable)

  • 정의: 순서가 없는 범주로 구성된 변수.
  • 특징: 범주 간에 크기나 순서의 의미가 없음.
  • 예시:
  • 색상: 빨강, 파랑, 초록
  • 직업: 의사, 교사, 소방관
  • 결제 수단: 카드, 현금, 계좌이체

2. 순서형 변수 (Ordinal Variable)

  • 정의: 범주 간에 자연스러운 순서가 존재하는 변수.
  • 특징: 범주에 등급이나 순서가 있음. 예: "낮음 < 보통 < 높음"
  • 예시:
  • 만족도 평가: 불만족, 보통, 만족, 매우 만족
  • 학력: 고등학교, 전문대, 학사, 석사, 박사
  • 크기: S, M, L, XL

🔍 참고: 순서형 변수는 명목형 변수와 달리 순서 정보를 포함하므로, 인코딩 시 이 정보를 보존하는 것이 중요합니다.


데이터 준비에서의 처리 방법

머신러닝 모델은 일반적으로 수치 데이터만 처리할 수 있으므로, 범주형 변수는 전처리(Preprocessing) 과정을 통해 수치 형태로 변환되어야 합니다. 주요 방법은 다음과 같습니다.

1. 원-핫 인코딩 (One-Hot Encoding)

  • 설명: 각 범주를 독립적인 이진 변수(0 또는 1)로 변환.
  • 적용 대상: 주로 명목형 변수.
  • 장점: 범주 간에 인위적인 순서를 만들지 않음.
  • 단점: 범주 수가 많을 경우 차원이 급격히 증가(차원의 저주).

# 예시: pandas를 이용한 원-핫 인코딩
import pandas as pd

data = pd.DataFrame({'color': ['red', 'blue', 'green', 'red']})
encoded = pd.get_dummies(data, columns=['color'])

결과: | color_blue | color_green | color_red | |------------|-------------|-----------| | 0 | 0 | 1 | | 1 | 0 | 0 | | 0 | 1 | 0 | | 0 | 0 | 1 |

2. 레이블 인코딩 (Label Encoding)

  • 설명: 각 범주에 고유한 정수 값을 할당.
  • 적용 대상: 순서형 변수 또는 트리 기반 모델에서 사용.
  • 주의점: 명목형 변수에 사용 시 인위적인 순서를 암시할 수 있음.

from sklearn.preprocessing import LabelEncoder

le = LabelEncoder()
data['color_encoded'] = le.fit_transform(data['color'])

3. 타깃 인코딩 (Target Encoding)

  • 설명: 범주별 종속 변수(Target)의 평균값으로 인코딩.
  • 적용 대상: 고차원 명목형 변수.
  • 장점: 정보 손실이 적고, 모델 성능 향상 가능.
  • 단점: 과적합(Overfitting) 위험 있음 → 교차 검증(CV) 기반 인코딩 권장.

고려사항 및 주의점

  • 고유값의 수(Cardinality): 범주 수가 너무 많으면(예: 우편번호), 인코딩 후 차원 폭발이 발생할 수 있음. 이 경우 범주 축소, 임베딩, 또는 해시 인코딩을 고려.
  • 결측치 처리: 범주형 변수에서도 NaN 값이 존재할 수 있으며, 이를 별도의 범주(예: "Unknown")로 처리하거나 삭제.
  • 데이터 균형: 특정 범주가 지나치게 많거나 적을 경우, 샘플링 기법이나 가중치 조정이 필요.
  • 정보 왜곡 방지: 레이블 인코딩은 순서형 변수에 적합하며, 명목형 변수에 무분별하게 적용하면 모델이 잘못된 패턴을 학습할 수 있음.

관련 기술 및 도구

기술/도구 설명
[pandas.get_dummies](/doc/%EA%B8%B0%EC%88%A0/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B6%84%EC%84%9D%20%EB%8F%84%EA%B5%AC/%EB%8D%B0%EC%9D%B4%ED%84%B0%20%EC%A0%84%EC%B2%98%EB%A6%AC/pandas.get_dummies)() 원-핫 인코딩을 쉽게 수행
[sklearn.preprocessing.LabelEncoder](/doc/%EA%B8%B0%EC%88%A0/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B6%84%EC%84%9D%20%EB%8F%84%EA%B5%AC/%EB%8D%B0%EC%9D%B4%ED%84%B0%20%EC%A0%84%EC%B2%98%EB%A6%AC/sklearn.preprocessing.LabelEncoder) 레이블 인코딩 제공
[category_encoders](/doc/%EA%B8%B0%EC%88%A0/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B6%84%EC%84%9D%20%EB%8F%84%EA%B5%AC/%EA%B3%A0%EA%B8%89%20%EC%9D%B8%EC%BD%94%EB%94%A9/category_encoders) 라이브러리 타깃 인코딩, 베이즈 인코딩 등 고급 인코딩 기법 제공
[scikit-learn](/doc/%EA%B8%B0%EC%88%A0/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B6%84%EC%84%9D%20%EB%8F%84%EA%B5%AC/%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D%20%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC/scikit-learn)[OneHotEncoder](/doc/%EA%B8%B0%EC%88%A0/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B6%84%EC%84%9D%20%EB%8F%84%EA%B5%AC/%EB%8D%B0%EC%9D%B4%ED%84%B0%20%EC%A0%84%EC%B2%98%EB%A6%AC/OneHotEncoder) 파이프라인 통합에 유리한 클래스 기반 인코더

참고 자료


범주형 변수는 데이터 준비 과정에서 세심한 처리가 필요한 요소입니다. 적절한 인코딩 전략을 선택하고, 변수의 성격(명목형/순서형)을 정확히 이해하는 것이 고품질의 데이터 분석과 모델 성능 향상의 핵심입니다.

AI 생성 콘텐츠 안내

이 문서는 AI 모델(qwen-3-235b-a22b-instruct-2507)에 의해 생성된 콘텐츠입니다.

주의사항: AI가 생성한 내용은 부정확하거나 편향된 정보를 포함할 수 있습니다. 중요한 결정을 내리기 전에 반드시 신뢰할 수 있는 출처를 통해 정보를 확인하시기 바랍니다.

이 AI 생성 콘텐츠가 도움이 되었나요?