본문 바로가기
데이터사이언스/인공지능을 처음공부하는 사람들을 위한 글

머신러닝의 클래스 불균형(Class imbalanced) 문제1

by 미스터탁 2022. 12. 8.

이진 분류(Binary classification)문제에서 학습되는 모델들은 일반적으로 확률 값을 출력합니다. 그리고 우리는 0.5를 기준으로 하여 1 또는 0으로 분류를 합니다. 즉, 일반적으로 우리는 데이터를 다룰 때에 각 클래스의 비율이 5:5라고 가정을 합니다. 하지만, 현업에서 발생하고 우리가 다루어야 하는 데이터는 5:5의 비율을 충족하지 않습니다. 의료, 제조, 금융 데이터를 생각해보면 쉽게 받아들일 수 있습니다. 일반적으로 '정상'의 데이터는 '불량' 데이터에 비해 압도적으로 많을 가능성이 높습니다. 이러한 상태를 클래스 불균형 (Class imbalanced) 이라고 합니다.

 

클래스가 불균형하면 어떠한 문제가 생길까요? 학습하는 모델이 다수의 데이터에 과하게 적합이 됩니다. 우리가 알고 있는 과적합(overfitting)과는 개념이 조금은 다르지만, 이 또한 일종의 과적합이라고 볼 수 있죠. 그러다 보니, 모델의 output(확률값)자체가 매우 낮게 (또는 높게 ) 형성이 됩니다. 기존에는 0.5를 기준으로 1 또는 0으로 구분했다고 한다면, 이제는 0.1~0.2 와 같이 Threshold 값을 조절 해 주어야 합니다. 

 

Imbalanced ratio (IR) 이 극단적으로 낮은 경우에는, threshold조절 만으로는 좋은 결과를 얻기는 어렵습니다. 앞서 서술한 바와 같이 학습하는 모델이 소수 데이터를 무시하려는 경향이 생깁니다. 아래 그림은 다수 클래스의 데이터는 o 소수 클래스의 데이터는 +로 표시된 상황에서 decision tree의 decision boundary를 시각화 시킨 것입니다. 자세히 보시면, 소수 클래스의 데이터는 세개의 군집을 형성하고 있습니다. 그런데, 학습 데이터와 검증 데이터에서 모두 우측 중간에 있는 소수 데이터를 decision tree가 아예 무시해버리는 경향이 생긴 것을 확인 할 수 있습니다. 이러한 경우에는 모델의 성능이 좋지 않게 나타날 것입니다. 

 

 

이러한 경우를 해결 하기 위한 기본 적인 방법은 클래스 불균형의 비율을 맞춰주는 것입니다. 1:9의 비율을 5:5와 같은 비율로 맞춰주는 것이죠. 이러한 방법을 resampling 방법 이라고 하며, 크게 oversampling, undersampling, hybrid resampling 방법 등이 있습니다. 앞에서 부터, 소수의 클래스 데이터를 증강 시키는 기법, 다수의 클래스 데이터를 줄이는 방법, 두 방법을 함께 사용 하는 방법을 의미합니다. 

 

어떠한 방법을 사용하든 간에 아래 그림처럼, 실험 설계를 할시에 학습/검증 데이터를 미리 분할한 이후 학습 데이터에 대해서 resampling method를 적용시켜야합니다. Resampling method를 통해 새롭게 만들어진 데이터셋을 학습시키고 따로 분리 해둔 검증 데이터에 대해 평가를 시켜야합니다. 

 

 

위 데이터에 대하여 oversampling을 적용한후 다시, decision tree를 학습 시켰을 때 decision boundary를 시각화 시켜보았습니다. 위 그림과 아래 그림을 비교 해보시면, 확시 아래 그림에서 모델이 조금 더 좋은 decision boundary를 생성해냈다라는 것 확인 할 수 있습니다. 결정적으로 우측 중간에 있던 소수 클래스 데이터를 이제는 모델이 인식하고 분류하기 시작했다라는 것을 알 수 있습니다. 이러한 경우에는 자연스럽게 모델의 성능이 올라가게 됩니다.

 

 

 

 

반응형

댓글