[Deep Learning] 클래스 불균형 (class imbalance) 다루는 방법

happy_quokka·2024년 4월 1일
0

딥러닝

목록 보기
18/18

class imbalance란?

  • 특정 class의 데이터 수가 다른 class의 데이터 수에 비해 적을 때
  • 데이터의 수가 많은 class를 majority class라고 하고 적은 class를 minority class라고 한다
  • 이런 경우 평가지표로 단순히 accuracy를 사용하는 것은 좋지 않다
    : 만약 개와 고양이를 분류하는 문제에서 개의 데이터가 95%, 고양이의 데이터가 5%인 경우, 전체 데이터를 개로 분류하여도 95%의 accuracy가 나오기 때문이다
  • 이런 경우에는 precision, recall의 조화평균인 F1 score 지표를 보는 것이 좋다
    • 일반적으로 precision은 높고 recall은 매우 낮은 경항이 있다

class imbalance의 문제

  • 학습을 할 때 불균형이 크다면 majority class로 편향되어 학습된다
  • 즉, minority class에 대한 정확도와 예측력이 낮아질 수 있다

class imbalance 해결 방법

1. 데이터 수집

  • 테이터의 수가 minority class의 데이터를 더 수집한다
  • 하지만 이 방법은 현실적으로 어려운 경우가 많아서 주로 아래의 방법들을 사용한다

2. weight balancing

train 과정에서 각 class의 loss를 계산할 때 특정 class(주로 minority class)의 loss에 가중치를 부여하여 해당 class를 더 잘 학습할 수 있도록 유도하는 방법

2-1. Balanced Cross-Entropy Loss

  • 모든 클래스의 손실에 가중치 α\alpha를 부여하여 클래스 간의 불균형을 조정하는 방법
  • 주로 minority class에 높은 가중치를 부여하여 minority class에 대한 손실을 증가시키고, majority class에 대한 손실을 감소
    • 예를 들어, class frequency의 역수를 사용할 수 있다
    • class 불균형이 1:10이라면 minority에는 11을 곱하고 majority에는 110\frac{1}{10}을 곱해준다
  • 아래와 같은 식으로 표현할 수 있다
    • α\alpha : 가중치
    • ptp_t : 모델이 예측한 class의 확률
BCE(pt)=αtlog(pt)BCE(p_t) = -\alpha_t log(p_t)
  • 단점 : 단순히 class 샘플의 수를 고려한 것이기 때문에 easy sample과 herd sample을 구분하기 어렵다

2-2. Focal Loss

  • 잘 분류되는 샘플(easy sample)에는 작은 가중치를 부여하고, 분류가 어려운 샘플(hard sample)에는 큰 가중치를 부여하는 방법
FL(pt)=(1pt)γlog(pt)FL(p_t) = -(1-p_t)^\gamma log(p_t)
  • easy sample의 ptp_t는 1에 가까운 값이고, hard sample의 ptp_t는 0에 가까운 값이다
  • 즉, loss로 보면 easy sample의 loss를 작게 하고 hard sample의 loss를 강조하여 모델이 잘 학습할 수 있도록 도와준다
  • 이때 γ\gamma의 값이 클수록 잘못 분류되는 경우의 값들이 강조되어 해당 값을 잘 학습할 수 있도록 유도된다

2-3. Balanced Focal Loss

  • Balanced Cross-Entropy Loss와 Focal Loss를 결합한 방법이다
    FL(pt)=αt(1pt)γlog(pt)FL(p_t) = -\alpha_t(1-p_t)^\gamma log(p_t)
  • Balanced Cross-Entropy Loss에서 사용되는 α\alpha 값을 통해 class 간의 가중치를 조절한다
  • Focal Loss에서 사용되는 γ\gamma 값을 통해 hard sample을 잘 학습할 수 있도록 한다

3. resampling

데이터 샘플을 수를 조절하는 방법으로 under-sampling과 over-sampling 방법이 있다

3-1. under-sampling

  • majority class 샘플의 일부를 삭제하여 개수를 맞추는 방법
  • 데이터가 많은 경우에 사용할 수 있다
  • 단점 : 데이터의 수가 줄어들기 때문에 정보 손실이 발생한다

3-2. over-sampling

  • minority class 샘플을 복사하여 majority class 수 만큼 늘려주는 방법
  • 단점 : 중복된 샘플이 많아 훈련 속도를 느리게하고 모델 과적합 문제가 발생할 수 있다

reference

0개의 댓글