데이터 전처리: 인코딩 – One-hot
ㅁ 인코딩
ㅇ 정의:
데이터의 범주형 변수를 기계학습 알고리즘이 이해할 수 있는 수치형 데이터로 변환하는 과정.
ㅇ 특징:
– 범주형 데이터를 0과 1로 이루어진 이진 벡터로 변환.
– 각 범주는 고유한 벡터의 한 위치에서만 1, 나머지는 0.
– 차원이 범주의 개수만큼 증가.
ㅇ 적합한 경우:
– 범주 간에 순서나 크기 개념이 없는 명목형 데이터.
– 알고리즘이 거리 기반 계산을 수행하는 경우(예: KNN, SVM 등).
ㅇ 시험 함정:
– 범주 수가 많으면 차원의 저주 발생 가능.
– 순서형 데이터를 원-핫으로 인코딩하면 순서 정보 손실.
– 테스트 데이터에만 존재하는 새로운 범주 처리 방법 미흡.
ㅇ 시험 대비 “패턴 보기” 예시:
O: “One-hot 인코딩은 명목형 데이터에 적합하다.”
O: “One-hot 인코딩은 각 범주를 고유한 이진 벡터로 표현한다.”
X: “One-hot 인코딩은 범주의 순서를 보존한다.”
================================
1. One-hot
ㅇ 정의:
범주형 변수를 각 범주별로 분리된 이진 특성으로 변환하는 인코딩 기법.
ㅇ 특징:
– 각 범주에 해당하는 위치만 1, 나머지는 0.
– 범주 개수만큼 새로운 특성이 생성.
– 거리 기반 알고리즘에서 범주 간 왜곡을 줄임.
ㅇ 적합한 경우:
– 범주 간 크기/순서 관계가 없는 명목형 데이터.
– 범주 수가 비교적 적은 데이터셋.
ㅇ 시험 함정:
– 범주 수가 많으면 희소 행렬로 인한 메모리 비효율.
– 새로운 범주 등장 시 재인코딩 필요.
– 순서형 데이터에 적용 시 정보 손실.
ㅇ 시험 대비 “패턴 보기” 예시:
O: “One-hot 인코딩은 각 범주를 고유한 벡터로 변환한다.”
O: “One-hot 인코딩은 명목형 데이터 처리에 적합하다.”
X: “One-hot 인코딩은 범주 간 순서를 유지한다.”
X: “One-hot 인코딩은 범주 수가 많을수록 메모리 효율이 높다.”
ㅁ 추가 학습 내용
Sparse Encoding은 One-hot 인코딩 결과로 생성되는 희소 행렬을 효율적으로 저장하여 메모리 사용량을 줄이는 방법이다. 일반적으로 One-hot 인코딩은 대부분의 값이 0인 행렬을 생성하므로, 이를 희소 행렬 형태로 저장하면 메모리 효율이 크게 향상된다.
Dummy Variable Trap은 회귀 분석에서 발생하는 다중공선성 문제를 방지하기 위해 One-hot 인코딩 시 생성된 변수 중 하나의 열을 제거하는 방법이다. 모든 더미 변수를 포함하면 선형 종속 관계가 생겨 회귀 계수 추정에 문제가 발생하므로, 기준이 될 하나의 범주를 제거하여 이를 해결한다.
Scikit-learn의 OneHotEncoder에서 handle_unknown=’ignore’ 옵션을 사용하면, 훈련 데이터에 없던 새로운 범주가 테스트 데이터에 등장할 경우 오류를 발생시키지 않고 해당 범주를 무시하여 처리할 수 있다.
One-hot 인코딩, Label Encoding, Ordinal Encoding의 차이점은 다음과 같다.
– One-hot 인코딩: 각 범주를 고유한 이진 벡터로 변환, 범주 간 순서 정보 없음, 차원 증가 가능.
– Label Encoding: 각 범주를 정수로 변환, 범주 간 순서가 없는 경우에도 숫자 크기가 의미를 가질 수 있어 주의 필요.
– Ordinal Encoding: 범주 간 순서가 있는 경우 순서에 맞춰 정수로 변환, 순서 정보가 모델에 반영됨.
적용 사례로는, 순서 없는 명목형 데이터에는 One-hot 인코딩을, 순서 있는 서열형 데이터에는 Ordinal Encoding을, 트리 기반 모델에서 범주형 처리 시에는 Label Encoding이 자주 사용된다.