[AI] 원-핫 인코딩(One-Hot Encoding)

sudog·2023년 10월 19일
0

AI

목록 보기
3/3

원-핫 인코딩은 독립적인 범주형 클래스를 표현하기 위한 형식이다. 예를 들어서 사과, 바나나, 포도를 분류하는 모델의 경우를 보자.

apple = [1, 0, 0]
banana = [0, 1, 0]
grape = [0, 0, 1]

이렇게 라벨의 개수 n이 있다면 각 라벨을 해당 인덱스의 값이 1이고 나머지가 0인 n차원 벡터로 표현할 수 있다.

문자열을 모델 학습에 그대로 사용할 수 없으니 데이터 전처리 과정으로 이해할 수 있겠다. 그런데, 왜 이런 방식이어야 할까? 가령, 다음과 같이 정수로 인코딩하는 방식도 있다.

apple = 0
banana = 1
grape = 2

하지만 이런 방식은 모델이 의도하지 않은 정보를 학습할 가능성이 있다. 만약 손실 함수로 MSE를 사용할 때, 포도 사진을 입력받은 모델의 예측 결과가 사과일 때와 바나나일 때의 오차를 계산해 보자.

# 사과로 예측
loss = (2-0)^2
# loss == 4

# 바나나로 예측
loss = (2-1)^2
# loss == 1

두 경우 모두 잘못된 예측을 하였지만 그 정도가 다르게 계산된다. 따라서 모델은 포도가 사과보다 바나나와 유사하다는 잘못된 정보를 학습하게 될 것이다. 하지만 원-핫 인코딩을 사용할 경우, 두 경우 모두 12+(1)21^2 + (-1)^2로 동일한 오차를 갖는다. 즉, 원-핫 인코딩은 각 클래스의 독립성을 보장하고 모든 클래스간 거리를 동일하게 만드는 방법이다.

그렇지만 클래스가 독립적이지 않은 경우가 있을 수 있다. 예를 들어서 올림픽 선수의 신체적 요소들로 메달을 예측하는 모델이 있다고 한다면, 금메달을 딴 선수를 은메달로 예측하는 것과 동메달로 예측하는 것은 오차의 크기가 달라야 할 것이다.

이렇게 회귀를 이용해 분류하는 경우에, 정수 인코딩이 더 의미 있는 정보를 모델에게 제공할 수 있다. 정리하자면, 클래스 간에 연관성이 있는 경우 정수 인코딩, 독립적일 경우 원-핫 인코딩이 더 적합한 방식이라고 생각할 수 있겠다.

profile
안녕하세요

1개의 댓글

comment-user-thumbnail
2023년 10월 20일

적절한 예시로 이해하기가 쉽네요👍

답글 달기