이전 포스팅에서 정밀도와 재현율에 대해서 알아보았다.
또한, 각 경우마다 재현율이나, 정밀도의 상대적 중요성이 다르다는 것 또한 알 수 있었다.
하지만, 정밀도와 재현율만으로 완벽하게 머신러닝 분류 알고리즘을 평가할 수 있을까?
이전 포스팅의 마지막 부분에서 다루었듯이, 정밀도 혹은 재현율 중 하나를 극단적으로 증가시키는 경우, 정밀도-재현율 트레이드오프로 인해 다른 하나의 수치가 급격하게 감소하게 된다.
따라서, 이들 중 하나만 가지고 성능을 측정하는 것은 성능의 전체를 대변할 수 없다.
이런 문제점을 해결하기 위해서 나온 개념이 F1 Score이다.
F1 Score
F1 Score는 정밀도와 재현율을 결합한 지표이다.
이 지표는 정밀도와 재현율이 어느 한쪽으로 치우치지 않을 떄 상대적으로 높은 값을 가질 수 있다.
ROC곡선 AUC Score
일단 AUC Score가 ROC곡선에 기반하고 있기 때문에, ROC 곡선에 대해서 먼저 이해를 해야 한다.
ROC는 Receiver Operation Characteristic의 줄임말로, ROC곡선을 우리말로 수신자 판단 곡선으로 불린다.
ROC곡선은 FPR(False Positive Rate)이 변할 때(X축),
TPR(True Positive Rate) 이 어떻게 변하는지(Y축)를 나타내는 곡선이다.
TPR는 재현율을 나타낸다. 재현율은 이전에 배웠던 내용을 다시 복기하면, 실제 Positive인 값들 중 모델이 Positive라고 예측한 값의 비율을 의미한다. 또한, ROC곡선에서는 재현율을 민감도라고 부르기도 한다.
이 민감도에 대응하는 지표로는 TNR(True Negative Rate)인 특이성(Specificity)이 있다.
이것은 재현율의 의미와 대응되게 실제 Negative값 중 모델이 Negative라고 예측한 값들의 비율을 의미한다.
TNR = TN / (FP + TN)
FPR(False Positive Rate)는 실제 Negative값 중 모델이 Positive라고 예측한 값들의 비율을 의미한다.
수식으로 나타내면 FPR = FP / (FP + TN)이다. FPR과 TNR의 수식을 보면 두 식을 합하면 항상 값이 1이 되는 것을 볼 수 있다.
FPR = 1 - TNR = 1 - 특이성
지금까지 ROC곡선의 X축과 Y축에 들어가는 값인 TPR과 FPR의 값이 어떤 의미를 갖고 있는지에 대해서 알아보았다.
ROC곡선은 FPR값을 0~1까지 변경하면서 TPR의 변화 값을 측정한다. 이렇게 FPR의 값을 설정할 수 있는 것은
임계값(Threshold)을 조정함으로써 가능하다.
임계값을 1로 지정하게 되면 모델이 Positive라고 판단하는 기준이 가장 높은 수치이기 때문에, 틀린 Positive값이 나오지 않아, FPR이 0이 된다.(단, Positive인 많은 값들을 Negative라고 판단할 것이다.)
반대로 임계값을 0으로 지정하게 되면 FPR이 1이 된다.
이렇게 ROC곡선은 대부분 아래의 그림과 같은 그래프를 가지게 된다.
ROC 곡선이 가운데 점선(y=x)에 가까울 수록 성능이 떨어지는 것이며,
멀어질수록 성능이 뛰어난 것이다.
AUC Score는 ROC 곡선을 통해서 얻을 수 있는 값이다.
ROC 곡선이 가지고 있는 면적을 통해서 해당 모델의 성능을 수치로 나타낸다.
ROC곡선은 x축과 y축 모두 0~1사이의 값을 가지기 때문에, 길이가 1인 정사각형으로 나타낸다.
따라서 AUC Score는 1에 가까울수록 좋은 모델임을 나타낸다.
'기계학습 > Machine Learning' 카테고리의 다른 글
[파이썬 머신러닝 완벽가이드] : 사이킷 런 결정트리 하이퍼 파라미터, 시각화Graphviz (0) | 2020.08.12 |
---|---|
[파이썬 머신러닝 완벽가이드] : 사이킷 런 앙상블러닝, 결정 트리 (0) | 2020.08.10 |
[파이썬 머신러닝 완벽가이드] : 사이킷 런 평가지표 (정밀도, 재현율) (0) | 2020.08.06 |
[파이썬 머신러닝 완벽가이드] : 사이킷 런 평가지표 (정확도 , 오차행렬) (0) | 2020.08.06 |
[파이썬 머신러닝 완벽가이드] : 사이킷 런 데이터 전처리 & 피처 스케일링 (0) | 2020.08.05 |
최근댓글