비전 관련된 논문을 읽어보셨다면, Accuracy와 Precision 정도는 들어봤을겁니다. 어떠한 측정 시스템의 성능을 나타내는 지표에는 정말 다양한 방법이 있습니다.

180911-0

위 표를 보고 있자니, 머리가 아득해질 지경입니다. 저게 다 무슨말일까요? 이번 포스트에서는 어러가지 성능평가 지표들을 알아보기 쉬운 그림과 함께 성능평가 지표들을 살펴보겠습니다.

포스트에 앞서, 멋진 그림과 함께 설명을 해주신 조대협님께 감사의 말씀을 전합니다.


Confusion matrix

간단한 양성 / 음성 데이터를 가지고 있는 이진 분류 문제를 생각해보겠습니다.

99BE533359E629C823

만약 모델의 정확도가 100%이면, 양성과 음성 데이타를 100% 잘 구분할 것입이다.

180911-2

위 그림과 같이, 양성으로 분리된 예측된 영역을 Positive prediction, 음성으로 분리된 영역을 Negative prediction 이라고 합니다.

그런데 실제 세계에서는 정확도 100% 모델은 매우 드물고 실제로는 아래 그림과 같이 예측이 되는 경우가 많습니다.

180911-3

양성과 음성 데이터가 각각 잘못되는 경우가 있습니다.

180911-4

보통 이를 표로 표시하는데, 다음과 같이 표현이 됩니다.

180911-5

그러면 이 지표를 가지고 무엇을 하느냐? 이 값을 기반으로 다음과 같은 지표들을 계산하여 모델 평가에 사용합니다.

Accuracy

가장 대표적으로 사용되는 지표로 전체 데이타중에서, 제대로 분류된 데이타의 비율입니다.

모델이 얼마나 정확하게 분류를 하는지를 나타냅니다.

180911-6

Error Rate

Error Rate는 Accuracy 와 반대로, 전체 데이타 중에서 잘못 분류한 비율을 나타냅니다.

180911-7

Sensitivity (Recall or True positive Rate)

민감도라고도 하는데, Sensitive 또는 Recall이라고도 합니다. 원래 Positive 데이터에서 Positive로 분류된 데이터 를 이야기 합니다. 에를 들어 원본 데이터에 암 양성이 100개 있었는데, 모델에 있어서 90개가 분류되었으면, Sensitive Rate = 0.9 가 됩니다.

180911-8

모델이 얼마나 정확하게 Positive 값을 찾느냐 를 나타냅니다.

Recall (as opposed to precision) is not so much about answering questions correctly but more about answering all questions that have answer “true” with the answer “true”. So if we simply always answer “true”, we have 100% recall.

Precision

Precision (정밀성)은 Positive로 예측한 내용 중에, 실제 Positive의 비율을 뜻합니다.

180911-10

Precision is about being precise. In common English, being precise means: if you give an answer, the answer will very likely be correct. So even if you answered only one question, and you answered this question correctly, you are 100% precise.

Specificity (True negative rate)

Specificity 값은 Negative 로 판단한 것 중, 실제 Negative 값의 비율입니다.

180911-11

False Positive rate

원래는 Positive 값인데, 잘못해서 Negative로 판단한 비율입니다.

180911-12

예를 들어 게임에서 어뷰징 사용자를 검출했을때 정확도도 중요하겠지만, FPR 값이 높으면, 정상 사용자를 비정상 사용자로 검출하는 경우가 많다는 의미가 돕니다. 어뷰징 사용자에 대해서는 계정 정지등 패널티를 주게 되는데, 모델이 아무리 어뷰징 사용자를 잘 찾아낸다 하더라도 FPR 값이 높게 되면, 정상적인 사용자를 어뷰징 사용자로 판단하여 선의의 사용자가 징계를 받게 되서, 전체적인 게임 충성도에 문제가 생길 수 있습니다. (어뷰징 사용자를 많이 찾아내는 것보다, 정상 사용자가 징계를 받게 되는 경우가 비지니스에 크리티컬 할때) 이런 경우에 FPR 값을 레퍼런스 할 수 있습니다.

ROC (Receiver Operating Characteristics)

그러면, Confusion Matrix를 통해서 계산된 결과를 가지고 모델을 어떻게 평가를 할까요? 앞에서 나온 지표중에서 일반적으로 Accuracy 지표가 많이 사용되고, 그외에, ROC , Precision Recall Plot, F-Score 등이 많이 사용되는데 각각에 대해서 알아보겠습니다.

ROC 그래프는 가로축을 FP Rate (Specificity) 값의 비율로 하고 세로축을 TP Rate (Sensitive) 로 하여 시각화 한 그래프입니다.

