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
- 모든 클래스의 손실에 가중치 α를 부여하여 클래스 간의 불균형을 조정하는 방법
- 주로 minority class에 높은 가중치를 부여하여 minority class에 대한 손실을 증가시키고, majority class에 대한 손실을 감소
- 예를 들어, class frequency의 역수를 사용할 수 있다
- class 불균형이 1:10이라면 minority에는 1을 곱하고 majority에는 101을 곱해준다
- 아래와 같은 식으로 표현할 수 있다
- α : 가중치
- pt : 모델이 예측한 class의 확률
BCE(pt)=−αtlog(pt)
- 단점 : 단순히 class 샘플의 수를 고려한 것이기 때문에 easy sample과 herd sample을 구분하기 어렵다
2-2. Focal Loss
- 잘 분류되는 샘플(easy sample)에는 작은 가중치를 부여하고, 분류가 어려운 샘플(hard sample)에는 큰 가중치를 부여하는 방법
FL(pt)=−(1−pt)γlog(pt)
- easy sample의 pt는 1에 가까운 값이고, hard sample의 pt는 0에 가까운 값이다
- 즉, loss로 보면 easy sample의 loss를 작게 하고 hard sample의 loss를 강조하여 모델이 잘 학습할 수 있도록 도와준다
- 이때 γ의 값이 클수록 잘못 분류되는 경우의 값들이 강조되어 해당 값을 잘 학습할 수 있도록 유도된다
2-3. Balanced Focal Loss
- Balanced Cross-Entropy Loss와 Focal Loss를 결합한 방법이다
FL(pt)=−αt(1−pt)γlog(pt)
- Balanced Cross-Entropy Loss에서 사용되는 α 값을 통해 class 간의 가중치를 조절한다
- Focal Loss에서 사용되는 γ 값을 통해 hard sample을 잘 학습할 수 있도록 한다
3. resampling
데이터 샘플을 수를 조절하는 방법으로 under-sampling과 over-sampling 방법이 있다
3-1. under-sampling
- majority class 샘플의 일부를 삭제하여 개수를 맞추는 방법
- 데이터가 많은 경우에 사용할 수 있다
- 단점 : 데이터의 수가 줄어들기 때문에 정보 손실이 발생한다
3-2. over-sampling
- minority class 샘플을 복사하여 majority class 수 만큼 늘려주는 방법
- 단점 : 중복된 샘플이 많아 훈련 속도를 느리게하고 모델 과적합 문제가 발생할 수 있다
reference