book.naver.com/bookdb/book_detail.nhn?bid=16238302
*해당 글은 학습을 목적으로 위의 도서 내용 중 일부 내용만을 요약하여 작성한 포스팅입니다.
상세한 내용 및 전체 내용 확인을 원하신다면 도서 구매를 추천드립니다.
평가 프로세스
- 모델 예측 성능을 평가하는 단계.
- 회귀의 경우 대부분 실제값과 예측값의 오차 평균값에 기반한다.
- 분류도 일반적으로는 실제 결과 데이터와 예측 결과 데이터가 얼마나 정확한가에 기반한다.
- 하지만 분류의 경우 정확도만 가지고 판단하면 잘못된 평가 결과가 나올 수 있다.
1) 정확도 (Accuracy)
- 정확도는 실제 데이터에서 예측 데이터가 얼마나 같은지 판단한다.
- 불균형한 레이블 값 분포에서 판단할 경우 정확한 평가 지표가 아니다.
- ex) 100개의 데이터 중 90개의 레이블이 0이면 무조건 0을 예측하는 모델의 정확도가 90%.
2) 오차 행렬 (Confusion Matrix, 혼동행렬)
- 이진 분류에서 성능 지표로 활용된다.
- 학습된 분류 모델이 예측을 수행하며 얼마나 헷갈리고 있는 지도 보여준다.
- 불균형한 이진 분류 데이터는 Positive 데이터 건수가 매우 작기 때문에 Negative 예측 정확도가 높아지는 경향이 발생할 수 있다.
- 그래서 불균형한 데이터 세트에서는 정확도보다 정밀도와 재현율을 더 선호한다.
- sklearn.metrics.confusion_matrix
*TN : 예측 값 0, 실제 값 0
*FP : 예측 값 1, 실제 값 0
*TP : 예측 값 1, 실제 값 1
*FN : 예측 값 0, 실제 값 1
*오차 행렬상 정확도 = 예측 결과와 실제 값이 동일한 건수 / 전체 데이터 수 = ( TN + TP ) / (TN + FP + FN + TP)
3) 정밀도와 재현율
- 정밀도 = TP / (FP + TP)
- 재현율 = TP / (FN + TP)
- 정밀도 : 예측을 Positive로 한 대상 중 예측과 실제 값이 Positive로 일치한 데이터의 비율
- 재현율 : 실제 값이 Positive인 대상 중 예측과 실제 값이 Positive로 일치한 데이터의 비율
- 정밀도는 양성 예측도로 불리고, 재현율은 민감도, TPR로 불린다.
- 실제 Positive 양성 데이터를 Negative로 잘못 판단하면 안 될 경우 재현율이 중요 지표
- 실제 Negative 음성 데이터를 Positive로 잘못 판단하면 안될 경우 정밀도가 중요 지표
- 정밀도 계산을 위해 precision_score()를 사용한다.
- 재현율 계산을 위해 recall_score()를 사용한다.
*가장 좋은 것은 재현율과 정밀도 모두 높은 수치를 얻는 것.
3-1) 정밀도와 재현율 트레이드오프
- 분류의 경우 임계값 (Threshold)를 조정해 정밀도 또는 재현율의 수치를 높일 수 있다.
- 그러나 한 쪽을 강제로 높이면 다른 하나는 떨어진다. 이를 트레이드 오프라고 한다.
- 방법은 예측 데이터가 특정 레이블에 속하는지 계산하기 위해 수행하는 결정 확률을 임계값으로 지정하는 것.
- 일반적인 이진 분류에서는 임곗값을 0.5로 정하고 이보다 크면 Positive, 작으면 Negative로 결정한다.
- sklearn.preprocessing.Binarizer
*임계값을 낮추면 Positive가 많아져 재현율이 올라가고 정밀도가 떨어짐
*임계값을 낮추면 Negative가 많아져 정밀도가 올라가고 재현율이 떨어짐
*업무 환경에 맞게 두 개의 수치를 상호 보완할 수 있는 수준에서 적용해야 한다.
4) F1 스코어
- 정밀도와 재현율을 결합한 지표이다.
- 정밀도와 재현율이 어느 한 쪽으로 치우치지 않는 수치를 나타낼 때 상대적으로 높은 값을 갖는다.
- sklearn.metrics.f1_score
5) ROC 곡선과 AUC
- 이진 분류의 예측 성능 측정에 중요하게 사용되는 지표이다.
- ROC 곡선은 FPR이 변할 때 TPR이 어떻게 변하는지 나타내는 곡선이다.
- FPR을 X 축으로, TPR을 Y 축으로 잡아 곡선 형태로 나타낸다.
- ROC 곡선은 FPR을 0부터 1까지 변경하며 TPR의 변화 값을 구한다.
- FPR 변경 시에는 분류 결정 임계값을 변경한다. (임계값이 1이면 FPR이 0, TN이 0이면 FPR이 1)
- sklearn.metrics.roc_curve
- 일반적으로 ROC 곡선은 FPR과 TPR의 변화 값을 보는 용도로 사용한다.
- 분류의 성능 지표로 사용되는 것은 ROC 곡선 면적에 기반한 AUC 값이다.
- AUC 값은 ROC 곡선 밑의 면적으로, 1에 가까울수록 좋은 수치이다.
- sklearn.metrics.roc_auc_score
*TPR (민감도, 재현율) : 실제값 Positive가 정확히 예측되어야 하는 수준
*TNR (특이성) : 실제값 Negative가 정확히 예측돼야 하는 수준
*TPR = TP / (FN + TP)
*TNR = TN / (FP + TN)
*FPR = FP / (FP + TN) = 1 - TNR