라벨 인코딩
라벨 인코딩
개요
라벨 인코딩(Label Encoding)은 머신러 및 데이터 과학 분야에서 범주형(categorical) 데이터를 모델이 처리할 수 있는 수치형 형식으로 변환하는 대표적인 데이터 인코딩 기법 중 하나입니다. 머신러닝 알고리즘은 일반적으로 문자열이나 텍스트 형태의 범주형 변수를 직접 처리할 수 없기 때문에, 이러한 변수들을 정수 값으로 매핑하는 과정이 필요하며, 이 과정을 인코딩이라고 합니다.
라벨 인코딩은 각 범주(category)에 고유한 정수 값을 할당함으로써 데이터를 변환합니다. 예를 들어, 색상 데이터에서 "빨강", "파랑", "초록"과 같은 값을 각각 0, 1, 2와 같은 정수로 매핑할 수 있습니다.
이 문서에서는 라벨 인코딩의 개념, 사용 사례, 장단점, 구현 방법, 그리고 관련 기법과의 비교를 다룹니다.
라벨 인코딩의 원리
범주형 데이터란?
범주형 데이터는 특정 범주나 그룹에 속하는 데이터를 의미합니다. 예를 들어: - 성별: "남자", "여자" - 지역: "서울", "부산", "대구" - 제품 등급: "일반", "프리미엄", "고급"
이러한 데이터는 순서가 없거나 순서가 있는 경우로 나뉘며, 각각 명목형(nominal)과 순서형(ordinal) 범주형 데이터라고 부릅니다.
인코딩 방식
라벨 인코딩은 각 범주에 0부터 시작하는 정수를 순차적으로 할당합니다. 예를 들어:
원본 데이터 (색상) | 라벨 인코딩 결과 |
---|---|
빨강 | 0 |
파랑 | 1 |
초록 | 2 |
이러한 방식은 간단하고 메모리 사용이 적으며, 특히 순서형 범주형 변수(예: "낮음", "중간", "높음")에 적합합니다.
라벨 인코딩의 사용 사례
1. 순서형 범주형 변수 처리
라벨 인코딩은 순서가 있는 범주형 변수에 적합합니다. 예를 들어: - 교육 수준: "고졸", "학사", "석사", "박사" → 0, 1, 2, 3 - 고객 등급: "브론즈", "실버", "골드" → 0, 1, 2
이 경우, 정수 값이 순서를 반영하므로 모델이 의미 있는 관계를 학습할 수 있습니다.
2. 트리 기반 모델과의 호환성
랜덤 포레스트(Random Forest), XGBoost, LightGBM 등의 트리 기반 모델은 라벨 인코딩을 잘 처리할 수 있습니다. 이 모델들은 수치의 크기를 거리로 해석하지 않고, 조건 분할을 기반으로 하기 때문에 라벨 인코딩의 단점이 크게 영향을 미치지 않습니다.
장점과 단점
장점
- 간단하고 빠름: 구현이 매우 간단하며 계산 비용이 낮습니다.
- 메모리 효율성: 원-핫 인코딩에 비해 차원 증가가 없어 메모리 사용이 적습니다.
- 순서형 변수에 적합: 순서가 있는 데이터에 자연스럽게 적용 가능합니다.
단점
- 가짜 순서 관계 생성: 명목형 변수(순서 없음)에 적용할 경우, 모델이 정수 값의 크기를 순서로 오해할 수 있습니다.
예: "서울=0", "부산=1", "대구=2" → 모델이 "대구 > 부산 > 서울"이라 해석할 수 있음. - 비대칭성: 인코딩 값의 할당 순서에 따라 결과가 달라질 수 있습니다.
- 모델 오해 가능성: 선형 회귀, 신경망 등 거리 기반 모델(distance-based models)에서는 부정확한 결과를 초래할 수 있습니다.
구현 예시 (Python)
Python의 대표적인 데이터 과학 라이브러리 [scikit-learn](/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/scikit-learn)
을 사용하면 쉽게 라벨 인코딩을 수행할 수 있습니다.
from sklearn.preprocessing import LabelEncoder
import pandas as pd
# 샘플 데이터
data = pd.DataFrame({
'color': ['red', 'blue', 'green', 'blue', 'red']
})
# 라벨 인코더 생성 및 적용
le = LabelEncoder()
data['color_encoded'] = le.fit_transform(data['color'])
print(data)
출력 결과:
color color_encoded
0 red 2
1 blue 0
2 green 1
3 blue 0
4 red 2
✅
[fit_transform](/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/fit_transform)()
는 학습 데이터에 대해 라벨을 학습하고 동시에 변환합니다.
⚠️ 테스트 데이터에는 반드시transform()
만 사용하여 동일한 매핑을 유지해야 합니다.
라벨 인코딩 vs 원-핫 인코딩
항목 | 라벨 인코딩 | 원-핫 인코딩 |
---|---|---|
차원 증가 | 없음 | 범주의 수만큼 증가 |
순서 정보 | 정수 할당으로 인해 암시적 순서 생성 | 각 범주가 독립적인 열로 표현 |
메모리 사용 | 낮음 | 높음 (특히 고유값이 많을 경우) |
적합한 모델 | 트리 기반 모델 | 거리 기반 모델 (예: SVM, KNN) |
명목형 변수 처리 | 부적합 (오해 가능성 있음) | 적합 |
참고 및 관련 문서
결론
라벨 인코딩은 범주형 데이터를 수치형으로 변환하는 데 유용한 기법이지만, 데이터의 성격(명목형 vs 순서형)과 사용할 모델의 종류를 고려하여 신중하게 적용해야 합니다. 특히, 명목형 변수에는 원-핫 인코딩이나 더미 인코딩이 더 적합하며, 순서형 변수 또는 트리 기반 모델에서는 라벨 인코딩이 효율적으로 작용할 수 있습니다.
데이터 과학 프로젝트에서 정확한 인코딩 방식을 선택하는 것은 모델 성능 향상의 핵심 요소 중 하나입니다.
이 문서는 AI 모델(qwen-3-235b-a22b-instruct-2507)에 의해 생성된 콘텐츠입니다.
주의사항: AI가 생성한 내용은 부정확하거나 편향된 정보를 포함할 수 있습니다. 중요한 결정을 내리기 전에 반드시 신뢰할 수 있는 출처를 통해 정보를 확인하시기 바랍니다.