불균형 데이터에 대처하는 방법은 다양합니다.
오버샘플링 & 리샘플링과 같은 Resampling 기법을 활용한다던가, Cost Matrix를 만들어서 분류 모델에 클래스별 가중치를 부여하는 방법도 있습니다.
위 기법도 중요하지만, 무엇보다도 중요한 것은 "어떻게 불균형 데이터를 평가할 것인가?"입니다.
(수식과 혼동행렬은 곧 업데이트 하겠습니다)
Accuracy
정확도(Accuracy)를 사용하기에는 너무 편향된 결과를 야기할 수 있습니다.
예를 들어보겠습니다.
암 환자에 대해서 검사를 한다고 했을 때, 데이터 내 실제 암 환자는 1명이고, 정상인 환자가 99명 있다고 가정하겠습니다.
우리는 모든 데이터를 음성(정상)이라고 예측하면 모델의 정확도는 99/100, 즉 99%가 됩니다.
이렇게만 본다면 매우 높은 수치겠지요.
그렇기 때문에 우리는 confusion matrix(혼동행렬)을 이용하여 도메인 문맥에 맞게끔 불균형 데이터에 대처합니다.
Precision and Recall
억울한 사람이 옥살이를 하지 않도록 법정에서는 실제 범죄자중에 범죄자를 높게 예측할 확률로 Recall(재현율)에 집중할 수도 있으며,
테러리스트의 입국이 의심된다는 첩보를 입수했을 때, 우리는 테러리스트의 입국을 막기 위해 테러리스트 검출에 집중하여 Precision(정밀도)를 높일수도 있습니다.
하지만 이 두가지의 방법은 적재적소에 사용하지 않는다면, 대부분의 불균형 데이터라는 문맥에서 인사이트를 주지 못합니다. 왜냐하면 데이터 분포에 예민하거나, 우리가 얼마나 많은 음성 케이스를 양성으로 잘못 예측했는지(recall) 또는 우리가 얼마나 많은 양성 케이스를 잘못 예측했는지 (precision) 알 수 없기 때문입니다.
위에서 유추할 수 있는 것은 Precision과 Recall은 trade-off 관계라는 것입니다.
예를 들면, 모든 케이스를 양성(positive)으로 예측한다면 실제 양성인 것중에 우리가 양성으로 예측한 것은 100%가 될 것입니다. 이런 경우에는 Recall이 높겠죠. 하지만 Precision의 성능은 매우 낮을 것입니다.
반대로, 대부분 음성으로 예측하고, 애매한 경계에 있는 양성 말고 확실하게 양성인 것에 대해서만 양성으로 예측을 한다면, precision의 성능은 높겠지요. 왜냐하면 모델이 양성으로 예측한 것중에 실제 양성인 것들이 많을 테니깐요. 대신에 양성으로 예측하는 횟수가 적어져서 Recall의 성능은 낮을 것입니다 (실제 양성인 것중에 우리가 양성으로 맞춘 비율 -> 양성을 적게 예측함 -> 비율이 낮을수밖에 없음)
F1-Score
F-measure는 Precision과 Recall을 합하여 구하기 때문에, 이 둘의 중간값을 제시합니다. 따라서 모델을 학습시킬 때, F1의 값을 높여가는 방식으로 모델을 학습시킨다면, 전반적인 분류 모델의 성능이 높아지는 것이라고 할 수 있겠습니다.
하지만 F1 Score도 치명적인 단점이 있습니다. 바로 샘플 분포의 특정 범위 안에서 다른 분류 모델끼리의 성능 비교가 어렵습니다.
ROC Curves
위와 같은 경우에는 ROC 커브를 이용하면 극복할 수 있습니다.
ROC커브는 True Positive Rate(=Recall)과 False Positive Rate(=FPR=위양성율)을 활용하여 구할 수 있습니다.
이때 모든 threshold를 이용하여 ROC커브를 그리면 아랫면적을 확인할 수 있게 되는데, 양 변에서 일어나는 모든 경우의 수를 커버합니다. 이때 좋은 모델일수록 AUROC(ROC 커브의 아랫면적의 값)의 값이 높게 나타납니다.
그렇기 때문에, 다른 모델과의 비교에서도 "전반적인" 분류기 성능을 측정할 수 있게 됩니다.
또한, high AUROC 모델은 특정 threshold에서 low AUROC 모델보다 성능이 좋지 않을 수 있습니다. 따라서, 특별한 경우에서 AUROC로 성능을 비교하기 보다는, 전 영역에 걸친 "전반적인" 분류기 성능 비교에만 도움이 된다는 점을 알아두시는 것이 좋습니다.
PR Curves (Precision-Recall Curve, Average Precision)
ROC 커브가 전반적인 성능 평가에 굉장히 좋지만, 한계점 또한 갖고 있습니다.
만약에 데이터 분포가 극심한 왜도를 갖고 있는 경우라면, ROC커브는 매우 긍정적인 결과를 내는 경향이 있습니다. 이 경우에는 PR Curve가 좋은 대안이 될 수 있습니다.
PR Curve자체는 ROC Curve의 성능이 좋을 때 같이 좋아지는 경향이 있는데요.
하지만 [ PR Curve의 높은 성능 -> ROC 커브의 높은 성능 ]을 보장하지만, 반대의 경우는 사실이 아닙니다.
예를 들어보겠습니다.
실제 음성인 경우의 수가 실제 양성인 경우의 수보다 "월등히" 많은, 즉 불균형의 정도가 극심한 정도,를 가정해봅시다.
이 경우 분류 모델의 성능은 위양성률 (FPR)에 큰 영향을 미치지 못합니다. 왜냐하면
\(\text{위양성율} = \frac{\text{거짓 양성}}{\text{실제 음성의 수}}\)
이기 때문입니다. 실제 음성의 수가 압도적으로 많기 때문에, 거짓양성의 작은 변동은 FPR에 큰 영향을 미치지 못합니다. 따라서 AUROC가 조금 더 긍정적인 뷰를 내놓는 경우가 발생합니다.
반면에 PR Curve의 경우 TP + FP 를 고려하기 때문에, FP(위양성)의 변화에 기민하게 반응합니다.
이 외에도 Cost Curve를 활용하면 ROC와 PR에서는 불가능한 Confidence Interval을 표현할 수 있는데요. 이 부분은 실제 구현이나 이론이 조금은 복잡하기 때문에 추후 설명하도록 하겠습니다.