데이터 전처리: 인코딩

ㅁ 인코딩

ㅇ 정의:
데이터 전처리 과정에서 범주형(카테고리) 데이터를 머신러닝 모델이 이해할 수 있도록 숫자 형태로 변환하는 기법.

ㅇ 특징:
– 범주형 변수를 처리하는 핵심 기술
– 인코딩 방식에 따라 모델 성능 및 처리 속도에 큰 영향을 미침
– 고차원 희소 행렬 발생 가능성 존재(특히 One-hot)
– 모델 종류(트리 기반, 선형 모델, 신경망)에 따라 적합한 방식이 다름

ㅇ 적합한 경우:
– 범주형 데이터가 많은 데이터셋
– 자연어 처리, 추천 시스템, 분류 모델 등에서 범주 변수를 사용해야 하는 경우

ㅇ 시험 함정:
– 단순히 “숫자로 변환”만 하면 된다고 오해 → 인코딩 방식에 따라 성능 차이가 큼
– One-hot과 Label Encoding의 차이를 혼동하는 경우 많음
– Target Encoding과 Embedding은 고급 기법으로, 데이터 누수(Data Leakage) 위험 존재

ㅇ 시험 대비 “패턴 보기” 예시:
O: “범주형 변수를 머신러닝 알고리즘이 처리할 수 있도록 수치형으로 변환하는 과정을 인코딩이라고 한다.”
X: “인코딩은 모든 경우에 One-hot이 가장 효율적이다.”

================================

1. One-hot

ㅇ 정의:
각 범주를 고유한 벡터 인덱스에 1, 나머지는 0으로 표시하는 인코딩 방식.

ㅇ 특징:
– 범주 간 크기 관계를 반영하지 않음
– 벡터 차원이 범주의 개수만큼 커짐(희소 행렬 생성)
– 트리 기반 모델에 적합
– 범주 수가 많은 경우 메모리와 계산량 증가

ㅇ 적합한 경우:
– 범주 수가 적고, 범주의 순서나 크기 의미가 없는 경우
– 의사결정트리, 랜덤포레스트, XGBoost 등 트리 기반 모델

ㅇ 시험 함정:
– 범주 수가 많을 때도 무조건 사용하면 메모리 낭비 심함
– “크기 관계를 반영”한다고 착각하면 오답

ㅇ 시험 대비 “패턴 보기” 예시:
O: “One-hot 인코딩은 범주형 데이터의 순서를 고려하지 않는다.”
X: “One-hot 인코딩은 범주의 순서를 보존한다.”

================================

2. Label

ㅇ 정의:
각 범주를 고유한 정수 값으로 매핑하는 방식.

ㅇ 특징:
– 메모리 효율적, 구현 간단
– 범주 간 순서가 생긴 것으로 오해될 수 있음
– 선형 회귀, 로지스틱 회귀 등에서는 부적합(순서 의미 왜곡)

ㅇ 적합한 경우:
– 트리 기반 모델에서 범주형 변수를 처리할 때
– 범주의 순서가 실제 의미를 가지는 경우(예: 등급)

ㅇ 시험 함정:
– 순서 없는 범주에 Label Encoding 적용 시 모델이 잘못된 패턴 학습 가능
– “Label Encoding은 항상 안전”이라는 생각은 위험

ㅇ 시험 대비 “패턴 보기” 예시:
O: “Label Encoding은 각 범주에 정수 값을 부여하여 메모리를 절약한다.”
X: “Label Encoding은 범주의 순서를 고려하지 않는다.” (순서 고려 가능성 있음)

================================

3. Target Encoding

ㅇ 정의:
각 범주를 해당 범주의 타겟 변수 평균값(또는 통계값)으로 치환하는 방식.

ㅇ 특징:
– 범주 수가 많아도 차원 증가 없음
– 데이터 누수(Data Leakage) 위험 존재 → 학습/검증 데이터 분리 필수
– 회귀, 분류 모두 사용 가능

ㅇ 적합한 경우:
– 고카디널리티(high cardinality) 범주형 변수
– 트리 기반, 선형 모델 모두 사용 가능

ㅇ 시험 함정:
– 전체 데이터로 평균 계산 시 데이터 누수 발생 → 교차검증 기반 평균 사용해야 함
– “차원 증가가 있다”라고 하면 틀림

ㅇ 시험 대비 “패턴 보기” 예시:
O: “Target Encoding은 데이터 누수를 방지하기 위해 학습 데이터의 통계값만 사용해야 한다.”
X: “Target Encoding은 범주 수가 많을수록 차원이 증가한다.”

================================

4. Embedding

ㅇ 정의:
범주형 변수를 고정 길이의 실수 벡터로 매핑하는 방식으로, 주로 신경망에서 학습을 통해 얻음.

ㅇ 특징:
– 고차원 범주형 변수를 저차원 밀집 벡터로 표현
– 의미적으로 유사한 범주는 벡터 공간에서 가깝게 위치
– 주로 딥러닝, 추천 시스템, NLP에서 사용

ㅇ 적합한 경우:
– 범주 수가 매우 많고 범주 간 의미 관계를 모델링하고 싶은 경우
– 딥러닝 기반 모델(예: Word2Vec, BERT, 추천 시스템)

ㅇ 시험 함정:
– Embedding은 반드시 사전에 정의된 벡터를 사용하는 것이 아니라 학습 과정에서 최적화 가능
– “Embedding은 희소 벡터”라고 하면 오답 (밀집 벡터임)

ㅇ 시험 대비 “패턴 보기” 예시:
O: “Embedding은 범주형 변수를 의미적 유사도를 반영하는 밀집 벡터로 변환한다.”
X: “Embedding은 범주형 변수를 희소 벡터로 변환한다.”

================================

제가 원하시면, 위 인코딩 4가지의 비교표와 시험 단골 함정 정리표를 추가로 만들어 드릴 수 있습니다.
원하실까요? 그러면 시험 대비에 훨씬 유리합니다.

답글 남기기

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

*
*