해결 기법: Class Weighting
ㅁ 해결 기법
ㅇ 정의:
클래스 불균형 문제를 해결하기 위해 각 클래스에 가중치를 부여하여 모델이 불균형 데이터를 학습할 때 중요한 클래스에 더 집중하도록 유도하는 방법.
ㅇ 특징:
– 클래스의 중요도를 반영하여 가중치를 설정.
– 손실 함수에 가중치를 적용하여 클래스별 영향력을 조정.
– 데이터의 불균형 정도를 기반으로 가중치를 자동 계산하거나 수동으로 설정 가능.
ㅇ 적합한 경우:
– 클래스 간 데이터 비율이 크게 차이 나는 경우.
– 소수 클래스의 예측 성능을 높이고자 할 때.
ㅇ 시험 함정:
– 가중치 설정이 잘못되면 과적합이나 과소적합 문제가 발생할 수 있음.
– 가중치를 너무 높게 설정하면 소수 클래스에 지나치게 집중하여 다수 클래스의 성능이 떨어질 수 있음.
ㅇ 시험 대비 “패턴 보기” 예시:
1. O: 클래스 불균형 문제를 해결하기 위해 각 클래스에 가중치를 부여하여 손실 함수에 반영한다.
2. X: 클래스 불균형 문제를 해결하기 위해 모든 클래스에 동일한 가중치를 부여한다.
ㅁ 추가 학습 내용
Class Weighting 기법을 학습할 때는 다음 내용을 중심으로 정리하여 학습하는 것이 좋습니다.
1. **Class Weighting의 필요성**:
– 데이터가 불균형할 때 모델이 소수 클래스에 대해 제대로 학습하지 못하는 문제를 해결하기 위해 사용.
– 각 클래스에 가중치를 부여하여 손실 함수에서 특정 클래스의 중요도를 조정.
2. **가중치 설정 방법**:
– **자동 계산 방법**:
– 데이터 분포를 기반으로 클래스별 샘플 수를 이용해 가중치를 계산.
– 예: `class_weight = {class_label: total_samples / (num_classes * samples_per_class)}`
– Python 라이브러리에서 제공하는 `class_weight=’balanced’` 옵션 활용.
– **수동 설정 방법**:
– 도메인 지식을 활용해 클래스의 중요도에 따라 가중치를 직접 설정.
– 예: 의료 데이터에서 질병 클래스와 정상 클래스의 중요도를 다르게 설정.
3. **손실 함수에 가중치 적용**:
– 손실 함수에 클래스 가중치를 반영하여 모델이 손실을 계산할 때 각 클래스의 영향을 다르게 처리.
– 예: Cross-Entropy Loss에서 가중치를 추가로 전달하거나, 사용자 정의 손실 함수를 작성.
4. **모델 성능 평가 방법**:
– 불균형 데이터에서 단순 정확도(Accuracy) 대신, F1-Score, Precision, Recall, AUC-ROC와 같은 지표를 활용.
– 클래스별 성능을 개별적으로 평가하여 모델이 소수 클래스에서도 잘 동작하는지 확인.
5. **과적합 방지 전략**:
– 가중치 적용으로 인해 특정 클래스에 과도하게 초점이 맞춰질 수 있음.
– 과적합 방지를 위해 정규화 기법(L2 Regularization), Dropout, 데이터 증강(Data Augmentation) 등을 병행.
– 교차 검증(Cross-Validation)을 통해 모델의 일반화 성능 확인.
이 내용을 바탕으로 Class Weighting 기법을 실습하거나 문제에 적용해보면 시험 대비에 효과적입니다.