AI VIDEO BRIEFING

원-핫·레이블·타깃 인코딩의 차이: 범주형 데이터를 숫자로 바꾸는 세 가지 방법 정리

범주형 데이터를 머신러닝에 쓰려면 숫자로 바꿔야 한다. 원-핫·레이블·타깃 인코딩의 원리와 한계, 그리고 데이터 누수를 줄이는 K-폴드 타깃 인코딩까지 StatQuest 설명을 바탕으로 쉽게 정리했다.

원-핫·레이블·타깃 인코딩: 범주형 데이터를 숫자로 바꾸는 3가지 방법 영상 대표 이미지

핵심 메시지

  • 신경망이나 XGBoost 같은 많은 알고리즘은 '파란색·빨간색·초록색' 같은 이산형(범주형) 값을 잘 다루지 못해, 학습 전에 숫자로 바꿔야 한다.
  • 원-핫 인코딩은 옵션마다 새 열을 만들어 1/0으로 표시하지만, 옵션이 매우 많으면(예: 우편번호) 열이 폭발적으로 늘어난다.
  • 레이블 인코딩은 옵션에 임의의 숫자를 부여하는데, 일부 알고리즘이 그 숫자의 순서를 의미로 오해할 수 있다.
  • 타깃 인코딩은 각 범주를 예측 대상의 평균값으로 치환하며, 데이터가 적은 범주는 전체 평균과의 가중 평균으로 보정한다.
  • 타깃 인코딩은 예측 대상을 사용하므로 데이터 누수 위험이 있고, 이를 줄이려고 K-폴드 타깃 인코딩을 쓴다.

쉽게 이해하기

이론상 '좋아하는 색' 같은 이산형 특성은 대부분의 머신러닝에 써도 무방하지만, 실제로는 신경망을 포함한 많은 인기 알고리즘이 이런 값을 잘 다루지 못한다. 그래서 범주형 데이터를 학습에 쓰기 전에 숫자로 변환한다. 대표적 방법이 원-핫 인코딩이다.

원-핫 인코딩은 옵션이 셋 이상일 때 옵션마다 새 열을 만들고, 해당 값이면 1, 아니면 0을 넣는다. '좋아하는 색'이 파랑·빨강·초록 세 가지라면 세 개의 열이 생긴다. 옵션이 두 가지(예/아니오)뿐인 열은 단순히 1과 0으로 바꾼다. 문제는 미국 우편번호처럼 옵션이 4만 개가 넘으면 열이 그만큼 늘어나 데이터를 다루기 어려워진다는 점이다.

이때 대안이 레이블 인코딩이다. 각 옵션에 낮은 수부터 높은 수까지 숫자를 매긴다(파랑=0, 빨강=1, 초록=2). 다만 이 숫자는 임의일 뿐인데도, 결정 트리 같은 일부 알고리즘은 숫자의 순서를 의미로 받아들여 '빨강과 초록' 또는 '파랑과 빨강'을 억지로 묶는 등의 문제를 일으킬 수 있다.

타깃 인코딩은 임의의 숫자 대신 각 옵션에 대해 예측 대상의 평균값을 계산해 치환한다. 예컨대 파랑을 좋아하는 세 사람 중 한 명만 대상이 참이면 파랑은 1/3≈0.33으로 바뀐다. 단, 데이터가 적은 범주는 신뢰가 떨어지므로, 해당 옵션의 평균과 전체 평균을 가중 평균으로 결합한다. 가중치 m은 사용자가 정하는 하이퍼파라미터이며, 베이지안 방법과 닮아 '베이지안 평균 인코딩'이라고도 부른다.

그런데 타깃 인코딩은 예측하려는 값을 이용해 특성을 만들기 때문에, 데이터 누수(data leakage)라는 문제를 일으킨다. 데이터 누수는 훈련 데이터에서는 좋지만 테스트 데이터에서는 성능이 나쁜, 즉 과적합된 모델을 낳는다. 이를 줄이는 대표적 방법이 K-폴드 타깃 인코딩으로, 데이터를 K개의 부분집합으로 나눠 각 행을 인코딩할 때 자기 자신의 대상값을 쓰지 않는다.

주요 인사이트

  • 원-핫 인코딩은 옵션이 적을 때 깔끔하지만, 옵션 수가 많아지면 열 폭발로 데이터가 다루기 힘들어진다.
  • 레이블 인코딩은 간단하지만, 부여한 숫자의 크기·순서를 모델이 의미로 오해할 수 있어 결정 트리 등에서 문제가 된다.
  • 타깃 인코딩의 가중 평균은 데이터가 적은 범주의 값을 전체 평균(데이터가 없을 때의 최선의 추측)에 가깝게 당긴다. 데이터가 쌓일수록 추측보다 데이터를 더 신뢰한다.
  • K-폴드(또는 leave-one-out) 타깃 인코딩은 각 행이 자기 대상값을 쓰지 않게 해 데이터 누수를 줄이므로, 과적합 없이 타깃 인코딩을 활용할 수 있다.

자주 묻는 질문

왜 범주형 데이터를 숫자로 바꿔야 하나?

신경망이나 XGBoost를 포함한 많은 인기 알고리즘이 파란색·빨간색 같은 이산형 값을 잘 다루지 못하기 때문이다. 그래서 학습 전에 원-핫·레이블·타깃 인코딩 같은 방법으로 숫자로 변환한다.

레이블 인코딩은 언제 문제가 되나?

옵션에 매긴 숫자는 임의일 뿐이지만, 결정 트리 같은 일부 알고리즘이 그 숫자의 순서를 의미 있는 것으로 받아들여 관련 없는 범주를 억지로 묶는 등 잘못된 분할을 할 수 있다.

K-폴드 타깃 인코딩은 왜 쓰나?

타깃 인코딩은 예측 대상을 사용해 특성을 만들기 때문에 데이터 누수를 일으켜 과적합을 유발한다. K-폴드 타깃 인코딩은 데이터를 여러 부분집합으로 나눠 각 행이 자기 대상값을 쓰지 않게 함으로써 누수를 줄인다.

원문과 출처

이 글은 원본 영상의 자막을 바탕으로 한국어 독자를 위해 요약했습니다. 전체 맥락과 최신 정보는 원문에서 확인하세요.

YouTube 원본 영상 보기 ↗

관련 AI 소식

#원핫인코딩#레이블인코딩#타깃인코딩#데이터누수#범주형데이터