Statistics/Practical Statistics for Data Scientists

[Practical Statistics for Data Scientists] Strategies for Imbalanced Data

lfgwy 2022. 7. 15. 03:40

불균형 클래스(Imbalanced Data)

: 아래 그림과 같이 클래스의 분포에 불균형이 있는 경우를 일컫습니다. 주로 보험 사기, 희귀병과 같이 희귀 케이스가 클래스로 존재하는 경우 발생합니다. 우리가 알고 있는 대부분의 모델은 클래스가 균형 있는 경우 더 좋은 성능을 보입니다. 따라서 불균형 클래스인 경우 모델의 성능을 향상시키기 위해 사용할 수 있는 다양한 방법들에 대해 소개해보려고 합니다.

https://medium.datadriveninvestor.com/how-to-deal-with-class-imbalance-b151b9b5659f

과소표집(Undersampling)

: 과소표집은 다른 클래스들에 비해 상대적으로 많이 분포하고 있는 클래스의 데이터를 줄여 데이터를 균형있게 만드는 방법입니다. 크기가 작고 균형 있는 데이터를 사용하는 것이 모델의 성능을 올려주기도 합니다. 또한 크기가 작아지기 때문에 전체적으로 모델이 가벼워진다는 장점이 있습니다. 하지만 과소표집의 단점은 멀쩡한 데이터를 버려 가용한 모든 정보를 사용하지 못한다는 점입니다. 따라서 실제로는 과소표집보다는 다음 소개시켜드릴 과대표집(Oversampling)이 더 많이 사용됩니다.

 

과대표집(Oversampling)

: 과대표집은 추가적인 복원추출 혹은 복제 등 다양한 방법을 통해 상대적으로 적게 분포하고 있는 클래스의 데이터 수를 늘려 데이터를 균형있게 만드는 방법입니다. 과대표집은 정보의 손실도 없고 다 좋아보이지만, 흔하게 과적합(overfitting)의 문제가 된다는 단점을 지닙니다. 

 

https://medium.com/analytics-vidhya/undersampling-and-oversampling-an-old-and-a-new-approach-4f984a0e8392

이를 피하기 위해 SMOTE(Synthetic Minority Oversampling Technique)를 사용합니다. SMOTE는 비교적 적은 클래스의 데이터들 사이에 새로운 데이터를 생성하여 데이터의 수를 늘리는 방법입니다. 

  1. 소수 클래스의 데이터 중 특정 데이터와 가장 가까운 k개의 데이터를 선정합니다.
  2. 랜덤하게 k개의 데이터 중 하나를 선정합니다. (이 과정이 생략되어 k개의 데이터 모두를 사용하기도 합니다)
  3. 기준 데이터와 선정된 데이터 사이를 선분으로 잇습니다.
  4. 선분 위의 임의의 점이 새로운 데이터가 됩니다.
  5. 위 과정을 소수 클래스 내 모든 데이터에 반복해 실행해 원하는 수만큼의 새로운 데이터를 생성합니다.

https://www.coursera.org/projects/handling-imbalanced-data-classification-problems

 

SMOTE를 제외하고도 Borderline-SMOTE, ADASYN등 다양한 oversampling 기법이 있지만, 그 중 많이 활용되는 ADASYN에 대해서만 간략히 설명하겠습니다. ADASYN(Adaptive Synthetic Sampling Approach for Imbalanced Learning)도 SMOTE와 그 작동원리는 비슷합니다. 하지만 생성되는 데이터 수를 위치에 따라 다르게 합니다. ADASYN은 각 소수 클래스 주변에 얼마나 많은 다수 클래스가 분포하고 있느냐를 반영하여 데이터를 생성합니다.

  1. i번째 소수 클래스와 가장 가까운 k개의 데이터를 선정합니다.
  2. 가장 가까운 k개의 데이터 중 다수 클래스 데이터의 비율 $r_i$를 구합니다.
  3. i개의 소수 클래스 데이터에 대해 이를 반복해 $\hat{r_i} = \frac{r_i}{\sum r_i}$를 구합니다.
  4. 만약 생성하고자 하는 새로운 데이터의 수가 100개라면, i번째 소수 클래스 데이터 근처에서는 100 x $\hat{r_i}$개의 새로운 데이터만을 생성합니다.

그 외 다양한 oversamping 기법에 대해서 관심 있으신 분들은 밑의 첨부한 강의의 25분 경부터 시청하시는 것을 추천드립니다. 다양한 oversampling 기법에 대해 정말 잘 설명되어있다고 생각합니다. 

 

https://www.youtube.com/watch?v=Vhwz228VrIk&t=1804s 

 

 

Up/Down Weighting

: 과소표집 혹은 과대표집과 비슷한 효과를 데이터의 가중치를 부여하는 것으로 얻을 수도 있습니다. 방법은 단순합니다. 소수 클래스에는 더 많은 가중치를 부여(Up Weighting)하고, 다수 클래스에는 적은 가중치를 부여하는 것(Down Weighting)입니다.

 

 

Cost-Based Classification

: 맨 처음에 언급됐듯이 불균형 데이터 문제는 주로 보험 사기, 희귀병과 같이 희귀 케이스가 클래스로 존재하는 경우 발생합니다. 저희가 흔히 쓰는 classification method들은 False Negative(이하 FN)와 False postive(이하 FP) 모두 동일한 misclassificaiton error로 가정하고 error 혹은 loss를 최소화하는데에 초점을 맞추고 있습니다. 하지만 보험 사기, 희귀병 같은 문제들은 보험 FN(보험 사기인데 보험 사기가 아니라고 분류, 희귀병인데 희귀병이 아니라고 분류)의 경우가 FP(보험 사기가 아닌데 보험사기라고 분류, 희귀병이 아닌데 희귀병이라고 분류)의 경우보다 훨씬 심각한 error라고 보는 것이 타당합니다. Cost-Based Classification은 여기서 착안한 아이디어를 사용합니다. 우선, cost란 오분류로 인해 발생할 수 있는 비용을 의미합니다. 당연히 FN의 경우가 FP보다 큽니다. Cost-Based Classification은 error/loss를 최소화하는 것이 아닌 cost를 최소화하는 것을 목표로 합니다. 

 

cost를 구하는 방법은 다음과 같습니다.

 

Confusion Matrix

  Actual Positive Actual Negative
Predicted Positive TP FP
Predicted Negative FN FP

 

Total Cost = C1 * False Negatives + C2 * False Positives

* C1은 FN인 경우의 cost이고, C2는 FP인 경우의 cost입니다. C1, C2는 사전에 알려졌거나, 주어진 것으로 가정합니다.

 

상황에 따라 Cost-Based Classification을 ​​사용하여 불균형 데이터 문제를 해결할 수 있는 것은 맞으나, 엄연히 별도의 연구 분야이며 모든 Cost-Based Classification이 불균형 데이터 문제를 해결할 수 있는 것은 아니라고 합니다.

 

참고하면 좋을 자료들:

https://towardsdatascience.com/class-imbalance-smote-borderline-smote-adasyn-6e36c78d804

 

Class Imbalance, SMOTE, Borderline SMOTE, ADASYN

Class imbalance can put our algorithm off balance

towardsdatascience.com

https://machinelearningmastery.com/cost-sensitive-learning-for-imbalanced-classification/

 

Cost-Sensitive Learning for Imbalanced Classification

Most machine learning algorithms assume that all misclassification errors made by a model are equal. This is often not the case for imbalanced classification problems where missing a positive or minority class case is worse than incorrectly classifying an

machinelearningmastery.com