원-핫 인코딩 사용법 — 문자 데이터를 모델이 읽는 숫자로
색상·지역 같은 범주값을 입력하면 0/1 행렬이 즉시 만들어지고, 레이블 인코딩과 나란히 비교하며 차이를 익히는 도구입니다.
어떤 상황에서 쓰는 도구인가요
머신러닝 모델은 숫자만 계산할 수 있습니다. 그런데 실무 데이터에는 '서울/부산/대전' 같은 문자(범주) 데이터가 반드시 섞여 있습니다. 가장 쉬운 해결책은 서울=1, 부산=2, 대전=3처럼 번호를 붙이는 것인데, 여기에 함정이 있습니다 — 모델은 이 숫자를 크기와 순서가 있는 값으로 읽습니다. '대전(3)은 서울(1)의 3배', '부산(2)은 서울과 대전의 중간'이라는, 존재하지 않는 관계를 학습해 버리는 것이지요.
도시 이름 사이에는 원래 순서가 없습니다. 이렇게 순서가 없는 범주를 숫자로 바꿀 때 쓰는 표준 방법이 원-핫 인코딩입니다 — 범주마다 열을 하나씩 만들고, 해당하면 1, 아니면 0을 채웁니다. 서울은 [1,0,0], 부산은 [0,1,0]이 되어 어떤 범주도 다른 범주보다 크지 않게 됩니다. 이 시뮬레이터는 그 변환 과정을 직접 값을 넣어보며 눈으로 확인하는 도구입니다.
이 도구는 무엇을 하나요
범주값을 입력하면 원-핫 인코딩 행렬(열 이름 = 범주값)이 즉시 그려지고, 바로 아래에서 같은 데이터를 레이블 인코딩(범주에 정수 부여)으로 바꾼 결과와 비교할 수 있습니다. 고유 카테고리가 많아지면 차원의 저주 경고가 뜨고, 하단 가이드 카드에는 원-핫·레이블·더미 변수 함정까지 세 가지 관점이 정리되어 있습니다. 📂 CSV 변환·저장 탭에서는 내 CSV 파일의 범주형 열에 원-핫 인코딩을 실제로 적용해 새 파일로 저장합니다.
단계별 사용법
- 데이터 넣기 — 프리셋(🎨 색상 · 🌤 날씨 · 👕 사이즈 · 📝 등급 · 🗺 지역) 중 하나를 누르거나, 입력창에 쉼표 또는 줄바꿈으로 구분한 범주값을 직접 입력하고 인코딩 ▶ 버튼을 누릅니다. 대소문자는 구분되고 공백은 자동으로 제거됩니다.
- 인코딩 결과 행렬 읽기 — 고유 범주 하나가 열 하나가 됩니다. 각 행에는 해당 범주 자리에만 1이 있고 나머지는 전부 0입니다. 행마다 1이 정확히 하나(one-hot)라는 것이 이 방식의 이름이 된 이유입니다.
- 레이블 인코딩과 비교하기 — 아래 '레이블 인코딩 비교' 표에서 같은 데이터에 정수를 부여한 결과를 봅니다. 빠르고 열이 늘지 않지만, 모델이 0→1→2를 순서로 잘못 해석할 수 있다는 주의 문구를 함께 확인하세요.
- 가이드 카드 확인 — '언제 어떤 인코딩을 쓸까?' 카드 세 장에 정리되어 있습니다. 순서가 없는 명목형 범주(색상·도시)는 원-핫, 순서가 있는 순서형 범주(사이즈·등급)와 트리 기반 모델(랜덤포레스트·XGBoost)은 레이블 인코딩, 그리고 선형 모델에서는 k개 범주 중 한 열을 빼는 더미 변수 함정(drop_first)까지 다룹니다.
- 내 파일에 적용하기 — 📂 CSV 변환·저장 탭에서 CSV 파일을 업로드(UTF-8/EUC-KR 지원, 최대 10MB)하고, 인코딩할 문자형(범주형) 열을 클릭해 선택합니다. 옵션으로 원본 열 유지 여부와 최대 카디널리티(기본 20 — 고유값이 이보다 많은 열은 건너뜀)를 정한 뒤 인코딩 적용 ▶을 누릅니다.
- 미리보고 저장하기 — 미리보기에서 파란색으로 표시된 열이 새로 생성된 0/1 이진 열입니다. 숫자형 열은 그대로 유지된 것을 확인하고 CSV 저장 ↓으로 내려받으면 됩니다.
결과를 읽는 법 — 컬럼 수 폭발에 주의하세요
원-핫 인코딩의 대가는 열 개수입니다. 고유 범주가 k개면 열이 k개 생깁니다. 색상 3종이면 3열로 끝나지만, 고객 ID나 상세 주소처럼 고유값이 수백 개인 열을 원-핫 하면 데이터가 옆으로 폭발하고, 대부분 0으로 채워진 희소한 표가 됩니다. 열이 많아질수록 모델이 일반화하기 어려워지는 차원의 저주가 시작되는 지점입니다. 시뮬레이터도 고유 카테고리가 많아지면 경고를 띄우고, 이런 열에는 Embedding이나 Target Encoding 같은 대안을 권합니다.
CSV 탭의 최대 카디널리티 옵션이 바로 이 안전장치입니다. 고유값이 상한(기본 20)을 넘는 열은 자동으로 건너뛰므로, 실수로 ID 열을 인코딩해 수백 개의 열을 만드는 사고를 막아 줍니다. 또 하나 — 선형회귀·로지스틱회귀에서는 k개 열을 전부 쓰면 완전 다중공선성이 생기므로 한 열을 빼고(k−1) 쓰는 것이 관례입니다. 트리 모델에는 해당하지 않으니 걱정하지 않아도 됩니다.