Meiren

[ML/전처리] encoding - label vs onehot 본문

머신러닝(machine learning)

[ML/전처리] encoding - label vs onehot

meiren 2022. 11. 29. 16:05

Categorical Encoding

범주형 변수를 머신러닝에 사용하려면, numerical 변수로 바꿔야한다.

그 방법에는 2가지가 있다.

- label encoding : 순서가 있을 때, 고유값의 개수가 많아 one-hot 의 경우 메모리 소비가 많을 때

- One-Hot Encoding : 순서가 없을 때, 고유값 개수가 많지 않아 효율적인 경우

 

Label Encoding

순서를 가진 categorical feature

- 의미 : 범주형 변수를 수치형 변수로 변경하는 것

- 표현 : n개의 범주형 데이터를 0부터 n-1까지의 연속적 수치 데이터로 표현

- 유의 : 인코딩 결과가 수치적 차이를 의미하진 않음 <- 모델 결과 해석에 유의

- 활용 : sklrean.preprocessing > LabelEncoder

from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()
le

>>> LabelENcoder()

 

 

One-Hot Encoding

의미

- categorical feature는 순서를 가지지 않음

- 목록값에 대한 이진화

- 더미변수화

- 변수 값별로 새로운 컬럼이 생기며, 그 컬럼의 값들은 0과 1로 표기된다.

 

 

더미변수의 문제

- dummy variabl trap 변수들은 각각 다른 변수들과의 상관성이 있음

- multicollimearity 문제 야기, feature간의 의존성 발생

-> 선형회귀나 로지스틱 회시에서 심각한 이슈 발생

 

 

더미변수간의 의존성 문제 해결

- dummy variables중 하나를 삭제함

- multicolinearity 체크를 위해, variance infloating factor활용

  • VIF=1, Very Less Multicollinearity
  • VIF<5, Moderate Multicollinearity
  • VIF>5, Extreme Multicollinearity (이건 피하자.)