데이터 전처리: 인코딩 – 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이 자주 사용된다.

답글 남기기

Your email address will not be published. Required fields are marked *.

*
*