1. 모델과 특징의 관계를 파악하자
특징을 구성할땐 이걸 쓸껀지 말껀지 결정해야 한다. 정형데이터에서 대표모델인 GBDT는
다음과 같은 성질이 있다.
- 수치의 크기자체에 의미를 두지 않는다. 즉, 스케일링 작업이 필요없다.
- 결측값(Null data)가 있어도 그냥 진행할 수 있다.
- 결정트리의 반복작업을 통해 변수간 상호작용을 잘 반영해준다.
따라서 GBDT를 사용한다면 결측값과 범주형 변수를 다루기 쉬워 유리하다.
한편, 신경망 모델은 다음과 같은 특징이 있다.
- 수치 자체에 영향을 받는다. 즉, 스케일링 작업이 필요하다.
- 결측값을 채우고 훈련해야 한다.
- 앞층 출력값을 반영하여 변수간 상호작용을 잘 반영해준다.
따라서 신경망을 사용한다면 스케일링과 결측값 처리등 여러 전처리를 해주고 돌려야 한다.
딥러닝에서 레이블 인코딩보단 원핫인코딩이 주로 쓰이는 이유이기도 하다.
2. 결측치 처리
결측치가 존재하는 이유는 다양하다. 값을 얻는데 실패하거나 사용자가 입력폼에 입력을 안하는 등.
GBDT는 결측치를 그대로 사용할 수 있지만 이외의 여러 모델은 결측치를 채워야 한다.
물론 GBDT에서도 결측치를 적절히 채워서 더 성능을 올릴 수 있다.
결측치를 채우는 방식 또한 데이터에 따라 다르다.
- GBDT를 사용하고 그냥 놔둔다
- 평균값, 최빈값등으로 결측치를 채운다
- 상관관계가 큰 다른 변수가 있다면 그걸 이용해 메꾸기
- 결측값이 있다는 것 자체를 새로운 특징으로 만들기
여기서 결측값 존재 자체를 새로운 특징으로 만드는 점도 생각해볼만 하다.
예를 들어 행 데이터마다 결측값이 있는 변수의 개수를 센 후 이걸 분석하여 패턴을 찾을 수 있다면
새로운 특징으로 만들어줄 수 있다.
3. 수치형 변수 분석
수치형 변수 분석시 여러 스케일링과 변환기법이 사용될 수 있다.
대표적인 기법 몇가지를 정리하면,
- 표준화 : 평균 0, 분산 1로 표준화하여 값 자체의 영향을 줄인다.
- 최대-최소 스케일링: \(\frac{x-x_{min}}{x_{max}-x_{min}} \) 로 변환해준다.
- \(log(1+x)\) 값으로 변환해준다. 금액이나 횟수등이 한쪽으로 크게 편향될때 주로 쓴다
- 절댓값, 제곱근, 제곱 등 값으로 변환한다
- 구간분할: 수치형 변수를 구간을 나눠 범주형 변수로 변환한다.
- 신경망 모델에서 RankGauss 방법을 이용한다
'CS > 머신러닝' 카테고리의 다른 글
XGBoost, LightGBM 사용과 하이퍼파라미터 (0) | 2023.02.11 |
---|---|
머신러닝 자주 쓰이는 함수 정리 (1) | 2023.02.05 |
혼자 공부하는 머신러닝 + 딥러닝 - Ch 5-3 (0) | 2023.01.15 |
혼자 공부하는 머신러닝 + 딥러닝 - Ch 5-1 (0) | 2023.01.13 |
혼자 공부하는 머신러닝 + 딥러닝 - Ch 4-1 (0) | 2023.01.12 |
댓글