1. 어떨 때 불균형 클래스 비율을 조정해주어야 할까?
타겟 특성의 클래스 비율이 많이 차이 날 때가 있다. 이 때 밸런스를 꼭 맞추어야만 하는 것인가? 또, 밸런스가 맞지 않는 것이 결과인데 왜 밸런스를 조정해야 하는 것인지 의문이 들 수도 있다.
맞다. 밸런스를 꼭 조정할 필요가 있는 것이 아니다. 다만 조정이 필요한 경우가 있다. 오직 소수인 값이 매우 중요한 값일 경우일 때문 조정이 필요하다. 예를 들어 부동산A에 투자할 것인지 하지 않을 것인지를 결정하는 분류문제가 있다고 하자. 이는 투자를 하는 매우 신중해야 하는 일이며, 굳이 내가 매물 A를 구매하지 않는다고 하더라도 언제나 다른 매물을 구매할 수도 있다. 그러나 만약 A를 구매를 했는데 이게 잘못된 선택이라고 한다면 타격이 상당할 것이다. 그렇게 때문에, ‘buy’를 예측하는 것은 ‘don’t buy’보다 훨씬 정확하고 신중해야 한다. 당연히 데이터에는 don’t buy로 편향되어 있을 것이고 그렇기 때문에 don’t buy를 더 정확하게 예측할 것이다. 그러나 여기서 중요한 문제는 buy를 더 정확하게 예측하는 것이므로 적은 수의 ‘buy’에 가중치를 주어 buy의 예측력을 높여주어야 한다.
반대로, 굳이 소수인 클래스가 중요하지 않은 것이라면 굳이 밸런스를 조정해 주지 않고 데이터를 원본 그대로 사용해도 좋다.
2. 분류문제 data balancing
2–1) class weight사용
class_weight를 계산하여 사용한다.
2–2) Over and Under Sampling
사진과 같이 중요한 클래스가 다른 클래스에 비해 수가 적다면, undersampling을 통해 많은 클래스 중 일부만 샘플링 할 수 있다. 그게 아니라면, oversampling을 통해 적은 소수의 데이터를 불려 다른 많은 클래스와 동일한 수만큼 늘려줄 수도 있다.
3. 회귀 Data Balancing
타겟 분포가 비대칭 형태인지를 확인해야 한다. 왜곡된 형태(skewed)일경우 예측 성능에 부정적인 영향을 미치므로 로그 변환을 통해 정규분포 형태로 변환시켜 주어야 한다.
reference: https://towardsdatascience.com/handling-imbalanced-datasets-in-deep-learning-f48407a0e758