인코딩

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

인코딩

개요

데이터 전처리 과정에서 인코딩(Encoding)은 범주형 데이터(categorical data)를 머신러닝 모델이 이해할 수 있는 수치형 형식으로 변환하는 핵심 기술입니다. 대부분의 머신러닝 알고리즘은 문자열이나 라벨 형태의 범주형 데이터를 직접 처리할 수 없으므로, 이를 숫자로 변환하는 과정이 필수적입니다. 인코딩은 데이터의 의미를 보존하면서도 모델 학습에 적합한 형태로 데이터를 재구성하는 역할을 합니다.

이 문서에서는 대표적인 인코딩 기법들 — 레이블 인코딩(Label Encoding), 원-핫 인코딩(One-Hot Encoding), 이미지 인코딩(Ordinal Encoding), 임베딩(Embedding) — 을 중심으로 설명하고, 각 기법의 사용 사례, 장단점, 그리고 실전 적용 시 고려해야 할 사항을 다룹니다.


주요 인코딩 기법

레이블 인코딩 (Label Encoding)

레이블 인코딩은 각 범주형 값에 고유한 정수를 할당하는 간단한 인코딩 방식입니다. 예를 들어, ["red", "green", "blue"]라는 색상 카테고리를 [0, 1, 2]로 매핑할 수 있습니다.

from sklearn.preprocessing import LabelEncoder

encoder = LabelEncoder()
colors = ["red", "green", "blue", "red"]
encoded = encoder.fit_transform(colors)
print(encoded)  # 출력: [2 1 0 2]

장점

  • 메모리 사용이 적고, 간단하게 구현 가능
  • 순서가 있는 데이터(순서형 변수, ordinal)에 적합

단점

  • 임의로 부여된 정수 값이 알고리즘에 "순서" 또는 "크기 비교"의 의미를 전달할 수 있음
  • 예: "red=0", "blue=2" 라고 하면 모델이 "blue가 red보다 2배 크다"고 오해할 수 있음

적합한 경우: 순서형 변수(예: "낮음", "중간", "높음") 또는 트리 기반 모델(랜덤 포레스트, XGBoost 등)에서 사용 시


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

원-핫 인코딩은 각 범주를 독립적인 이진 벡터(binary vector)로 표현하는 방식입니다. 범주의 수만큼의 새로운 열을 생성하고, 해당 범주에 해당하는 위치에만 1을, 나머지는 0을 배정합니다.

예: ["A", "B", "A", "C"] → | A | B | C | |---|---|---| | 1 | 0 | 0 | | 0 | 1 | 0 | | 1 | 0 | 0 | | 0 | 0 | 1 |

import pandas as pd

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

장점

단점

적합한 경우: 명목형 변수(nominal, 예: 국가, 색상), 범주 수가 적을 때


순서형 인코딩 (Ordinal Encoding)

순서형 인코딩은 레이블 인코딩과 유사하지만, 범주에 의미 있는 순서가 있을 때 수동으로 순위를 부여하는 방식입니다.

예: 교육 수준 → ["고졸", "학사", "석사", "박사"] → [1, 2, 3, 4]

from sklearn.preprocessing import OrdinalEncoder

encoder = OrdinalEncoder(categories=[["low", "medium", "high"]])
levels = [["low"], ["high"], ["medium"]]
encoded = encoder.fit_transform(levels)
print(encoded)  # [[0.], [2.], [1.]]

특징

  • 순서 정보를 모델에 명시적으로 전달 가능
  • 사용자가 순서를 정의해야 하므로 도메인 지식 필요

적합한 경우: 순서가 있는 범주형 변수 (예: 평점, 등급)


임베딩 (Embedding)

고차원 범주형 변수(예: 단어, 사용자 ID)를 처리할 때는 임베딩(Embedding) 기법을 사용합니다. 딥러닝 모델에서 흔히 사용되며, 범주를 고정된 크기의 밀집 벡터(dense vector)로 변환합니다.

예: 단어 "사과" → [0.8, -0.3, 1.2, 0.1]

장점

  • 차원 축소 효과
  • 유사한 범주 간의 의미적 유사성 학습 가능
  • 고차원 데이터에 적합

단점

  • 딥러닝 모델 학습 과정에서 함께 학습 필요
  • 해석이 어렵고, 사전 학습된 임베딩이 없으면 초기 성능 낮음

적합한 경우: 자연어 처리(NLP), 추천 시스템, 고유 식별자(ID) 처리


인코딩 선택 가이드

인코딩 방식 데이터 유형 차원 증가 모델 적합성 비고
레이블 인코딩 순서형 또는 이진형 없음 트리 기반 모델 순서 주의
원-핫 인코딩 명목형, 소규모 대부분의 선형 모델 더미 변수 함정 주의
순서형 인코딩 순서형 없음 모든 모델 (순서 반영 시) 수동 정의 필요
임베딩 고차원 범주형 조절 가능 딥러닝 기반 모델 학습 기반

💡 더미 변수 함정(Dummy Variable Trap): 원-핫 인코딩 후 모든 더미 변수를 유지하면 다중 공선성 문제 발생 → 일반적으로 하나의 범주를 기준으로 제거


참고 자료 및 관련 문서


인코딩은 데이터 과학 프로젝트의 성패를 좌우하는 중요한 전처리 단계입니다. 데이터의 성격과 사용하는 모델의 특성을 고려해 적절한 인코딩 방식을 선택함으로써, 모델의 성능과 해석 가능성을 동시에 높일 수 있습니다.

AI 생성 콘텐츠 안내

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

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

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