원-핫 인코딩 (One-hot Encoding)
쉽게 풀면
세 가지 색깔(빨강, 파랑, 노랑)을 컴퓨터에게 숫자로 알려줘야 한다고 해봅시다. 그냥 빨강=1, 파랑=2, 노랑=3으로 정하면, 컴퓨터는 "노랑이 빨강보다 3배 크다"거나 "파랑이 빨강과 노랑의 중간"이라는 식으로 실제로는 없는 크기·순서 관계를 오해할 수 있습니다. 원-핫 인코딩은 이 문제를 피하기 위해, 항목 개수만큼 자리를 만들어 놓고 해당하는 자리만 1로 켜고 나머지는 전부 0으로 끕니다. 빨강은 (1,0,0), 파랑은 (0,1,0), 노랑은 (0,0,1)처럼요. 이렇게 하면 세 색깔은 서로 완전히 동등하게, 크기 비교 없이 "다르다"는 사실만 표현됩니다.
왜 중요한가
대부분의 머신러닝·통계 모델은 숫자 벡터를 입력으로 받기 때문에, 텍스트나 범주처럼 순서 없는 데이터를 어떻게 숫자로 바꾸는지가 모델 성능에 큰 영향을 미칩니다. 원-핫 인코딩은 이 변환 문제에 대한 가장 단순하고 직관적인 해법이어서, 자연어처리 초기 단계의 토큰 표현부터 표 형태 데이터의 범주형 변수 처리, 회귀분석의 더미변수 구성에 이르기까지 매우 폭넓게 등장하며, 이후 등장하는 임베딩 같은 정교한 표현 기법을 이해하는 출발점이기도 합니다.
논문에서는 이렇게 쓰입니다
이 문장은 "서울, 부산, 대구"처럼 순서가 없는 지역 이름을 그대로 숫자로 바꾸지 않고, 각 지역마다 별도의 0/1 자리를 만들어 모델이 지역 간에 잘못된 크기 관계를 학습하지 않도록 처리했다는 뜻입니다.
초기 자연어처리 연구에서 단어를 표현하던 방식과 그 한계를 설명하며, 이후 임베딩 기법이 등장하게 된 배경을 보여줍니다.
사회과학 통계 분석에서도 범주형 설문 응답을 회귀모형에 넣을 수 있는 형태로 바꾸는 절차로 원-핫 인코딩(더미변수화)이 쓰입니다.
조금 더 깊게 보면
회귀분석 전통에서는 원-핫 인코딩과 사실상 같은 방식을 흔히 "더미변수화"라고 부르며, 이때는 다중공선성을 피하기 위해 범주 중 하나를 기준 범주로 남겨두고 나머지에 대해서만 0/1 변수를 만드는 방식(k개 범주에 k-1개 변수)을 주로 씁니다. 반면 머신러닝에서는 다중공선성보다 정보 손실 없는 표현이 더 중요하므로 범주 개수만큼 그대로 변수를 만드는 경우가 많습니다. 범주 수가 매우 많을 때 발생하는 고차원·희소성 문제를 완화하기 위해 해시 트릭(hashing trick)이나 저차원 임베딩으로 대체하는 것도 실무에서 흔히 볼 수 있는 대안입니다.
주의할 점
범주(항목) 개수가 아주 많아지면 원-핫 벡터의 차원도 그만큼 늘어나 계산량이 커지고 대부분이 0으로 채워진 희소(sparse) 벡터가 됩니다. 이 때문에 범주 수가 많은 경우에는 임베딩처럼 더 조밀하고 저차원인 표현 방식을 대신 쓰기도 합니다. 또한 원-핫 인코딩은 순서가 없는 범주형 변수에 적합하며, 크기 순서가 있는 변수(예: 학점 등급)에는 다른 인코딩 방식이 더 적절할 수 있습니다.