분류 성능 평가 지표에 대한 글이다.
자주 까먹어서 글을 남겨본다.
참고로 이 블로그가 도움이 많이 되었다.
위키 도움도 많이 받았다.
같이 참고하면 도움이 될 것이다.
다룰 내용은 다음과 같다.
- 이진 분류기(Binary Classifier)
- 민감도(Precision)와 재현율(Recall, Sensitivity)
- 특이도(Specificity)
- 정확도(Accuracy)
- F-Score
- 위양성률(Fall-out)과 위음성률(Miss Rate)
- ROC 커브와 AUC
이진 분류기의 성능을 평가하고 싶을 때가 있다.
이 때 분류기의 성능을 단순히 정확도(Accuracy, 전체 중 맞은 수)만으로 평가하기에는 적절하지 않다.
위의 그림처럼 분류 결과에 대한 다양한 경우가 발생하기 때문이다.
분류기가 참이라 판단한 경우를 Positive, 거짓이라 판단한 경우를 Negative라 칭하고
그 판단이 옳다면 True, 틀렸다면 False라 한다.
즉, 분류기가 옳게 분류했다면 True Positive/Negative이고 그렇지 않다면 False Positive/Negative가 되는 것이다.
참고로 거짓 양성을 1종 오류, 거짓 음성은 2종 오류라고도 한다. (양성, 음성 순으로 1종, 2종이라 외우면 쉽다)
정책학쪽에서는 잘못된 가설을 수립하는 경우를 3종 오류라고도 정의한다. (메타 오류)
이제 조금 더 들어가보자.
분류기가 얼마나 True를 잘 분류하는가 를 민감도(Sensitivity)라 한다.
반면 얼마나 False를 잘 분류하는가 를 특이도(Specificity)라 한다.
민감도는 양성률이라고도 불리며, 위양성률은 1 – 특이도로 계산한다.
민감도는 실제로 일어난 일(Actual)을 얼마나 잘 재현하는가 로 해석할 수도 있는데, 이러한 이유로 민감도를 재현율(Recall, Hit Rate) 라고도 한다.
정밀도(Precision)는 분류기가 True로 분류한 경우가 얼마나 정확한지 를 보는 것이다.
정밀도와 재현율은 용어 자체에서도 암시하듯이 대상이 다르다.
정밀도는 분류기가 얼마나 정밀한지를 보는 반면에 재현율은 분류기가 얼마나 사실을 잘 재현하는지를 본다.
또한 이 둘은 서로 상반관계(Trade-off)이다.
그럴수밖에 없는 것이, 이 둘은 분자가 동일하면서 분모가 다르다. (False Positive and Negative)
게다가 거짓 양성과 거짓 음성은 기본적으로 상반관계에 위치해있다.
클래스 1을 True, 클래스 2를 False라 가정하고, 이 두 클래스의 확률분포를 위와같이 표현해보자.
가운데의 녹색 선은 이진 분류기의 결정 경계(Decision Boundary)이다.
이 경우 은 거짓 양성을, 는 거짓 음성을 의미하게 된다.
그림에서 보이다시피 이 둘은 결정 경계에 의해 양분되며 상반관계를 가진다.
다시 말해, 정밀도와 재현율은 상반관계이다.
이를 통계적 관점으로 다시 확인해보자
이 그림은 아무리봐도 Bias와 Variance에 대한 설명과 동일하다.
가운데를 True라고 보았을 때 양 쪽 그림은 모두 동일한 정확도(Accuracy)를 가지고 있다.
왼쪽은 정밀도(Precision)만 높으며, 오른쪽은 재현율(Recall)만 높다.
실제로도 문헌을 보면 다음과 같이 소개한다.
More generally, precision refers to the concept of consistency, or the ability to group well, while accuracy refers to how close we are to the target, and trueness refers to how close we are to a specific target on average.
David M. W. Powers, “What the F-measure doesn’t measure: Features, Flaws, Fallacies and Fixes”. 2015, arXiv eprint
다시 말해, 정밀도(Precision)는 편향(Bias)을, 재현율(Recall)은 분산(Variance)을 나타낸다고 볼 수 있다.
그리고 편향분산 트레이드오프에 의해 정밀도와 재현율 역시 상반관계를 가지게 된다.
정확도는 전체 중 얼마나 잘 맞았는지를 의미한다고 앞서 말한 바가 있다.
하지만 잘 맞았다는 것은 실제 True와 실제 False에 대해 분류기가 옳게 분류했다는 것을 의미하는데, 이 중 어느 것을 더 옳게 분류했는지에 대해서는 알 수가 없다.
다시 말해, 정확도는 True Positive나 True Positive가 균형있지 않은 경우 편중(Biased)될 수밖에 없다는 것이다.
예를 들면, 환자 1만명 중 True Negative가 9천명인데 True Positive가 10명이다.
이 경우에 분류기의 성능을 전체 중 맞은 것으로 표현하는게 옳은 일일까?
True Positive에 대한 데이터가 너무 부족하기 때문에 이는 옳은 방법이 아니다.
이럴땐 F-Score가 유용할 수 있다.
F-Score는 이 문헌에서 처음으로 소개되었으며, 이 게시글이 더 이해하기는 쉬울 것이다.
F-Score는 문헌에서 제시된 우수성(Effectiveness; E = 1 – F)의 척도이다.
여기서 R은 재현율(Recall), P는 정밀도(Precision)을 의미한다.
$\beta$는 다음과 같이 재현율과 정밀도 간 비율로 나타내어진다.
이 때, 를 1로 했을 때의 척도를 F1-Score라고 한다.
가 재현율과 정밀도 간 비율이기 때문에 에 따라 feature importance를 조정할 수 있다.
예를 들어 재현율을 고평가하고싶다면 를 높이면 되고, 정밀도를 고평가하고싶다면 를 낮추면 된다.
보통 F0.5와 F1, F2를 사용하는 듯 하다.
참고로 는 범위에 존재한다.
(원전인 에서 의 범위는 [0,1]이다.)
여기까지만 정리해도 F-Score는 정확도보다는 좋은 지표지만 명확한 단점이 존재한다는 것을 알 수 있다.
F-Score는 이진 분류기에서만 유용하며 여전히 클래스 크기 차이(Class Imbalance)에 의한 편중(Bias) 현상을 해결하지 못했다.
그 밖의 문제들도 수두룩하며 더 좋은 지표를 찾기위한 연구가 지속되고 있다. [참고]
위양성률(Fall-out)이란 Actual False에 대해서 얼마나 거짓 양성(False Positive)인지를 나타내는 값으로, 특이도(Specificity)의 정반대 개념이다.
Actual False에 대해 얼마나 틀렸는지를 나타내는 지표이다. (False Positive Rate, 1종 오류율)
위음성률(Miss Rate)는 재현율(Recall)의 정반대 개념으로 Actual True에 대해서 얼마나 거짓 음성(False Negative)인지를 나타내는 지표이다.
True에 대해 얼마나 틀렸는지를 말하는 것이다. (False Negative Rate, 2종 오류율)
Receiver Operating Characteristics (ROC)는 분류기에 대한 재현율(Recall, True Positive Rate)과 위양성률(Fall-out, False Positive Rate)의 비율로 표현된다.
이 때 분류기의 결정경계를 바꿔가면서 ROC를 시각화할 수 있는데 그것이 다음의 ROC 커브이다.
당연하게도 재현율(Recall)이 높으면 좋을 것이고, 위양성률(Fall-out)이 낮으면 좋을 것이니 그래프가 좌측 상단에 가깝게 나올수록 좋은 분류기 성능을 가진 것이 될 것이다.
다음의 그래픽들은 이 사이트에서 가져왔는데 ROC와 AUC를 이해하는데 아주 큰 도움이 될 것이다.
위의 그래픽을 통해 결정 경계(Decision Boundary)가 변화하며 ROC가 달라지는 과정을 볼 수 있다.
위의 ROC를 x축에 대해 [0,1]에서 적분한 것, 즉 아래 영역의 넓이를 Area Under a ROC Curve (AUC) 라고 한다.
결정 경계의 변화에 따른 AUC의 변화는 당연히 없을 것이다. 결정 경계의 변화는 ROC 곡선에 영향을 미치지 않기 때문이다.
그렇다면 AUC는 무엇에 영향받을까?
당연히 클래스의 분포이다.
위의 그래픽처럼 두 클래스 간 교차영역이 커질수록(결정 경계가 두 클래스를 구분하기 어려울수록) ROC 커브는 y=x에 가까워진다.
다시말해 분류 행위가 랜덤과 동일하다는 의미이다.
반면 두 클래스간 교차영역이 전혀 없고 아주 클린하게 두 클래스를 구분할 수 있도록 결정경계가 설정되면 AUC는 1이 된다.
한편 두 클래스의 크기가 다르면 어떻게 될까?
위의 경우처럼 클래스간 크기가 불균형하더라도 AUC는 비교적 잘 유지되는 모습을 볼 수 있다.
(가장 오른쪽의 그래프는 정밀도-재현율 그래프로 클래스의 불균형에 취약한 모습을 확인할 수 있다.)
그 이유는 AUC를 구성하는 재현율(Recall)과 위양성률(Fall-out)이 각각 별개의 클래스로부터 계산되기 때문이다.
재현율(Recall)은 True인 사건에 대해 분류기가 얼마나 잘 판별하는지를
위양성률(Fall-out)은 False인 사건에 대해 분류기가 얼마나 못 판별하는지를 나타내는 것인데
애초에 지표에 사용되는 클래스 자체가 다르기 때문에 ROC도 영향을 적게 받을수밖에 없다.
그럼에도 불구하고 이 문헌에서는 F-Score 자체가 동일한 분포의 두 클래스를 가정하고 만들었기 때문에 다른 지표를 사용해야한다고 말하고 있다.
이 부분은 아직도 많이 연구되고있는 것 같고 필자도 더 이해해야할 부분이다.