ROC dan AUC untuk Evaluasi Model – Menuju AI

ROC dan AUC untuk Evaluasi Model – Menuju 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

Gambar oleh Penulis

ROC atau Kurva Karakteristik Operasi Penerima adalah alat yang paling sering digunakan untuk mengevaluasi model klasifikasi biner atau multi-kelas. Tidak seperti metrik lainnya, ini dihitung berdasarkan skor prediksi seperti Precision-Recall Curve, bukan kelas prediksi. Dalam posting saya sebelumnya, pentingnya kurva presisi-recall disorot sebagai cara memplot untuk klasifikasi multi-kelas.

Untuk memahami Kurva ROC, mari kita cepat menyegarkan ingatan kita tentang kemungkinan hasil dalam masalah klasifikasi biner dengan mengacu pada Matriks Kebingungan.

Matriks Kebingungan | Gambar oleh Penulis

Kurva ROC adalah plot True Positive Rate (TPR) yang diplot terhadap False Positive Rate (FPR) pada berbagai nilai ambang batas. Ini membantu untuk memvisualisasikan bagaimana ambang batas mempengaruhi kinerja pengklasifikasi.

True Positive Rate (TPR) mengacu pada proporsi contoh kelas tertentu yang telah diprediksi oleh model sebagai milik kelas tersebut. Hal ini juga disebut sebagai Recall atau Sensitivitas.

Gambar oleh Penulis

dimana TP dan FN berturut-turut adalah True Positive dan False Negative.

False Positive Rate (FPR): Ini adalah probabilitas seseorang yang dites positif yang tidak memiliki penyakit. Ini juga disebut sebagai tingkat kejatuhan.

Gambar oleh Penulis

di mana FP adalah jumlah Positif Palsu dan TN adalah jumlah Negatif Benar.

Gambar oleh Penulis

Kurva ROC juga dapat didefinisikan sebagai plot Sensitivitas vs. 1-Kekhususan.

Kurva ROC | Gambar oleh Penulis

Mari kita lihat Kurva ROC untuk klasifikasi biner.

dari sklearn.datasets impor make_classification
dari sklearn.model_selection impor train_test_split
dari sklearn.linear_model impor LogisticRegression
dari sklearn.metrics impor roc_curve
dari sklearn.metrics impor RocCurveDisplay
X, y = make_classification(n_samples=500, 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]
fpr, tpr, ambang batas = roc_curve(y_test, y_pred_prob)
plt = RocCurveDisplay(fpr=fpr, tpr=tpr)
plt.plot()
Kurva ROC | Gambar oleh Penulis

Skor AUC

AUC Singkatan dari ‘Area di bawah kurva,’ dan dihitung dengan aturan trapesium perhitungan area di bawah plot apa pun. Ini merangkum Kurva ROC menjadi metrik tunggal untuk klasifikasi biner dan setiap kelas dalam model multi-kelas. Namun, untuk meringkas multi-kelas menjadi satu metrik mikro, makro, dan AUC tertimbang dapat digunakan.

Semakin tinggi AUC, semakin baik pengklasifikasinya. Nilainya berfluktuasi antara 0 (model terburuk) dan 1 (model ideal).

ROC AUC | Gambar oleh Penulis dari sklearn.metrics import roc_auc_score
auc = roc_auc_score(y_test, y_pred_prob)
cetak(auc) Keluaran:
0.9727017262143718

Mari kita lihat bagaimana memplot Kurva ROC dan menghitung Skor AUC pada dataset klasifikasi acak menggunakan perpustakaan sklearn.

plt = RocCurveDisplay(fpr=fpr, tpr=tpr, roc_auc=auc)
plt.plot()
Kurva ROC dengan AUC | Gambar oleh Penulis

Mengapa Kurva ROC?

ROC dihitung berdasarkan skor presisi, sementara banyak metrik seperti akurasi dan presisi melihat kelas prediksi. Ini adalah trade-off antara Sensitivitas (TPR) dan 1-Specificity (FPR), memungkinkan seseorang untuk memilih ambang batas yang menjaga keseimbangan antara TPR dan FPR, yang sesuai dengan masalah tertentu.

Plotting ROC Curve adalah cakewalk untuk masalah biner. Namun, itu menakutkan para profesional untuk menghitung klasifikasi multi-kelas. Di bawah ini adalah metode untuk memplot ROC dan AUC untuk multi-kelas.

Di bawah ini adalah kode python untuk membuat dan memplot ROC dan AUC untuk masalah klasifikasi multi-kelas.

https://medium.com/media/90775345066e0ada14362f17b686d5c4/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=500, n_classes=3,
random_state=1, n_informative=3)
y = label_binarize(y, class=[0,1,2])
X_train, X_test, y_train, y_test = train_test_split(X, y,
ukuran_tes=.5,
random_state=1)
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)
fpr, tpr, ambang batas, auc, label = roc_auc_curve(y_test,
y_pred_prob,
label=[0,1,2])
roc_auc_curve_plot(fpr, tpr, ambang, auc, label)
Kurva ROC untuk multi-kelas | Gambar oleh Penulis

Referensi:

[1] Kurva ROC. https://scikit-learn.org/stable/modules/generated/sklearn.metrics.roc_curve.html

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

[3] Kurva Presisi-Recall. https://pub.towardsai.net/precision-recall-curve-26f9e7984add

ROC dan AUC untuk Evaluasi Model awalnya diterbitkan di Towards AI on Medium, di mana orang-orang melanjutkan percakapan dengan menyoroti dan menanggapi cerita ini.

Diterbitkan melalui Menuju AI

Author: Scott Anderson