타겟값에서 클래스의 비율이 다를 때 학습에 문제가 생길 수 있다. 예를 들어 0과 1의 비율이 2:8이라면, 모델은 class1은 충분히 학습하지만 class0에 대한 학습은 놓친다. 그래서 precision이나 recall 값이 클래스 별로 차이가 생길 수 있다. 그래서 이 비율을 해결하여 학습하는 것이 중요하다. 해결 방안에는 물리적으로 데이터 수를 맞추는 Resamping과 계산적으로 가중치를 부여하는 Class Weight 조절법이 있다.
1. Resampling
① Down Sampling
다수 class를 줄여 데이터 수를 맞추는 방법. 다수 class에서 랜덤으로 데이터를 뽑아 데이터 수를 줄임. 데이터 손실 위험
② Over Sampling
소수 class를 늘려 데이터 수를 맞추는 방법. 소수 class의 기존 데이터들을 복사해 데이터 수를 늘림. 과적합 위험
③ SMOTE
소수 class를 늘려 데이터 수를 맞추는 방법. 알고리즘을 이용해 소수 class의 데이터와 유사한 데이터를 생성해 늘림
2. Class Weight 조절
리샘플링 없이 클래스에 가중치를 부여하여 문제 해결. 예를 들어 0과 1의 비율이 2:8인 타겟이 있다. 그럴 때 0 class의 오차에는 0.8을, 1 class의 오차에는 0.2를 곱하며 오차에 가중치를 달리 부여하는 것이다.
* Resamping과 Class Weight 조절 중 어떤 방법이 더 좋은가?
둘의 성능 차이는 크게 없다. 물리적 해결법이냐 계산적 해결법이냐의 차이.
'Codestates AI 부트캠프 > 2. Machine Learning' 카테고리의 다른 글
[머신러닝] 3-3 ML Problem Framing (0) | 2023.04.16 |
---|---|
[머신러닝] 3-2 모델 해석 (분석 단위 기준) (0) | 2023.04.16 |
[머신러닝] 3-1 모델 해석 (특성 기준) (0) | 2023.04.16 |
[머신러닝] 2-4 Model Tuning (0) | 2023.04.16 |
[머신러닝] 2-3 전처리 (Preprocessing) (0) | 2023.04.16 |