데이터: 해결 기법 – Class Weighting
ㅁ 해결 기법
ㅇ 정의:
– 분류 모델 학습 시 소수 클래스의 중요도를 높이기 위해 클래스별 가중치를 다르게 부여하는 방법.
– 손실 함수 계산 시 클래스별 가중치를 곱해 학습 과정에서 소수 클래스의 오분류에 더 큰 패널티를 주는 방식.
ㅇ 특징:
– 데이터 자체를 변경하지 않고 모델 학습 과정에서 불균형을 보정.
– 가중치 설정은 클래스 빈도 역수, 또는 경험적 조정으로 가능.
– 대부분의 머신러닝 라이브러리(sklearn, XGBoost 등)에서 파라미터로 지원.
ㅇ 적합한 경우:
– 데이터 수집이 어렵거나 데이터 증강이 부적절한 경우.
– 소수 클래스의 중요도가 높아 오분류 비용이 큰 경우(예: 사기 탐지, 질병 진단).
ㅇ 시험 함정:
– 클래스 가중치 적용이 모든 알고리즘에서 동일한 효과를 보장하지 않음.
– 데이터 불균형이 극심하면 가중치만으로는 성능 향상이 제한적.
– 일부 모델(예: kNN)에서는 가중치 적용이 직접 지원되지 않음.
ㅇ 시험 대비 “패턴 보기” 예시:
– O: “클래스 불균형 문제에서 데이터 변경 없이 학습 시 손실 함수에 가중치를 부여하는 방법이다.”
– X: “클래스 가중치는 반드시 데이터 증강과 함께 사용해야 한다.”
ㅁ 추가 학습 내용
클래스 가중치 계산 방법은 예를 들어 total_samples / (n_classes * class_count) 공식으로 산출할 수 있다. 라이브러리별 적용 방법으로는 sklearn에서 class_weight=’balanced’ 옵션을 사용하고, XGBoost에서는 scale_pos_weight 파라미터를 활용한다.
클래스 가중치는 Precision, Recall, F1-score에 영향을 주며, 특히 불균형 데이터에서 소수 클래스의 Recall을 높이는 경향이 있다. 이에 따라 ROC-AUC 값의 변화 패턴도 달라질 수 있으므로 이를 이해해야 한다.
시험에서는 클래스 가중치와 샘플링 기법(SMOTE, 언더샘플링)의 차이 및 장단점을 비교하는 문제가 자주 출제될 수 있다. 클래스 가중치는 모델 학습 시 손실 함수에 반영되어 데이터 비율을 변경하지 않고도 불균형을 완화하는 반면, 샘플링 기법은 학습 데이터 자체의 분포를 변경하는 방식이라는 차이가 있다.