햅삐 크리스마스~~ 머신러닝 파티 어예~~
(과제를 위한) 머신러닝 공부.
변수 처리를 공부하다가 나온 함정. 처음 들어봐서 정리해봄.
가변수의 함정.
1. 더미 변수 함정 (Dummy Variable Trap)
- 가변수를 원-핫 인코딩(One-Hot Encoding)으로 변환할 때, 모든 범주를 더미 변수로 포함하면 다중공선성(multicollinearity) 문제가 발생함.
- 예:
범주형 변수 "색깔"이 {빨강, 파랑, 노랑}인 경우, 세 개의 더미 변수를 만들면 총합이 항상 1이 됨.
이로 인해 선형 회귀 모델 등에서는 상관 관계가 높아져 계산이 불안정해질 수 있음.
- 해결 방법:
하나의 더미 변수를 제거하여 기준값(reference category)을 설정합니다. 예: {파랑, 노랑}만 남기고 빨강은 기준값으로 처리.
2. 카디널리티 문제 (High Cardinality)
- 범주형 변수가 너무 많은 고유값(unique values)을 가지는 경우(예: 우편번호, 제품 ID), 원-핫 인코딩을 하면 차원이 급격히 증가하여 모델이 과적합(overfitting)되거나 연산이 비효율적이게 됨.
- 해결 방법:
중요도가 낮은 범주를 묶어서 "기타"로 처리하거나,
임베딩(Embedding) 기법을 사용하여 범주형 데이터를 저차원 벡터로 표현합니다.
3. 순서가 없는 범주를 잘못 처리
- 순서가 없는 범주형 변수(예: 동물 종류: {고양이, 개, 새})를 수치형으로 변환하는 경우, 모델이 이 값 사이에 순서를 가정할 수 있음.
- 예:
"고양이=1, 개=2, 새=3"으로 변환하면, 모델은 개가 고양이보다 크고, 새가 개보다 크다고 잘못 해석할 수 있음.
- 해결 방법:
순서가 없는 경우에는 원-핫 인코딩 또는 임베딩을 사용하는 것이 적합합니다.
4. 중요한 범주 간 관계를 놓침
- 원-핫 인코딩은 범주형 변수들 간의 관계를 고려하지 않음.
- 예:
"도시"라는 변수에서 "서울"과 "부산"은 지리적으로 가까운 관계이지만, 원-핫 인코딩으로는 이를 반영할 수 없음.
- 해결 방법:
특정 알고리즘(예: 의사결정 나무 기반 모델)이나 특징 엔지니어링을 통해 관계를 반영하거나,
Target Encoding 또는 Count Encoding과 같은 방법을 사용함.
요약
가변수 처리는 머신러닝에서 매우 중요한 작업임. 이를 잘못 처리하면 데이터의 구조적 정보를 잃거나 모델 성능에 부정적인 영향을 미칠 수 있음. 따라서 문제의 본질과 데이터의 특성에 따라 적합한 인코딩 방식을 선택하는 것이 중요함.