OneHotEncoder

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

OneHotEncoder

OneHotEncoder머신러닝 및 데이터 과 분야에서 범주형 데이터(c data)를 모이 처리할 수 있는 수치 형태로 변환 위해 사용되는 전처리 도구입니다. 사이킷런(Scikit-learn 라이브러리에서 제공하는 `sklearn.preprocessing.OneHotEncoder 클래스는 범주 변수를 원-핫 인코딩(One-Hot Encoding) 방으로 변환하는 데 널리 활용됩니다.

머신러닝 모델은 일반적으로 수치 데이터만을 입력으로 받아들이기 때문에, 문자열이나 레이블 형태의 범주형 데이터는 적절한 방식으로 변환되어야 합니다 OneHotEncoder는 각 범주(category)를 독립적인 이진(binary) 벡터로 표현함으로써 범주 간의 위계나 거리 관계를 부여하지 않고, 모델이 범주형 정보를 정확하게 해석할 수 있도록 도와줍니다.


원-핫 인코딩의 개념

범주형 데이터의 문제점

범주형 데이터는 예를 들어 다음과 같은 형태를 가집니다:

색상
파랑
초록

이 데이터 숫자로 단순히 매핑(예: 빨강=1,랑=2, 초록=3)하면 모델이 "파랑 빨강보다 크다" 또는 "초록이 파랑보다 두 배다"와 같은 잘못된 수치적 해석을 할 수 있습니다. 이는 범주형 변수가 본질적으로 순서가 없기 때문입니다.

원-핫 인코딩의 해결 방식

OneHotEncoder는 각 범주에 대해 독립적인 열(column)을 생성하고, 해당 범주가 존재할 경우 1, 존재하지 않으면 0을 할당합니다. 위 예시를 원-핫 인코딩하면 다음과 같습니다:

색상_빨강 색상_파랑 색상_초록
1 0 0
0 1 0
0 0 1

이 방식은 범주 간의 수치적 관계를 제거하고, 모델이 범주를 독립적인 특성으로 인식하도록 합니다.


사이킷런에서의 사용 방법

OneHotEncodersklearn.preprocessing 모듈에서 제공되며, 다음과 같은 방식으로 사용됩니다.

기본 사용 예시

from sklearn.preprocessing import OneHotEncoder
import numpy as np

# 범주형 데이터 예시
data = [['빨강'], ['파랑'], ['초록'], ['빨강'], ['파랑']]

# 인코더 생성 및 학습
encoder = OneHotEncoder(sparse=False)  # sparse=True는 희소 행렬 반환
encoded_data = encoder.fit_transform(data)

print(encoded_data)

출력 결과:

[[1. 0. 0.]
 [0. 1. 0.]
 [0. 0. 1.]
 [1. 0. 0.]
 [0. 1. 0.]]

주요 파라미터

파라미터 설명
sparse True일 경우 희소 행렬(sparse matrix) 반환 (메모리 효율적). False는 일반 NumPy 배열 반환.
drop 중복 정보 방지를 위해 특정 범주를 제거. 예: drop='first'는 첫 번째 범주를 생략하여 다중공선성 방지.
[handle_unknown](/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%A0%84%EC%B2%98%EB%A6%AC/handle_unknown) 학습 시 보지 못한 새로운 범주 처리 방식. 'error'(기본), 'ignore' 가능.
[categories](/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%A0%84%EC%B2%98%EB%A6%AC/categories) 범주 집합을 미리 지정 가능. 일반적으로 fit() 시 자동 추출.

주의사항 및 고려사항

더미 변수 트랩(Dummy Variable Trap)

원-핫 인코딩은 범주 수만큼의 열을 생성하므로, 모든 범주를 포함하면 다중공선성(multicollinearity) 문제가 발생할 수 있습니다. 예를 들어, 두 범주(남성, 여성)가 있을 때 두 열을 모두 사용하면 한 열이 다른 열의 정보를 완전히 유추할 수 있습니다.

이를 방지하기 위해, 대부분의 회귀 분석에서는 더미 변수를 하나 제거하는 것이 일반적입니다. drop='first' 옵션을 사용하면 자동으로 첫 번째 범주를 제외합니다.

고차원 데이터 문제

범주 수가 매우 많은 경우(예: 국가, 도시, 제품 코드 등), 원-핫 인코딩은 피처 수를 급격히 증가시켜 차원의 저주(curse of dimensionality)를 유발할 수 있습니다. 이 경우 다음과 같은 대안을 고려합니다:


관련 도구 및 비교

인코딩 방식 설명 장점 단점
OneHotEncoder 각 범주를 이진 벡터로 변환 모델 해석 용이, 순서 정보 없음 고차원화 위험
LabelEncoder 범주를 0, 1, 2, ...로 매핑 간단하고 메모리 효율적 순서 정보 오해 가능
OrdinalEncoder 순서가 있는 범주에 사용 순서 정보 반영 가능 순서가 없는 데이터에 부적합

🔍 참고: [pandas.get_dummies](/doc/%EA%B8%B0%EC%88%A0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/%EB%8D%B0%EC%9D%B4%ED%84%B0%20%EB%B6%84%EC%84%9D%20%EB%8F%84%EA%B5%AC/pandas.get_dummies)()도 유사한 기능을 제공하지만, OneHotEncoder[Pipeline](/doc/%EA%B8%B0%EC%88%A0/%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4%20%EA%B0%9C%EB%B0%9C/%EA%B0%9C%EB%B0%9C%20%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4/Pipeline)과 통합이 용이하고, 새로운 데이터에 대해 일관된 인코딩을 유지할 수 있어 머신러닝 워크플로에서 더 권장됩니다.


활용 사례

  • 분류 모델 전처리: 범주형 입력 변수를 로지스틱 회귀, 신경망 등에 입력하기 전 변환
  • 회귀 분석: 범주형 독립 변수를 더미 변수로 처리
  • 클러스터링: 거리 기반 알고리즘에서 범주형 변수를 수치화

참고 자료

OneHotEncoder는 데이터 과학 프로젝트에서 범주형 변수를 다룰 때 핵심적인 도구이며, 올바른 사용을 통해 모델의 성능과 해석 가능성을 크게 향상시킬 수 있습니다.

AI 생성 콘텐츠 안내

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

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

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