더북(TheBook)

06 | 클래스 불균형

구분할 각 분류에 해당하는 데이터의 비율이 반반이 아닌 경우 훈련 데이터 내 비율이 높은 분류 쪽으로 결과를 내놓는 모델을 만들게 될 수 있다. 이런 상황을 클래스 불균형Class Imbalance이라고 한다. 이 절에서는 클래스 불균형의 예와 해결 방법을 알아본다.

예를 들어, 다음의 유방암 데이터를 보자.

> library(mlbench)
> data(BreastCancer)
> table(BreastCancer$Class)
  benign malignant
     458       241

유방암 데이터의 양성benign의 수는 458, 악성malignant의 수는 241이다. 이 데이터로 기계 학습 모델을 만들면 주어진 입력에 대해 benign을 결과로 줄 확률이 malignant를 줄 확률에 비해 높아진다. 왜냐하면 주어진 데이터를 무조건 benign으로만 예측해도 65.5%4 의 정확도를 확보하게 되기 때문이다. 즉, malignant의 특성이 무엇인지를 학습 알고리즘이 잘 배우지 않게 될 가능성이 높아진다.

클래스 불균형을 해결하는 한 가지 방법은 관찰 데이터가 적은 쪽의 데이터에 더 큰 가중치Weight를 주거나, 데이터가 적은 쪽을 잘못 분류했을 때 더 많은 비용(Cost 또는 Loss)을 부과하는 것이다.[16] 보통 모델링 함수의 param, loss, cost 등의 파라미터에 이런 값들을 지정할 수 있다.

또 다른 방법은 모델을 만드는 훈련 데이터를 직접 조절하는 방법이다. 이에는 업 샘플링up sampling, 다운 샘플링down sampling, SMOTESynthetic Minority Oversampling Technique[17]가 있으며, 이 절에서는 이들 세 가지 방법을 다룬다.


4 458/(458+241)=0.6552217이다. ‘9.3.1 평가 메트릭’ 절의 No Information Rate가 바로 이에 해당한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.