AI 모델 개발: 클래스 불균형 해결 – Class Weights

ㅁ 클래스 불균형 해결

ㅇ 정의:
데이터셋 내 각 클래스의 샘플 수가 불균형할 때, 손실 함수 계산 시 클래스별 가중치를 다르게 부여하여 소수 클래스의 영향력을 높이는 기법.

ㅇ 특징:
– 모델 학습 시 손실 함수에서 소수 클래스 오분류에 더 큰 패널티를 부여.
– 데이터 증강 없이도 불균형 문제를 일부 완화 가능.
– Scikit-learn, TensorFlow, PyTorch 등 주요 라이브러리에서 지원.

ㅇ 적합한 경우:
– 클래스 간 데이터 비율이 1:10 이상 차이가 나는 경우.
– 데이터 수집이 어려워 소수 클래스의 샘플을 늘리기 힘든 경우.

ㅇ 시험 함정:
– 클래스 가중치 적용 후에도 모델이 다수 클래스에 치우칠 수 있음.
– 클래스 가중치는 오직 학습 과정에만 영향을 미치며, 추론 시에는 적용되지 않음.
– 클래스 불균형 문제를 완전히 해결하는 방법이 아님.

ㅇ 시험 대비 “패턴 보기” 예시:
O: 클래스 불균형 시 손실 함수에서 소수 클래스의 가중치를 높여 학습한다.
X: 클래스 가중치는 예측 단계에서 소수 클래스 확률을 자동으로 높인다.

ㅁ 추가 학습 내용

클래스 불균형 해결 방법에는 클래스 가중치(Class Weights) 외에도 오버샘플링(SMOTE 등), 언더샘플링, 데이터 증강, 앙상블 기법(Bagging, Boosting) 등이 있다.
시험에서는 클래스 가중치와 샘플링 기법의 차이를 묻는 문제가 자주 출제된다.
클래스 가중치 계산 공식 예시는 다음과 같다: total_samples / (n_classes * class_count).
라이브러리별 사용 방법 예로 sklearn에서는 class_weight=’balanced’ 옵션을 제공한다.
일부 알고리즘(예: 트리 기반 모델)은 클래스 가중치 적용 방식이 다를 수 있으므로 모델별 차이점을 숙지해야 한다.

답글 남기기

Your email address will not be published. Required fields are marked *.

*
*