Precision-Recall Curve – Towards AI

Precision-Recall Curve – Towards AI

Pengarang: Saurabh Saxena

Awalnya diterbitkan di Towards AI the World’s Leading AI and Technology News and Media Company. Jika Anda sedang membangun produk atau layanan terkait AI, kami mengundang Anda untuk mempertimbangkan untuk menjadi sponsor AI. Di Towards AI, kami membantu menskalakan AI dan startup teknologi. Biarkan kami membantu Anda melepaskan teknologi Anda kepada massa.

Evaluasi Model

Kurva PR, AUC-PR, dan AP

Gambar oleh Penulis

Evaluasi model apapun sangat penting. Ketika datang ke model klasifikasi, baik itu biner atau multi-kelas, kami memiliki berbagai metrik yang tersedia untuk kami. Jika kami memiliki dataset yang seimbang, Anda dapat memilih Akurasi. Jika True Prediction lebih penting, presisi, recall, spesifisitas, atau F1 akan menjadi pilihan. Semua metrik yang disebutkan di sini menggunakan kelas prediksi untuk evaluasi dan bukan skor prediksi. Namun, beberapa metrik menggunakan skor prediksi seperti Precision-Recall Curve dan ROC.

Kurva Presisi-Recall:

Kurva presisi-recall menunjukkan tradeoff antara presisi dan recalls untuk ambang batas yang berbeda. Ini sering digunakan dalam situasi di mana kelas sangat tidak seimbang. Sebagai contoh, jika suatu observasi diprediksikan termasuk dalam kelas positif dengan probabilitas > 0,5, maka observasi tersebut diberi label sebagai positif. Namun, kita dapat memilih ambang probabilitas antara 0 dan 1. Kurva pemanggilan presisi membantu memvisualisasikan bagaimana ambang batas memengaruhi kinerja pengklasifikasi.

Untuk memahami presisi dan ingatan, mari segarkan ingatan kita dengan cepat tentang kemungkinan hasil dalam masalah klasifikasi biner dengan mengacu pada Matriks Kebingungan.

Matriks Kebingungan | Gambar oleh Penulis

Presisi mengacu pada proporsi prediksi yang benar di antara semua prediksi untuk kelas tertentu.

Gambar oleh Penulis

Penarikan kembali mengacu pada proporsi contoh kelas tertentu yang telah diprediksi oleh model sebagai milik kelas itu.

Gambar oleh Penulis

Model dengan presisi dan daya ingat tinggi akan mengembalikan hasil yang sangat sedikit, tetapi sebagian besar prediksi benar.

Kurva PR | Gambar oleh Penulis

Namun, model dengan presisi rendah dan daya ingat tinggi mengembalikan banyak hasil, tetapi sebagian besar prediksi akan salah. Model Ideal akan memiliki presisi tinggi dan daya ingat tinggi dan akan mengembalikan banyak hasil dengan semua prediksi yang benar, sedangkan model dasar akan memiliki presisi sangat rendah.

dari sklearn.datasets impor make_classification
dari sklearn.model_selection impor train_test_split
dari sklearn.linear_model impor LogisticRegression
dari sklearn.metrics impor precision_recall_curve
dari sklearn.metrics impor PrecisionRecallDisplay X, y = make_classification(n_samples=1000, n_classes=2,
random_state=1)
X_train, X_test, y_train, y_test = train_test_split(X, y,
ukuran_tes=.2,
random_state=2)
lr = LogistikRegresi()
lr.fit(X_train, y_train)
y_pred = lr.predict(X_test)
y_pred_prob = lr.predict_proba(X_test)
y_pred_prob = y_pred_prob[:,1]
presisi, recall, threshold = precision_recall_curve(y_test,
y_pred_prob)
prd = PrecisionRecallDisplay(presisi, ingat)
prd.plot()
Kurva PR | Gambar oleh Penulis

AP dan AUC-PR

