
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
Menyelam Jauh Ke Dalam Matriks Kebingungan
Presisi (TPR), Recall (PPV), TNR, FPR, FNR, NPV, Skor F1, Akurasi, Akurasi Seimbang, LR+, LR-
Gambar oleh Penulis
Di bidang Ilmu Data, evaluasi model adalah komponen kunci dari Siklus Hidup Pelatihan. Ada banyak metrik untuk mengevaluasi model klasifikasi, tetapi metrik Akurasi sering digunakan. Namun, Akurasi mungkin tidak memberikan penggambaran model yang benar karena ketidakseimbangan kelas, dan dalam kasus seperti itu, Matriks Kebingungan akan digunakan untuk evaluasi.
Matriks Kebingungan sangat penting untuk diketahui, karena banyak metrik diturunkan darinya, baik itu presisi, daya ingat, skor F1, atau Akurasi.
Matriks Kebingungan | Gambar oleh Penulis
Mari kita pahami metrik yang berasal dari Matriks Kebingungan
True Positive (TP) adalah jumlah prediksi yang benar ketika kelas sebenarnya adalah positif.
True Negative (TN) adalah jumlah prediksi yang benar ketika kelas sebenarnya negatif.
False Positive (FP) adalah jumlah prediksi yang salah ketika kelas sebenarnya positif, juga disebut sebagai Kesalahan Tipe I.
False Negative (FN) adalah jumlah prediksi yang salah ketika kelas sebenarnya negatif, juga disebut sebagai Kesalahan Tipe II.
dari sklearn.datasets impor load_breast_cancer
dari sklearn.model_selection impor train_test_split
dari sklearn.linear_model impor LogisticRegression
dari . impor confusion_matrix X, y = load_breast_cancer(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y,
ukuran_tes=0,33,
random_state=42)
lr= LogistikRegresi()
lr.fit(X_train,y_train)
y_pred=lr.predict(X_test) conf_mat = confusion_matrix(y_test, y_pred, plot=False)
TP = conf_mat[0,0]
TN = conf_mat[1,1]
FP = conf_mat[1,0]
FN = conf_mat[0,1]
print(“TP: “,TP)
print(“TN:”, TN)
print(“SJ: “, SJ)
print(“FN:”, FN) Keluaran:
TP: 63
TN: 118
FP: 3
FN: 4
True Positive Rate (TPR), Sensitivitas, Ingat: Ini adalah probabilitas seseorang yang positif mengidap penyakit. Dengan kata lain, Recall adalah proporsi contoh kelas tertentu yang diprediksi oleh model sebagai milik kelas itu.
Gambar oleh Penulis dari sklearn.metrics impor recall_score
recall_score(y_test, y_pred) Output:
0.9752066115702479
True Positive Rate (TPR), Spesifisitas: Ini adalah probabilitas seseorang yang dites negatif yang tidak memiliki penyakit.
Gambar oleh Penulis
False Positive Rate (FPR), fall-out: Ini adalah probabilitas seseorang yang dites positif yang tidak memiliki penyakit.
Gambar oleh Penulis
Tingkat Negatif Palsu (FNR), tingkat kesalahan: Ini adalah probabilitas seseorang yang dites negatif yang memang memiliki penyakit.
Gambar oleh Penulis TNR = TN/(TN+FP)
print(“Kekhususan: “, TNR)
FPR = FP/(TN+FP)
print(“FPR: “, FPR)
FNR = FN/(TP+FN)
print(“FNR: “, FNR) Keluaran:
Spesifisitas: 0.9752066115702479
FPR: 0,024793388429752067
FNR: 0,05970149253731343
Nilai Prediktif Positif (PPV), Presisi: Ini adalah probabilitas seseorang memiliki penyakit yang dites positif. Dengan kata lain, Precision adalah proporsi prediksi yang benar di antara semua prediksi.
Gambar oleh Penulis dari sklearn.metrics mengimpor precision_score
presisi_score(y_test, y_pred) Output:
0,9672131147540983
Nilai Prediktif Negatif (NPV): Ini adalah probabilitas seseorang tidak memiliki penyakit yang diuji negatif.
Gambar oleh Penulis
Rasio kemungkinan positif (LR+):
Gambar oleh Penulis
Rasio kemungkinan negatif (LR-):
Gambar oleh Penulis TNR = TP/(TP+FN)
NPV = TN/(TN+FN)
print(“NPV: “,NPV)
LRp = TPR/FPR
print(“LR+: “, LRp)
LRn = FNR/TNR
print(“LR-:”, LRn) Keluaran:
NPV: 0,9672131147540983
LR+: 37.92537313432836
LR-: 0,06349206349206349
Akurasi: Akurasi adalah proporsi contoh yang diklasifikasikan dengan benar. Untuk lebih tepatnya, Ini adalah rasio prediksi yang benar atas jumlah total kasus.
Gambar oleh Penulis dari sklearn.metrics mengimpor akurasi_score
akurasi_score(y_test, y_pred) Output:
0,9627659574468085
Akurasi Seimbang: Ini adalah rata-rata aritmatika TPR dan TNR. Akurasi Seimbang menemukan penggunaannya di mana ada ketidakseimbangan data.
Gambar oleh Penulis dari sklearn.metrics impor balanced_accuracy_score
balanced_accuracy_score(y_test, y_pred) Output:
0.9577525595164673
Skor F1: Ini adalah rata-rata harmonik dari presisi dan ingatan, jadi ini adalah ukuran keseluruhan dari kualitas prediksi pengklasifikasi. Biasanya metrik pilihan bagi kebanyakan orang karena menangkap presisi dan daya ingat. Ia menemukan jalannya selama Data Imbalance.
Gambar oleh Penulis dari sklearn.metrics impor f1_score
f1_score(y_test, y_pred) Keluaran:
0.9711934156378601
Apa perbedaan antara F1 dan Akurasi Seimbang?
F1 tidak mempertimbangkan True Negative untuk mengevaluasi model, sedangkan Balanced Accuracy mempertimbangkan keempat TP, TN, FP, dan FN.
F1 adalah metrik komposit di mana presisi dan recall dipertimbangkan Ada metrik komposit lain seperti kurva presisi-recall dan ROC, dan AUC, yang penting untuk menilai model klasifikasi apa pun. Untuk membaca lebih lanjut tentang kurva ini, silakan kunjungi Precision-Recall dan ROC Curve.
Kode di bawah ini mirip dengan laporan klasifikasi sklearn, melainkan akan memberikan semua metrik dari matriks kebingungan untuk klasifikasi biner.
https://medium.com/media/3927f5262ad3055b2ce9c8e909b10881/href
laporan = binary_classification_report(y_test, y_pred)
laporan Keluaran:
{‘TP’: 118,
‘TN’: 63,
‘FP’: 4,
‘FN’: 3,
‘TPR’: 0.9752066115702479,
‘Ingat’: 0.9752066115702479,
‘Sensitivitas’: 0.9752066115702479,
‘TNR’: 0.9402985074626866,
‘Kekhususan’: 0.9402985074626866,
‘FPR’: 0,05970149253731343,
‘FNR’: 0,024793388429752067,
‘PPV’: 0,9672131147540983,
‘Presisi’: 0,9672131147540983,
‘Akurasi’: 0.9627659574468085,
‘Akurasi Berimbang’: 0.9577525595164673,
‘Skor F1’: 0.9711934156378601}
Catatan: semua kode di atas yang disebutkan di blog adalah untuk klasifikasi biner,
Di blog ini, kami memahami matriks kebingungan untuk klasifikasi biner. Namun, jika Anda tertarik dengan multikelas, silakan merujuk ke Evaluasi Model Multi-kelas dengan Matriks Kebingungan dan Laporan Klasifikasi dan jika Anda bertanya-tanya tentang “dari . import confusion_matrix”, silakan merujuk ke Pengantar Matriks Kebingungan untuk metode Python.
Referensi:
[1] API metrik sklearn. https://scikit-learn.org/stable/modules/classes.html#module-sklearn.metrics
Menyelam jauh ke dalam Confusion Matrix awalnya diterbitkan di Towards AI on Medium, di mana orang-orang melanjutkan percakapan dengan menyoroti dan menanggapi cerita ini.
Diterbitkan melalui Menuju AI