Label Encoding

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

📋 문서 버전

이 문서는 2개의 버전이 있습니다. 현재 버전 1을 보고 있습니다.

Label Encoding

Label Encoding(레이블 인코딩)은 머신러닝과 데이터 과학에서 범주형(categorical) 데이터를 모델이 이해할 수 있는 수치형(numerical) 형식으로 변환하는표적인 전처리 기법 중 하나입니다. 범주형 변수는 성별(남성, 여성), 지역(서울, 부산, 대구), 제품 카테고리와 같이 유한한 값만을 가지는 변수를 말하며, 대부분의 머신러닝 알고리즘은 이러한 텍스트 기반의 데이터를 직접 처리할 수 없기 때문에 수치형으로 변환하는 과정이 필수적입니다.

Label Encoding은 각 범주에 고유한 정수 값을 매핑함으로써 이 변환을 수행합니다. 예를 들어, ['봄', '여름', '가을', '겨울']이라는 계절 변수는 [0, 1, 2, 3]과 같이 인코딩될 수 있습니다.

이 문서에서는 Label Encoding의 개념, 사용 사례, 장단점, 구현 방법 및 주의사항을 다룹니다.


Label Encoding의 원리

정의와 동작 방식

Label Encoding은 범주형 변수의 각 고유한 값을 정수(보통 0부터 시작)로 매핑하는 간단한 인코딩 기법입니다. 이 방식은 순서가 없는 범주(nominal category)와 순서가 있는 범주(ordinal category) 모두에 적용 가능하지만, 특히 순서형 변수(ordinal variable)에 적합합니다.

예를 들어, 교육 수준 변수가 다음과 같을 경우:

교육 수준
고졸
대졸
석사졸업
박사졸업

이를 Label Encoding하면:

교육 수준 인코딩 값
고졸 0
대졸 1
석사졸업 2
박사졸업 3

이러한 방식은 교육 수준의 서열 관계(고졸 < 대졸 < 석사 < 박사)를 수치적으로 표현할 수 있어 모델이 의미 있는 패턴을 학습하기에 유리합니다.


Label Encoding vs One-Hot Encoding

Label Encoding은 다른 인코딩 방식인 One-Hot Encoding(원-핫 인코딩)과 자주 비교됩니다. 두 기법의 주요 차이점은 다음과 같습니다:

항목 Label Encoding One-Hot Encoding
차원 증가 없음 (1차원 유지) 범주 수만큼 새로운 열 생성
순서 정보 반영 가능 (의도적일 경우) 불가능 (모든 범주 동등하게 취급)
사용 적합성 순서형 변수 또는 고유값이 많은 경우 명목형 변수, 고유값이 적을 때
과적합 위험 낮음 높을 수 있음 (특히 고차원일 때)
데이터 크기 증가 최소화 크게 증가

예를 들어, 100개의 도시를 나타내는 변수가 있을 경우, One-Hot Encoding은 100개의 새로운 열을 생성하지만, Label Encoding은 단일 열에 0~99의 정수를 할당하여 메모리 사용을 최소화합니다.


구현 예시 (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)[pandas](/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/pandas)를 사용하여 Label Encoding을 쉽게 구현할 수 있습니다.

scikit-learn 사용

from sklearn.preprocessing import LabelEncoder
import pandas as pd

# 샘플 데이터
data = pd.DataFrame({'계절': ['봄', '여름', '가을', '겨울', '봄']})

# Label Encoder 생성 및 적용
le = LabelEncoder()
data['계절_encoded'] = le.fit_transform(data['계절'])

print(data)

출력 결과:

  계절  계절_encoded
0   봄             0
1  여름             1
2  가을             2
3  겨울             3
4   봄             0

pandas 사용

# pandas의 factorize() 활용
data['계절_encoded_pandas'] = pd.factorize(data['계절'])[0]

또는 map()을 사용하여 수동으로 매핑 가능:

mapping = {'봄': 0, '여름': 1, '가을': 2, '겨울': 3}
data['계절_encoded_manual'] = data['계절'].map(mapping)


장점과 단점

장점

  • 메모리 효율성: 고유 범주가 많은 경우에도 차원 증가 없이 처리 가능.
  • 간단한 구현: 코드가 직관적이고 학습 곡선이 낮음.
  • 순서형 변수에 적합: 서열이 있는 데이터에서 자연스러운 수치 표현 가능.

단점

  • 의도하지 않은 순서 부여: 명목형 변수(예: 색상: 빨강, 파랑, 초록)에 Label Encoding을 적용하면 모델이 "빨강 < 파랑 < 초록"과 같은 잘못된 순서 관계를 학습할 수 있음.
  • 비대칭성 문제: 특정 값에 높은 숫자가 할당되면 가중치가 불균형하게 작용할 수 있음.
  • 모델 오해 가능성: 선형 회귀, 신경망 등에서는 인코딩된 숫자를 실제 수치로 오해할 수 있음.

사용 시 고려사항

  1. 변수의 성격 파악: 변수가 명목형(nominal)인지 순서형(ordinal)인지 반드시 확인해야 합니다.
  2. 대안 기법 검토: 고유값이 적고 명목형인 경우 One-Hot Encoding, 고유값이 매우 많은 경우 Target Encoding 또는 Embedding을 고려할 수 있습니다.
  3. 역변환 필요성: 예측 후 결과 해석을 위해 인코딩된 값을 원래 레이블로 되돌리는 [inverse_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%EC%A4%80%EB%B9%84/inverse_transform)() 사용이 중요합니다.

참고 자료 및 관련 문서


Label Encoding은 데이터 전처리의 기본이 되는 중요한 기법으로, 올바른 상황에서 사용될 경우 효율적이고 효과적인 수치화를 제공합니다. 그러나 그 단순함만큼 주의 깊은 사용이 요구되며, 데이터의 성격과 모델의 요구사항을 고려한 선택이 필수적입니다.

AI 생성 콘텐츠 안내

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

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

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