데이터: 해결 기법 – 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, 언더샘플링)의 차이 및 장단점을 비교하는 문제가 자주 출제될 수 있다. 클래스 가중치는 모델 학습 시 손실 함수에 반영되어 데이터 비율을 변경하지 않고도 불균형을 완화하는 반면, 샘플링 기법은 학습 데이터 자체의 분포를 변경하는 방식이라는 차이가 있다.

답글 남기기

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

*
*