Average Precision merangkum kurva PR menjadi satu metrik sebagai rata-rata tertimbang dari presisi yang dicapai pada setiap nilai ambang.

Gambar oleh Penulis

di mana Pn dan Rn adalah presisi dan recall pada ambang n^th.

AUC-PR adalah singkatan dari Area Under the Curve-Precision Recall, dan merupakan area trapesium di bawah plot. AP dan AUC-PR adalah cara yang serupa untuk meringkas kurva PR menjadi satu metrik.

AP atau AUC tinggi mewakili presisi tinggi dan daya ingat tinggi untuk ambang batas yang berbeda. Nilai AP/AUC berfluktuasi antara 1 (model ideal) dan 0 (model terburuk).

dari sklearn.metrics impor average_precision_score
average_precision_score(y_test, y_pred_prob) Output:
0.927247516623891

Kita dapat menggabungkan skor PR dengan grafik.

ap = rata-rata_precision_score(y_test, y_pred_prob)
prd = PrecisionRecallDisplay(presisi, recall, average_precision=ap)
prd.plot()
Kurva PR dengan AP | Gambar oleh Penulis

Kurva Precision-Recall biasanya menggunakan dua kelas untuk evaluasi, dan untuk klasifikasi multi-kelas atau multi-label kurva garis akan digambar per kelas, dan AP atau AUC untuk setiap kelas akan membantu untuk menentukan peringkat di antara kelas. Namun, untuk meringkas multi-kelas dalam satu metrik, mikro, makro, dan Kurva Presisi tertimbang dan AP/AUC dapat dihitung. Silakan merujuk ke Evaluasi Model Multi-kelas dengan Matriks Kebingungan dan Laporan Klasifikasi untuk memahami metrik mikro, makro, dan berbobot.

Di bawah ini adalah kode python untuk membuat dan memplot PR untuk klasifikasi multi-kelas.

https://medium.com/media/d2dadd20c3e0ad327b7c9fd595cf2803/href

dari sklearn.datasets impor make_classification
dari sklearn.preprocessing import label_binarize
dari sklearn.model_selection impor train_test_split
dari sklearn.linear_model impor LogisticRegression
dari sklearn.multiclass impor OneVsRestClassifier # Muat Dataset
X, y = make_classification(n_samples=1000, n_classes=2,
random_state=1)
y = label_binarize(y, class=[0,1,2])
X_train, X_test, y_train, y_test = train_test_split(X, y,
ukuran_tes=.2,
random_state=2)
lr = LogistikRegresi()
ovr = OneVsRestClassifier(lr)
ovr.fit(X_train, y_train)
y_pred = ovr.predict(X_test)
y_pred_prob = ovr.predict_proba(X_test) presisi, recall, threshold, ap, labels = pr_curve(y_test,
y_pred_prob,
label=[0,1,2])
pr_curve_plot(presisi, recall, threshold, ap, label)
Kurva PR multi-kelas | Gambar oleh Penulis

Referensi:

[1] Kurva Presisi-Recall. https://scikit-learn.org/stable/modules/generated/sklearn.metrics.precision_recall_curve.html#sklearn.metrics.precision_recall_curve

[2] Skor Presisi Rata-Rata. https://scikit-learn.org/stable/modules/generated/sklearn.metrics.average_precision_score.html#sklearn.metrics.average_precision_score

[3] skor AUC. https://scikit-learn.org/stable/modules/generated/sklearn.metrics.auc.html#sklearn.metrics.auc

[4] Tampilan Presisi-Recall. https://scikit-learn.org/stable/modules/generated/sklearn.metrics.PrecisionRecallDisplay.html?highlight=precisionrecalldisplay#sklearn.metrics.PrecisionRecallDisplay

Precision-Recall Curve awalnya diterbitkan di Towards AI on Medium, di mana orang-orang melanjutkan percakapan dengan menyoroti dan menanggapi cerita ini.

Diterbitkan melalui Menuju AI

Author: Jonathan Kelly