본문 바로가기
데이터 분석

불균형 데이터(Data Imbalance) 처리 - 모델 조정 방법(Cost-Sensitive,Focal loss,Novelty Detection

by 데이널 2023. 10. 23.

이번 포스팅은 불균형 데이터 해소 기법 중 마지막인 알고리즘 수준의 방법입니다. 알고리즘 즉, 모델을 조절해서 불균형을 보완하는 방법을 다루도록 하겠습니다. Under Sampling과 Over Sampling은 데이터를 조정하는 방법이라고 하면 이번 방법은 모델을 이용해 불균형을 해소하는 기법입니다. 
 

 

비용 기반 학습(Cost-Sensitive Learning)

특정한 데이터는 분류 경계선으로부터 매우 근접해 새로운 데이터가 들어왔을 때 분류경계선이 조금이라도 움직인다면 오분류될 가능성이 높은 클래스 데이터가 존재합니다. 이럴 경우 이상 환자를 정상으로 분류한 오류는 치명적이라고 할 수 있습니다. 이 때, 오분류할 가능성 즉, Cost값에 기반해 Cost값이 높은 클래스 데이터일수록 그 데이터를 분류하는 데에 더 집중하면서 학습하는 방법입니다. 일반적으로 이상 환자에 모델에서 가중치를 더 부여하는 방식입니다. 

Focal loss

Focal Loss는 간단히 말하면 Cross Entropy 의 클래스 불균형 문제를 다루기 위한 개선된 버전이라고 말할 수 있습니다. 어렵거나 쉽게 오분류되는 케이스에 대하여 더 큰 가중치를 주는 방법을 사용합니다. 한번의 epoch가 시행된 후 모든 클래스에 똑같은 가중치값을 부여하는 것이 아닌 분류성능이 높은 클래스에 대해서는 Down-weighting(가중치를 낮게 부여)을 합니다. 예를 들어, 심근경색 환자를 예측한다고 할 때 정상 쪽에 가중치를 낮게 부여하는 식입니다. 

 

그림에서는 감마(Gamma)값이 Down-weighting 값을 의미합니다. 이러한 Down-weighting 방법은 분류가 힘든 클래스를 더욱 더 훈련시키는 효과가 있습니다. 
 

Focal loss
Focal loss


단일 클래스 분류기법(Novelty Detection)

Novelty Detection의 아이디어는 소수 클래스보다는 다수 클래스만 집중해서 분류해 보자는 관점에서 착안되었습니다. Novelty Detection은 이상탐지나 신규 패턴 탐지 분야에서 유용하게 활용되지만 클래스 불균형 문제를 다루는 데 효과적입니다.

 

특히 정상 데이터가 이상 데이터보다 훨씬 많은 경우에 적합합니다. 아래 수행 절차를 보면 알 수 있듯이 확실한 정상 데이터를 찾아내는 방법을 학습하는 것에 집중합니다. 그렇게 되면 원래 찾으려고 했던 비정상 데이터를 잘 맞추는 알고리즘을 만들 수 있습니다.

 

수행 절차

  1. 소수 클래스 데이터의 존재를 무시한 채 다수 클래스 데이터를 잘 설명하는 바운더리를 생성
  2. 이 때 바운더리로 원(Circle)을 생성하기도 하며, 중심점과 반지름을 구해 원 바운더리를 생성
  3. 그리고 새로운 데이터가 들어왔을 때 생성한 바운더리 안에 들어있으면 정상(nomal), 밖이면 비정상(novelty)으로 판단

 

Anamoly detection vs Outlier detection vs Novelty detection
Anamoly detection vs Outlier detection vs Novelty detection

마무리

모델 수준에서 기계 학습의 데이터 불균형을 처리하는 것은 Over Sampling이나 Under Sampling 만큼 예측 정확도를 높이는데 효과가 있습니다. 특히 한 클래스가 다른 클래스보다 훨씬 많은 데이터 세트가 있는 경우 더욱 그렇습니다. 알고리즘은 다수 클래스를 선호하는 경향이 있기 때문에 데이터 불균형은 편향된 모델을 만들 수 있습니다. 그렇기 때문에 모델 수준에서 데이터 불균형을 해결하는 기술을 적절하게 활용하는 것이 좋습니다.