Precision(정밀도)는 전체 양성 예측 중 진양성의 비율이고, Recall(재현률)은 분류기가 정확하게 감지한 양성 레이블의 비율이다.
- Precision = Positive 예측의 정확도
- Recall = 정확하게 감지한 Positive sample의 비율(민감도;Sensitivity, 진짜 양성 비율;True Positive Rate;TPR)
즉 FP이 높아질수록 Precision의 값이 낮아지고, NP이 높아질수록 Recall의 값이 작아진다.
위 그림의 예처럼 분류기의 결정임계값(thresholds)을 조정하면 그에 따라 Precision과 Recall의 값이 변한다.
(Positive 예측의 범위를 넓히는 threshold를 설정하면, 음양성이 늘어나 정밀도가 낮아진다.)
from sklearn.metrics import precision_recall_curve
#분류기의 predict( ) 메서드 대신 decision_function( ) 메서드를 호출하면 각 샘플의 점수를 얻을 수 있다.
#Linear_regression 같은 방법에서 편리
y_scores = cross_val_predict(classifier, X_train, y_train, cv=3, method = "decision_function)
precisions, recalls, thresholds = precision_recall_curve(y_train, y_score)
def plot_precision_recall_vs_threshold(precisions, recalls, thresholds):
plt.plot(thresholds, precisions[:-1], "b--", label="Precision", linewidth=2)
plt.plot(thresholds, recalls[:-1], "g-", label="Recall", linewidth=2)
plt.legend(loc="center right", fontsize=16)
plt.xlabel("Threshold", fontsize=16)
plt.grid(True)
plt.axis([-50000, 50000, 0, 1])
plot_precision_recall_vs_threshold(precisions, recalls, thresholds)
plt.show()
'Datascience' 카테고리의 다른 글
Ensemble 2: AdaBoosting과 GradientBoosting (0) | 2024.01.06 |
---|---|
Ensemble 1: 앙상블 학습과 랜덤 포레스트 (0) | 2024.01.03 |
머신러닝 알고리즘의 성능 평가 지표(Evaluation Metric) (0) | 2023.12.29 |
Data Preprocessing : Label Encoding * One hot Encoding (0) | 2023.12.29 |
Skit- Learn의 기반 프레임워크 익히기 (0) | 2023.12.29 |