데이터 전처리 중 ‘분석 변수 처리’에는 크게 (1) 변수 선택, (2) 차원 축소, (3) 파생 변수 생성, (4) 변수 변환, (5) 불균형 데이터 처리가 있습니다. 이 중 ‘변수 선택 및 차원 축소’는 지난 포스팅(바로가기)을 통해 소개해드렸습니다. 이번 포스팅에서는 나머지 분석 변수 처리 방법에 대해 알아보고자 합니다.
1. 데이터 전처리 – 분석 변수 처리
1) 파생 변수 생성
파생 변수(Derived Variables)는 쉽게 말하자면 사용자가 기존 변수를 조합해서 새롭게 만든 변수입니다. 그렇기 때문에 매우 주관적일 수 있습니다. 특정상황에만 유의미하지 않게 대표성을 가지고 있어야 하며, 논리적 타당성을 갖춰 개발해야 합니다.
- 단위 변환 : 변수 단위나 척도를 변환
- 요약 통계량 변환
- 변수 분해 예) 주민등록번호를 나이로 적용
- 변수 결합 : 수학적 결합을 활용 예) 키, 몸무게로 BMI 구하기
2) 변수 변환
변수 변환(Variable Transformation)은 분석하기 용이하게 데이터를 바꾸는 과정입니다. 대표적인 변수 변환 방법은 아래와 같습니다.
2-1) 범주형 변환
- 연속형 변수 중에서 분석결과의 명료성, 정확성을 강화하기 위해 범주형으로 변환
- 예) 상위 20% 소득가정의 문화여가비 지출이 하위 20%보다 10배 많다
2-2) 정규화
연속성(이산형) 데이터 값을 사용하는 대신 정규화를 이용할 수 있습니다.
- 최소-최대 정규화(Min-Max Normalization) : 데이터를 특정 구간으로 변환(0 < 데이터 < 1, 최소값 0, 최대값 1), 단, 이상값 영향을 많이 받음
- Z-Score : 평균 1, 표준편차 1의 표준정규분포로 변경
2-3) 로그 변환
로그 변환(Log Transformation)은 데이터 수치 값을 그대로 사용하지 않고, 데이터에 로그를 취한 값을 사용합니다. 로그를 취할 경우, 그 분포가 정규 분포에 가깝게 되는 경우가 있는데, 이를 로그정규분포를 가진다고 합니다.
이 외에도 역수 변환, 지수 변환, 제곱근 변환 등을 사용하여 데이터 분석에 대한 의미를 좀 더 용이하게 할 수 있습니다.
3) 불균형 데이터 처리
각 클래스가 가지고 있는 데이터 양의 차이가 클 경우, 클래스 불균형이 있다고 표현합니다. 단순히 더 우세한 클래스를 예측하려고 하기 때문에 정확도(accuracy)는 높아질 수 있으나, 데이터 양이 적은 클래스의 재현율(recall-rate)이 낮아지는 현상이 발생할 수 있습니다.
모델의 정확도 정도를 평가하기 위해 오차행렬(Confusion matrix)을 활용할 수 있으며, 분류 모델을 평가하는 지표에는 정확도, 정밀도, 재현도, F1 Score 등이 있습니다.
- 정확도(Accuracy) : 옳은 예측 / 전체 예측
- 정밀도(Precision) : 실제값 True / 예측값 True
- 재현율(Recall) : 예측값 True / 실제값 True
- F1 Score : 2 * ((정밀도 * 재현율) / (정밀도 + 재현율))
분류 데이터의 ‘불균형 데이터’는 다음과 같은 방법으로 처리할 수 있습니다.
3-1) 가중치 균형방법
데이터 손실(loss) 계산 시, 특정 클래스의 데이터에 더 큰 loss 값을 갖도록 하는 방법입니다.
3-2) 언더 샘플링
다수 클래스의 일부만 선택하여 사용하고, 소수 클래스는 최대한 많은 데이터를 사용하는 방법입니다. 단, 언더 샘플링을 사용할 경우, 중요한 정상 데이터를 잃게 될 수도 있으니 유의해야 합니다.
3-3) 오버 샘플링
소수 클래스의 데이터 양을 늘려서, 다수 클래스의 수만큼 데이터를 적절한 수준으로 맞추는 방법입니다. 정보가 손실되지 않은 장점은 있으나, 복제된 관측치를 원래 데이터에 추가할 경우 과대적합이 있을 수 있습니다.
과대적합은 주어진 학습 데이터를 필요 이상으로 너무 많이 학습하는 것을 말합니다. 이 경우, 새로운 데이터가 주어졌을 때 제대로 예측하기 어려울 수 있기 때문에 Feature 개수를 줄이거나 Regularization 등의 방법을 사용할 수 있습니다.
3-4) 앙상블
여러가지 모형들의 결과를 종합해 최종 의사결정에 활용하는 방법입니다.