0. 클래스 불균형 문제란?
- 분류 문제에서 다수 클래스와 소수 클래스 간의 데이터 샘플 수가 매우 차이나는 상황을 의미
- 모델이 다수 클래스에 편향 학습되기 쉬움 = 소수 클래스 정보 무시
이를 해결하기 위해
1. 샘플링 기법
1) 오버샘플링
- 소수 클래스의 샘플 수를 인위적으로 늘리는 방법
- 단점: 과적합 위험
(1) SMOTE (스모트)
- 소수 클래스의 각 샘플과 그 샘플의 가까운 이웃 중 하나를 선택하여 두 샘플 사이의 벡터 차이를 계산 후, 그 차이의 일정 비율 만큼 떨어진 지점에 새로운 샘플 생성.
- 장점: 데이터의 다양성 확보 가능.
(2) ADASYN (애다신)
- 스모트의 변형 기법. 소수 클래스 중에서도 분포가 밀집되지 않은 데이터를 더 많이 생성함.
- 장점: 소수 클래스에서 더 예측이 어려운 샘플에 집중해서 새로운 샘플을 생성할 수 있음.
2) 언더샘플링
- 다수 클래스의 샘플 수를 줄이는 방법
- 장점: 학습 속도 빨라짐
- 단점: 중요한 다수 클래스 정보 잃을 수 있음
2. 가중치 조정
- 학습 시 소수 클래스에 더 높은 가중치를 부여해 손실 함수에서 소수 클래스의 오류를 더 크게 평가.
- SVM, 로지스틱 회귀 같은 모델에서 자주 사용됨
3. 앙상블 기법
1) 배깅
- 여러 weak learner를 독립적으로 학습시키고, 그 결과를 평균하거나 투표하는 방식
- 원래의 데이터셋에서 무작위 복원 추출 샘플링한 서브셋을 이용해 개별 learner가 학습됨
- 장점: 개별 학습기들이 학습한 다양성을 종합해서 최종 모델을 만들기에 소수 클래스에 대해 좀 더 다양한 관점 얻을 수 있음. 다양성 보장. 과적합 방지.
- e.g., 랜덤 포레스트: 결정 트리를 배깅 방식으로 여러 개 생성하고, 그 결과를 종합해 최종 예측함.
2) 부스팅
- 여러 weak learner를 순차적으로 학습시키고, 각 단계에서 이전 모델이 실수한 부분에 더 집중하여 학습하는 방식.
- 첫 번째 모델이 학습하고, 두 번째 모델은 첫 번째 모델이 틀린 샘플에 더 큰 가중치를 부여해 학습함. -> 이전 모델의 오류 보완.
- 장점: 모델의 편향 줄이는 데 효과적임.
- 단점: 소규모 데이터셋에서는 과적합 위험있음
- e.g., XGBoost: 성능 뛰어나고 효율적인 학습 속도로 널리 사용됨.
4. 데이터 증강
- 이미지나 텍스트 데이터에서는 데이터 증강 기법을 통해 소수 클래스 확장 가능.
- e.g., 이미지 회전, 자르기, 왜곡 등을 통해 이미지 증강