모델을 설계했다면 설계한 모델이 얼마나 정확한 모델인지 평가해야한다. 이번 글에서는 모델을 평가하는 성능평가 지표 중 하나인 정확도와, 여러 성능 평가 지표를 생성할 수 있는 오차 행렬에 대해 소개한다.
정확도(Accuracy)
정확도: 실제 데이터에서 예측 데이터가 얼마나 같은지 판단하는 지표
정확도(Accuracy) = 예측 성공한 데이터 건수 / 전체 예측 데이터 건수
정확도는 가장 직관적으로 모델 예측 성능을 나타내는 평가 지표이다. 하지만 특정 데이터셋에서는 성능을 왜곡할 수 있다.
이진 분류 문제에서 label이 0인 데이터가 전체 데이터셋의 90%, 1인 데이터가 전체 데이터셋의 10%라고 하자. 그리고 모델은 어떠한 input이 들어오든 0으로 예측한다고 하자. 정확도로 해당 모델을 평가하면 90%라는 높은 수치가 나온다. 이처럼 데이터셋의 label이 불균등하게 분포되어 있을 때 정확도 지표는 실제 성능을 왜곡할 수 있다. 따라서 이러한 데이터셋에서는 정확도 평가 지표를 성능 수치로 사용해서는 안된다.
사이킷런에서는 정확도를 계산할 수 있는 accuracy_score()를 제공한다. 첫 번째 인자로는 test셋의 label값을 입력하고, 두 번째 인자로는 X_test를 모델을 이용해 예측한(predict(X_test)) 값을 입력한다.
오차 행렬(Confusion Matrix)
오차 행렬은 어떤 유형의 예측 오류가 발생하고 있는지 나타낸다. 실제 label 값과 예측 label 값의 유형에 따라 4분면 행렬에 매핑하여 나타낸다.
- TN: 예측값을 Negative로 예측, 실제 값 역시 Negative
- FP: 예측값을 Positive로 예측, 실제 값은 Negative
- FN: 예측값을 Negative로 예측, 실제 값은 Positive
- TP: 예측값을 Positive로 예측, 실제 값 역시 Positive
오차 행렬을 이용해서 여러 성능 평가 지표를 만들어 낼 수 있다.
- 정확도: (TN+TP)/(TN+FP+FN+TP)
- 정밀도: TP/(FP+TP)
- 재현율(민감도): TP/(FN+TP)
※정밀도와 재현율은 다음장에서 자세하게 다룬다.
사이킷런에서는 오차행렬을 구하는 confusion_matrix()를 제공한다. accuracy_score()와 마찬가지로 첫 번째 인자에 test셋의 label값, 두 번째 인자로 X_test를 모델을 이용하여 예측한 결과값을 입력한다.
#이 글은 권철민 작가님의 [파이썬 머신러닝 완벽가이드]를 통해 공부한 내용을 바탕으로 정리하였습니다.
'Machine Learning > Evaluation matric' 카테고리의 다른 글
피마 인디언 당뇨병 예측 (0) | 2022.05.20 |
---|---|
F1 score, ROC, AUC (1) | 2022.05.16 |
정밀도와 재현율 (0) | 2022.05.15 |