머신러닝(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 (이건 피하자.)