호기심 많은 분석가
[Machine Learning] 카테고리 변수를 다루는 법 본문
1. 4종류의 Categorical Variables
Variable Name | 변수명 | 의미 | 예시 |
Nominal | 명목변수 | 2개 이상의 종류가 있는, 순서가 무의미한 변수 |
Blood Type (A, O,...) |
Ordinal | 순위변수 | '순서'의 개념이 존재하는 변수 | GRADE (A, B, C,..) |
Cyclical | 주기변수 | '주기'의 개념이 존재하는 변수 | DAY (Mon, Tues,...) |
Binary | 이산변수 | 2가지 종류밖에 존재하지 않는 변수 | SEX (M, F,...) |
2. Categorical Variables를 다루는 3가지 중요한 방법
2-1. ENCODING : 순위 변수는 mapping을 통해, 나머지는 Labelencoder를 통해 숫자로 변환
- 추가 정보 : SVM(Support Vector Machine)이나 NN(Neural Network) 같은 Linear MOdel에서는 데이터가 정규화되어 있을 것으로 예상하기 때문에, 이 Type을 사용할 수 없다.
2-2. Binarize : 이진화
- N개의 카테코리에 대해서 N <== 2^k를 만족하는 k개의 column이 생긴다.
- One-Hot보다 밀도가 높기 때문에 같은 데이터 대비 저장 용량이 매우 크다
- 추가적인 내용은 Scipy의 csr_matrix 참조
2-3. ONE-HOT : 원-핫 인코딩
- Binary Encoding에서는 이진화든, 원핫이든 같은 결과가 나온다.
- 하나만 1, 나머지는 0이 된다.
- 데이터가 Sparse한 대신, 저장 용량 측면에서 이점이 있다.
- Sparse 하다란, 차원/전체 공간에 비해 데이터가 있는 공간이 매우 협소한 데이터를 의미한다.
3. Categoricla 변수를 대처하는 다른 방법 - GROUPBY
3-1. GROUPBY Count로 기존의 Value 대치
3-2. 두개 이상의 변수를 묶어서 변환
- 어떤 변수들을 합쳐야 하는가?
- 데이터, feature의 종류, 도메인 지식, CPU메모리 등등에 따라 다르다.
- 이 방법을 사용시 data imbalance는 조금 해소될 수 있으나, 다중 공선성의 문제가 고려된다.
'Coding > Machine Learning & Python' 카테고리의 다른 글
[Python] f-string 문자열 리터럴 (0) | 2021.05.28 |
---|---|
[Machine Learning] LightGBM, LGBM에 대해 알아보자 (0) | 2021.05.18 |
랜덤포레스트(Random Forest) (0) | 2021.05.12 |
[Python] ImportError : cannot import name 'function' from 'module' (location) 발생 시 (0) | 2021.05.04 |
[Python] 파이썬(Python) Flask로 웹서버에서 ML model 적용시키기 (2) (0) | 2021.05.04 |