범주형 데이터를 머신러닝 모델이 이해할 수 있는 숫자 형태로 바꾸는 방법 중 하나입니다.
핵심 아이디어
각 범주(category)를 고유한 위치에 1을 두고 나머지는 0으로 채우는 벡터로 변환하는 것입니다. 이렇게 하면 모델은 범주 간의 순서나 크기 관계 없이 데이터를 처리할 수 있습니다.
예시
색상 데이터: [빨강, 초록, 파랑]을 1-hot 인코딩하면:
| 색상 | 빨강 | 초록 | 파랑 |
|---|---|---|---|
| 빨강 | 1 | 0 | 0 |
| 초록 | 0 | 1 | 0 |
| 파랑 | 0 | 0 | 1 |
- 벡터 길이 = 범주의 개수
- 한 벡터에 1은 하나만 존재, 나머지는 0
장점
- 범주 간 순서 정보가 없음을 명시할 수 있음
- 신경망이나 다른 ML 모델에서 바로 사용 가능
단점
- 범주가 많으면 벡터 차원이 커짐 → 메모리 낭비
- 고차원 희소 벡터(sparse vector)가 됨
Tip: 범주가 매우 많을 때는 임베딩(Embedding)을 사용해 차원을 줄이는 것이 일반적입니다.
Multi-Hot Encoding (멀티-핫 인코딩)
K-Hot 인코딩이라고도 부릅니다.
1-Hot Encoding과 데이터를 0과 1로 표현하는 점은 같지만, “동시에 몇 개의 항목을 선택할 수 있는가?”에 결정적인 차이가 있습니다.
1-Hot vs Multi-Hot 비교
1-Hot Encoding
- 개념: 전체 벡터 중 단 하나의 값만 1(Hot)이고, 나머지는 모두 0(Cold)
- 의미: “여러 선택지 중 오직 하나만 해당됨” (상호 배타적)
- 예시 (과일 - 상자에 과일이 하나만 들어있을 때):
- 사과:
[1, 0, 0] - 배:
[0, 1, 0] - 포도:
[0, 0, 1]
- 사과:
- 사용처: 다중 클래스 분류 (Multi-class Classification)
- 예: 이 사진은 고양이인가, 강아지인가? (둘 다일 수는 없음)
Multi-Hot Encoding
- 개념: 전체 벡터 중 여러 개의 값이 동시에 1(Hot)이 될 수 있음
- 의미: “여러 선택지가 동시에 해당될 수 있음” (상호 배타적이지 않음)
- 예시 (영화 장르 - 한 영화가 여러 장르에 속할 때):
- 액션 & 코미디:
[1, 1, 0] - 코미디 & 드라마:
[0, 1, 1] - 액션만:
[1, 0, 0]
- 액션 & 코미디:
- 사용처: 다중 레이블 분류 (Multi-label Classification)
- 예: 이 영화의 장르는 무엇인가? (액션이면서 동시에 SF일 수 있음)
한눈에 보는 비교
| 특징 | 1-Hot Encoding | Multi-Hot Encoding |
|---|---|---|
| 활성화된 비트 수 | 항상 1개 | 0개, 1개, 또는 그 이상 (N개) |
| 선택의 성격 | 택 1 (Single Selection) | 다중 선택 (Multiple Selection) |
| 벡터의 합 | 항상 1 | 0 ~ N (카테고리 개수) |
| 주요 활용 | Softmax 출력층 (확률의 합=1) | Sigmoid 출력층 (각각의 독립적 확률) |
| 데이터 예시 | 혈액형 (A, B, O, AB 중 하나) | 보유 자격증 (운전면허, 정보처리기사 등 다수 보유 가능) |
요약
- 1-Hot: 정답이 하나일 때 사용 (예: 오늘 요일은?)
- Multi-Hot: 정답이 여러 개일 수 있을 때 사용 (예: 오늘 먹은 음식들은?)
참고 자료
- StatQuest: One-Hot, Label Encoding 등 다양한 인코딩 기법 설명