본문 바로가기
Data Analysis/Statistics with Python

[Statistics with Python] 05. 분류 알고리즘 평가 방법 - Accuracy, precision, recall

by Dlearner 2019. 8. 17.
반응형

3절 Evaluation(평가) 방법

 

 

본 포스팅은 [위키북스- 파이썬 머신러닝 완벽 가이드]를 활용한 스터디 포스팅입니다.

[위키북스- 파이썬 머신러닝 완벽 가이드]

 

 

저번 포스팅까지는 교차 검증에 관한 개념과 scikit learn에서 제공하는 다양한 k-fold 검증에 대해 알아보았다.

이번 포스팅에서는 "분류 알고리즘이 얼마나 정확한 예측을 하는가"에 대한 평가 방법에 대한 개념들을 알아보도록 할 것이다. (코딩은 뒤의 실습에서 자세히 다루려 한다.)

 

 

분류 알고리즘에 평가를 하는 다양한 방법이 있는데, 그 종류는 아래와 같으며 하나하나씩 짚어가며 설명해보려고 한다.

 

  • 정확도(Accuracy)
  • 오차 행렬(confusion matrix, 혼동 행렬)
  • 정밀도(Precision)와 재현율(Recall)
  • F1 score
  • ROC curve와 AUC

 

 

 

 

Accuracy(정확도)

정확도는 실제 데이터에서 예측 데이터가 얼마나 같은지를 판단하는 지표이다. 알고리즘의 단순한 비교를 할 시에 가장 많이 쓰이는 지표이기도 하다.

 

정확도를 계산하는 방법은 아래와 같다.

 

[ 정확도 계산 방법 ]

 

 

 

 

 

 

오차 행렬(confusion matrix, 혼동 행렬)

이진분류에서 성능 지표로 오차행렬의 개념이 잘 활용된다.

이진 분류의 예측 오류가 얼마인지와 더불어 어떠한 유형의 예측 오류가 발생하고 있는지를 함께 나타내는 지표이다.

 

오차행렬을 그림으로 설명하면 아래와 같다.

 

[ 오차 행렬 도표 ]

 

위의 도표에서 각 구성이 의미 하는 바는 아래와 같다.

 

오차행렬 구성

  • TN : 예측값을 Negative 값 0으로 예측했는데 실제 값 역시 Negative 값 0 일때
  • FP : 예측값을 Positive 값 1으로 예측했는데 실제 값은 Negative 값 0 일때
  • FN : 예측값을 Negative 값 0으로 예측했는데 실제 값은 Positive 값 1 일때
  • TP : 예측값을 Positive 값 1으로 예측했는데 실제 값 역시 Positive 값 1 일때

 

 

 

 

 

정밀도(Precision)와 재현율(Recall)

정밀도와 재현율은 Positive 데이터 세트의 예측 성능에 좀 더 초점을 맞춘 평가 지표이다.

 

 

정밀도 / 재현율 정의

  • 정밀도(Precision) : 예측을 Positive로 한 대상 중에 예측과 실제값이 Positive로 일치한 데이터의 비율
  • 재현율(Recall, 민감도) : 실제값이 Positive로 한 대상 중에 예측과 실제값이 Positive로 일치한 데이터의 비율

 

[ precision / recall 구하는 식 ]

 

정밀도 / 재현율 특징

정밀도와 재현율은 상호 보완적인 평가 지표이기 때문에 서로 반비례하게 움직이기 쉽다. 이를 정밀도/재현율의 트레이드 오프(Trade-off)라고 부른다.

 

최적의 정밀도와 재현율을 찾기 위해서는 precision_recall_curve()를 이용하여 두 곡선이 만나는 점을 추적하는 것이 좋다.

  • 정밀도와 재현율은 임계값을 통해 조정할 수 있는데, 임계값이란 Negative(0)과 Positive(1)를 반환하는 경계점을 뜻하며 디폴트는 0.5이다. 예를 들어 예측 값이 0.7이라면, 임계값 0.5보다 더 큰 값을 갖기 때문에 Positive(1)을 반환하게 된다.
반응형

댓글