180911-13

180911-14

그래프가 위로 갈 수록 좋은 모델이고, 적어도 Y=X 그래프보다 위에 있어야 어느정도 쓸모 있는 모델로 볼 수 있습니다. 아래 그래프는 3개로 결과를 분류하는 모델에 대한 ROC 그래프 입니다.

![180911-16](/assets/blog/posts/2018/180911-16.png)15

ROC 그래프가 class 0, class 2, class 1 순서로 높은것을 볼 수 있다. 즉 이 모델은 class 0 을 제일 잘 분류하고 그 다음은 2,1 순서로 잘 분류 한다는 의미가 된다.

ROC는 그래프이기 때문에, 모델을 정확도를 하나의 숫자로 나타내기 어려워서 AUC (Area Under Curve) 라는 값을 사용하는데, ROC AUC값은 ROC 그래프의 면적이 돕니다. 최대값은 1이 됩니다. 위의 그래프를 보면 모델 0,2,1의 AUC값은 0.91, 0.79, 0.60 이 됩니다.

Precision Recall Plot

Precision Recall Plot (이하 PR 그래프)의 경우도 ROC 와 유사한데, 주로 데이타 라벨의 분포가 심하게 불균등 할때 사용한데, 예를 들어 이상 거래 검출 시나리오의 경우 정상 거래의 비율이 비정상 거래에 비해서 압도적으로 많기 때문에 (98%, 2%) 이런 경우에는 ROC 그래프보다 PR 그래프가 분석에 더 유리합니다.

PR 그래프는 X 축을 Recall 값을, Y축을 Precision 값을 사용합니다.

180911-16

180911-17

위는 이진 분류 (binary classification)의 PR 그래프의 예입니다. 그래프가 위쪽으로 갈수록 정확도가 높은 모델이고, ROC와 마찬가지로 PR 그래프의 AUC (면적)값을 이용하여 모델의 정확도를 평가할 수 있습니다.

(출처 : http://scikit-learn.org/stable/auto_examples/model_selection/plot_precision_recall.html)

그러면 모델이 쓸만한 모델인지 아닌지는 어떤 기준을 사용할까요? ROC 그래프의 경우에는 Y=X 그래프를 기준으로 그래프 윗쪽에 있는 경우 쓸만한 모델로 판단을 했는데, PR 그래프의 경우 Base line이라는 것을 사용합니다.

Base line = P / (P+N) 으로 정하는데, P는 데이타에서 Positive 레이블의 수, N 은 전체 데이타의 수입니다. 예를 들어 암 데이타에서 암 양성이 300개 이고, 전체 데이타가 700이면 Base line은 300/(700+300) = 0.3 이 됩니다.

180911-18

위의 PR 그래프에 Base line을 적용하여 모델이 좋고 나쁜 영역을 판단하는 그림입니다.

아래 그림은 두 모델을 비교한 PR 그래프인데, 두 모델 다 베이스라인을 넘어서 쓸만한 모델이기는 하지만, 모델 A가 B모델보다 확연하게 위에 위치하고 있기 때문에, A 모델이 좋다고 이야기할 수 있습니다.

180911-19 (출처 : https://classeval.wordpress.com/introduction/introduction-to-the-precision-recall-plot/)

F-Score

모델의 성능을 하나의 수로 표현할때, ROC나 PR 그래프의 AUC를 사용하면 되지만, AUC를 계산하려면 여러 Throughput에 대해서 Precision, Recall, Specificity 값을 측정해야 합니다.

그렇다면 Throughput을 이미 알고 있거나 또는 다양한 Throughput에 대해서 어떤 Throughput이 좋은지를 하나의 수로 모델의 성능을 평가하려면 어떻게 해야할까요? 이를 위해서 사용하는 것이 F-Score 라는 값이 있습니다.

When measuring how well you’re doing, it’s often useful to have a single number to describe your performance When measuring how well you’re doing, it’s often useful to have a single number to describe your performance. We could define that number to be, for instance, the mean of your precision and your recall. This is exactly what the F1-score is.

참고

F Score에 대한 계산은 다음 공식을 이용합니다. 큰 의미상으로 보자면 Precision과 Recall에 대한 평균인데, 그냥 평균을 내면, 값의 왜곡 현상이 생기기 때문에, 가중치를 주는 평균이라고 이해하면 됩니다.

특히 β가 1인 경우 (즉 F1)를 F1 Score라고 하고, 모델의 성능 평가 지표로 많이 사용합니다.

REFERENCE

Comments

Eungbean Lee's Picture

About Eungbean Lee

Lee is a Student, Programmer, Engineer, Designer and a DJ

Seoul, South Korea https://eungbean.github.io