머신러닝이나 딥러닝을 공부하다 보면 가장 먼저 마주치는 전처리 기법 중 하나가 원-핫 인코딩(One-Hot Encoding)입니다. 단순히 “범주형 데이터를 숫자로 바꾸는 방법”이라고만 외우기엔, 왜 이 방식이 필요한지 이해하지 않으면 모델 설계에서 계속 헷갈리게 됩니다.
이 글에서는 원-핫 인코딩을 왜 쓰는지를 모델의 관점에서 설명하겠습니다.
1. 모델은 ‘숫자’만 이해
딥러닝 모델은 결국 수학적인 함수입니다.
- 입력 → 가중치(weight) → 연산 → 출력
- 이 과정에서 문자, 카테고리, 의미는 직접 이해하지 못합니다.
- 모델이 다룰 수 있는 건 오직 숫자 벡터
| Red |
| Blue |
| Green |
이 상태로는 모델에 바로 넣을 수 없기 때문에 “숫자로 바꿔야 한다”는 필요성이 생깁니다.
2. 그냥 숫자로 바꾸면 생기는 문제
가장 단순한 생각하면 아래와 같이 하게됩니다.
- Red → 1
- Blue → 2
- Green → 3
하지만 이 방식에는 치명적인 문제가 있는데, 모델이 ‘순서’와 ‘크기’를 의미로 오해하게 됩니다.
즉, 모델 입장에서 보면,
하지만 색상에는 대소관계도, 거리 개념도 없어서 아래처럼 논리적인 문제가 발생합니다.
(잘못된 수학적 의미를 강제로 주는 것)
- Green이 Red보다 3배 더 크다? ❌
- Blue가 Red보다 조금 더 비슷하다? ❌
3. 원-핫 인코딩의 핵심 아이디어
원-핫 인코딩은 이 문제를 아주 단순한 방식으로 해결합니다.
“모든 범주는 서로 완전히 독립적이다”
예를 들어 색상이 3개라면, 벡터를 아래와 같이 만듭니다.
| Red | [1, 0, 0] |
| Blue | [0, 1, 0] |
| Green | [0, 0, 1] |
특징은 두가지만 기억하시면 됩니다.
- 한 벡터에서 1은 단 하나
- 나머지는 전부 0
그래서 이름도 One-Hot이 됩니다.
4. 모델 관점에서 왜 이게 중요한가
(1) 잘못된 관계를 학습하지 않게 한다
원-핫 인코딩을 쓰면 모델은 이렇게 인식합니다.
- Red, Blue, Green은 서로 크기 비교 불가
- 단지 서로 다른 위치의 활성화 신호
즉, 모델은 “이 입력에서 어떤 차원이 켜졌는가?” 만 보게 됩니다.
(2) 가중치 해석이 명확해진다
원-핫 벡터는 이런 장점도 있습니다.
- 실제로는 해당 클래스에 대응하는 가중치 하나만 선택합니다.
- 나머지는 전부 0이라 영향 없습니다.
각 범주가 자기 전용 가중치를 갖는 효과
(3) 분류 문제와 잘 맞는다
특히 다음 상황에서 원-핫 인코딩은 거의 필수입니다.
- Softmax 출력
- Cross Entropy Loss
- Multi-class Classification
정답 레이블을 아래와 같이 표현됩니다.
- Class 2 정답 → [0, 1, 0, 0]
모델의 예측 확률 벡터와 직접 비교가 가능
5. 언제 원-핫 인코딩이 “좋지 않을까?”
물론 만능은 아닌데요. 원-핫 인코딩은 아래의 경우에 사용하기 힘들어집니다.
(1) 범주 개수가 너무 많을 때
- 예: 단어 100,000개
- 벡터 차원이 폭발 → 메모리 & 연산 낭비
➡ 이럴 땐 Embedding을 사용
(2) 순서가 실제로 의미가 있는 경우
- 학년 (1학년, 2학년, 3학년)
- 만족도 (매우 나쁨 ~ 매우 좋음)
➡ 이런 경우는 Ordinal Encoding이나 스케일링이 더 적절합니다.
6. 결론
원-핫 인코딩은 범주형 데이터에 존재하지 않는 ‘순서’와 ‘크기’를 모델이 오해하지 않도록 막아주는 가장 안전한 표현 방식입니다.
'Computer Science > 딥러닝' 카테고리의 다른 글
| 딥러닝 모델의 최적화 기법 정리 (0) | 2026.02.14 |
|---|---|
| 임베딩(Embedding)을 하는 이유와 개념 (0) | 2026.02.08 |
| 다중공선성이란? (0) | 2026.02.05 |
| 파운데이션 모델(Foundation Model)이란? (0) | 2026.01.31 |
| Latent Space(잠재공간)란? (0) | 2026.01.23 |