A Guide to Encoding & Feature Scaling
Quick Summary
실제 데이터의 범주형·수치형 특성을 모델이 이해할 수 있는 수학적 입력으로 바꾸기 위해 인코딩, 스케일링, 데이터 누수 방지 원칙을 설명한 가이드입니다.
🖼️ 인포그래픽
🖼️ 4컷 인포그래픽
💡 한 줄 요약
실제 데이터의 범주형·수치형 특성을 모델이 이해할 수 있는 수학적 입력으로 바꾸기 위해 인코딩, 스케일링, 데이터 누수 방지 원칙을 설명한 가이드입니다.
📌 핵심 요약
- 원문은 결측치와 이상치를 처리한 뒤에도 문자열을 숫자로 바꾸지 못하는 오류가 나거나, 모델이 학습은 되지만 운영 정확도가 크게 낮아질 수 있다는 문제에서 출발합니다.
- 범주형 변수는 순서가 있는 ordinal 변수와 순서가 없는 nominal 변수로 나뉘며, 순서가 있는 경우에는 Label 또는 Ordinal Encoding을 사용할 수 있지만 nominal 변수에는 인위적 크기 관계를 만들기 때문에 부적절합니다.
- 순서가 없는 범주형 변수에는 One-Hot Encoding을 적용해 각 범주를 0과 1의 이진 특성으로 표현하며, 완전한 다중공선성을 줄이기 위해 첫 번째 범주를 제거하는 방식이 소개됩니다.
- 수치형 변수는 서로 다른 범위 때문에 모델 학습에 왜곡을 줄 수 있으므로 스케일링이 필요하며, 특히 KNN이나 SVM처럼 거리 기반 방식에서는 큰 스케일의 특성이 다른 특성을 압도할 수 있습니다.
- 전처리에서 가장 중요한 규칙은 훈련 데이터에만 변환기를 fit하고, 훈련·검증·테스트 데이터에는 transform만 적용하는 것으로, 전체 데이터에서 평균·표준편차·최솟값·최댓값을 미리 계산하면 데이터 누수가 발생합니다.
🧩 주요 포인트
- 원문은 결측치와 이상치를 처리한 뒤에도 문자열을 숫자로 바꾸지 못하는 오류가 나거나, 모델이 학습은 되지만 운영 정확도가 크게 낮아질 수 있다는 문제에서 출발합니다.
- 범주형 변수는 순서가 있는 ordinal 변수와 순서가 없는 nominal 변수로 나뉘며, 순서가 있는 경우에는 Label 또는 Ordinal Encoding을 사용할 수 있지만 nominal 변수에는 인위적 크기 관계를 만들기 때문에 부적절합니다.
- 순서가 없는 범주형 변수에는 One-Hot Encoding을 적용해 각 범주를 0과 1의 이진 특성으로 표현하며, 완전한 다중공선성을 줄이기 위해 첫 번째 범주를 제거하는 방식이 소개됩니다.
- 수치형 변수는 서로 다른 범위 때문에 모델 학습에 왜곡을 줄 수 있으므로 스케일링이 필요하며, 특히 KNN이나 SVM처럼 거리 기반 방식에서는 큰 스케일의 특성이 다른 특성을 압도할 수 있습니다.
- 전처리에서 가장 중요한 규칙은 훈련 데이터에만 변환기를 fit하고, 훈련·검증·테스트 데이터에는 transform만 적용하는 것으로, 전체 데이터에서 평균·표준편차·최솟값·최댓값을 미리 계산하면 데이터 누수가 발생합니다.
🧠 상세 정리
1. 정제된 데이터와 수학적 모델 사이의 간극
원문은 데이터를 수집하고 결측치와 이상치까지 처리했더라도 곧바로 머신러닝 모델에 넣을 수 있는 것은 아니라고 설명합니다. 많은 머신러닝 알고리즘은 수학적 계산을 수행하므로 “New York”이나 “Paris” 같은 문자열 범주를 그대로 이해하지 못합니다. 또한 연봉처럼 숫자 범위가 큰 특성이 나이처럼 범위가 작은 특성을 압도하면 모델이 실제 의미와 다르게 학습할 수 있습니다. 그래서 현실의 지저분한 특성을 모델이 다룰 수 있는 형태로 바꾸기 위해 Feature Encoding과 Feature Scaling이 필요하다는 문제의식이 제시됩니다.
2. 범주형 변수와 인코딩의 기본 구분
원문은 범주형 변수를 크게 nominal 변수와 ordinal 변수로 나눕니다. nominal 변수는 국가나 색상처럼 범주 사이에 본질적인 순서가 없는 경우이고, ordinal 변수는 교육 수준이나 직급처럼 명확한 순위가 있는 경우입니다. 수학적 알고리즘은 숫자 입력을 요구하므로 이러한 범주를 구조화된 숫자로 매핑해야 합니다. 순서가 실제 의미를 갖는 경우에는 Junior를 0, Mid-level을 1, Senior를 2로 두는 식의 Label Encoding 또는 Ordinal Encoding이 적절한 예로 제시됩니다.
3. nominal 변수에 Label Encoding을 쓰면 생기는 함정
원문은 순서가 없는 nominal 변수에 Label Encoding을 적용하지 말라고 경고합니다. 예를 들어 New York을 0, Paris를 1, Tokyo를 2로 인코딩하면 모델은 Tokyo가 New York보다 크거나, New York과 Tokyo의 평균이 Paris라는 식의 잘못된 수학적 관계를 암묵적으로 받아들일 수 있습니다. 이런 인공적 관계는 거리 기반 계산이나 수치 최적화 과정에서 왜곡을 만들 수 있습니다. 따라서 도시처럼 순위가 없는 값에는 One-Hot Encoding을 사용해 각 범주의 존재 여부를 별도 이진 특성으로 표현하는 방식이 제안됩니다.
4. One-Hot Encoding과 더미 변수 함정
One-Hot Encoding은 하나의 범주형 열을 여러 개의 0 또는 1 특성으로 바꿔 각 범주가 존재하는지 나타내는 방법입니다. 이 방식은 nominal 변수에 불필요한 순위나 크기 관계를 부여하지 않는다는 장점이 있습니다. 다만 모든 범주를 그대로 열로 만들면 한 열이 나머지 열들의 조합으로 완전히 예측되는 완전 다중공선성이 생길 수 있습니다. 원문은 예를 들어 City_New York과 City_Paris가 모두 0이면 City_Tokyo가 반드시 1이 되는 상황을 들며, 이런 수학적 중복을 줄이기 위해 전처리 파이프라인에서 drop='first'로 첫 범주를 제거하라고 설명합니다.
5. 수치형 특성의 스케일 차이와 두 가지 스케일링
원문은 나이와 연 소득을 예로 들어 수치형 특성의 스케일 차이가 모델에 어떤 영향을 주는지 설명합니다. 나이는 18에서 80 사이지만 연 소득은 15,000달러에서 500,000달러까지 분포할 수 있으므로, KNN이나 SVM 같은 거리 기반 모델에서는 소득의 절대 규모가 벡터 공간을 지배할 수 있습니다. 이를 막기 위한 방법으로 Min-Max Scaling인 Normalization과 Z-Score Scaling인 Standardization이 제시됩니다. Normalization은 값을 보통 0과 1 사이로 제한해 분포 가정이 없는 알고리즘이나 엄격한 범위가 필요한 경우에 유용하지만, 극단적 이상치에 매우 민감하다는 한계가 있습니다. Standardization은 평균을 0, 표준편차를 1로 맞추며, 선형·로지스틱 회귀처럼 가우시안 분포를 가정하는 알고리즘과 Gradient Descent 기반 최적화에서 권장된다고 설명합니다.
6. 데이터 누수 방지를 위한 전처리 순서
원문의 핵심 운영 원칙은 전처리 변환기를 훈련 데이터에만 fit하고, 훈련 데이터와 검증·테스트 데이터에는 transform을 적용해야 한다는 것입니다. 전체 데이터를 나누기 전에 최솟값, 최댓값, 평균, 표준편차 같은 통계를 계산하면 테스트 데이터의 정보가 학습 과정에 새어 들어갑니다. 이 경우 테스트 단계에서는 지표가 지나치게 낙관적으로 보일 수 있지만, 실제 운영 파이프라인에 배포하면 성능이 무너질 수 있다고 경고합니다. Scikit-Learn 예시는 먼저 train_test_split으로 데이터를 분리하고, ColumnTransformer 안에서 nominal 열에는 OneHotEncoder, 수치형 열에는 StandardScaler를 적용한 뒤, X_train에는 fit_transform을, X_test에는 transform을 실행하는 흐름을 보여줍니다.
🧾 핵심 주장 / 시사점
- 전처리는 단순한 준비 단계가 아니라 모델이 현실 데이터를 수학적으로 해석하는 방식을 결정하는 구조적 설계 단계입니다.
- 범주형 변수에서 실제 순서가 있는지 없는지를 먼저 구분하지 않으면, 인코딩 자체가 모델에 잘못된 관계를 주입할 수 있습니다.
- 스케일링과 인코딩보다 더 기본적인 안전장치는 전처리 통계를 훈련 데이터에서만 학습해 테스트 데이터 정보가 새지 않게 하는 것입니다.
✅ 액션 아이템
- 범주형 피처를 순서형·무순서형으로 먼저 구분해, 순서형은 Label/Ordinal Encoding, 무순서형은 One-Hot Encoding으로 전환한다.
- 무순서형 범주 전처리에서는 다중공선성 완화를 위해 첫 번째 더미 열을 제거한 뒤 수치 모델 입력을 정비한다.
- 전처리 파라미터는 훈련 데이터에서만 fit하고 검증·테스트에는 transform만 적용해 데이터 누수를 차단한다.
❓ 열린 질문
- 거리 기반 모델에서 스케일링 적용 강도는 KNN·SVM 외 알고리즘에서도 성능에 같은 방향의 영향을 주는가?
- 무순서형 범주를 One-Hot할 때 첫 번째 범주를 제거하면, 범주 분포가 치우친 경우 예측 안정성은 어떻게 바뀌는가?
- 결측치·이상치 처리 뒤에도 남는 문자열→숫자 변환 오류를 운영 단계에서 선행 탐지하려면 어떤 점검 절차가 필요한가?