Doyun-lab

[ML] Data Imbalance Problem (데이터 불균형 문제) 본문

Study/Machine Learning

[ML] Data Imbalance Problem (데이터 불균형 문제)

Doyun+ 2021. 6. 24. 03:28

최근 "ESRD 환자의 수술 후 합병증 예측" 프로젝트를 진행하면서 Data Imbalance(데이터 불균형) 문제에 직면했다. 데이터 불균형 문제는 생각보다 매우 흔하며, 앞으로도 프로젝트를 진행할 때 예측하고자 하는 Class가 적은 수를 갖고 있을 확률은 매우 높다.

 

예를 들어, 의료 데이터를 분석할 때 질병 여부를 분류한다면 당연히 질병인 Class가 훨씬 개수가 적을 것이다. 

그렇다면, 질병에 대한 Class에 더 민감한 결과를 얻어야만 데이터 분석 및 모델이 쓸모있을 것이다. 그러나 실제 세상에서는 질병이 없는 사람이 대부분일 것이므로 "질병이 아니다"라는 쪽에 더 치우친 모델이 만들어진다면 쓸모가 없을 것이다.

그러므로, 해결해야 하는 문제와 데이터의 도메인을 고려하여 Data Imbalance 문제를 해결해야한다.

 

Data Imbalance 란 ?

Class 비율이 한쪽으로 치우친 Data set을 Imbalanced Data set이라고 한다. Data set에서 큰 비중을 차지하는 Class를 Majority classes라고 하며, 적은 비율을 차지하는 것을 Minority classes라고 한다.

불균형의 정도는 Minority classes의 비율에 따라 다르다.

이러한 Imbalanced Data set에서는 Classification 등을 실시할 때 특정 Sampling 기법을 적용해야할 수 있다.

Imbalanced Data set Class 분포 예시[출처:Google Developers]

 

Up-sampling과 Down-sampling

Imbalanced Data를 다루는 효과적인 방법에는 대표적으로 Up-sampling과 Down-sampling이 있다.

Up-sampling이란 적은 비율을 가진 Class에 대해 큰 비중을 차지하는 Class에 대한 동일한 가중치를 추가하는 것이다. 쉽게 말해서 100:1000의 비율을 가진 Imbalanced Data가 있다면 100개의 Class를 Sampling하여 1,000개로 늘린다. 

하지만, 여기서 주의해야할 점은 Train/Test split을 진행할 때 Train set에 대해서만 Up-sampling을 진행해야 한다는 것이다. 모델이 Test를 진행할 때 임의로 Up-sampling된 Data로 Test를 진행할 경우 잘못된 결과를 얻을 수 있다.

Down-sampling이란 Up-sampling과 반대로 낮은 비중을 가진 Class에 대해 Training하는 것인데, 앞서 예로 들었던 100:1000의 비율을 가진 Imbalanced Data를 1,000개의 Class를 Sampling 하여 100개로 줄인다. 그 후, Down-sampling된 Class에 대해 가중치를 추가해준다. 이를 Upweight라고 한다. 

Down-sampling 예시 [ 출처 : Google Developers ]

각각의 방법에는 단점이 존재하는데, Up-sampling을 하게 되면 복제된 관측치를 원래 Data set에 추가하기만 하면 여려 유형의 관측치를 다수 추가하게 되어 오버피팅(overfitting)이 발생할 수 있다. Down-sampling을 하게 되면 Data에 대한 소실이 매우 크고 중요한 Majority classes data를 잃을 수 있다.

 

추후에 데이터 불균형 문제에 대해서 자세히 다뤄보도록 하겠다 !