Pembelajaran Mesin - Metrik Performa

Ada berbagai metrik yang dapat kita gunakan untuk mengevaluasi kinerja algoritma ML, klasifikasi, serta algoritma regresi. Kita harus hati-hati memilih metrik untuk mengevaluasi kinerja ML karena -

  • Bagaimana performa algoritme ML diukur dan dibandingkan akan bergantung sepenuhnya pada metrik yang Anda pilih.

  • Bagaimana Anda menimbang pentingnya berbagai karakteristik dalam hasil akan sepenuhnya dipengaruhi oleh metrik yang Anda pilih.

Metrik Kinerja untuk Masalah Klasifikasi

Kita telah membahas klasifikasi dan algoritmanya di bab-bab sebelumnya. Di sini, kita akan membahas berbagai metrik kinerja yang dapat digunakan untuk mengevaluasi prediksi untuk masalah klasifikasi.

Confusion Matrix

Ini adalah cara termudah untuk mengukur kinerja masalah klasifikasi di mana keluarannya bisa dari dua atau lebih jenis kelas. Matriks konfusi hanyalah tabel dengan dua dimensi yaitu. "Aktual" dan "Prediksi" dan selanjutnya, kedua dimensi tersebut memiliki "Positif Benar (PB)", "Negatif Benar (TN)", "Positif Palsu (PP)", "Negatif Palsu (FN)" seperti yang ditunjukkan di bawah ini -

Penjelasan istilah-istilah yang terkait dengan matriks kebingungan adalah sebagai berikut -

  • True Positives (TP) - Ini adalah kasus ketika kelas aktual & kelas prediksi titik data adalah 1.

  • True Negatives (TN) - Ini adalah kasus ketika kelas aktual & kelas prediksi titik data adalah 0.

  • False Positives (FP) - Ini adalah kasus ketika kelas titik data aktual adalah 0 & kelas titik data yang diprediksi adalah 1.

  • False Negatives (FN) - Ini adalah kasus ketika kelas titik data aktual adalah 1 & kelas titik data yang diprediksi adalah 0.

Kita dapat menggunakan fungsi confusion_matrix dari sklearn.metrics untuk menghitung Confusion Matrix dari model klasifikasi kita.

Akurasi Klasifikasi

Ini adalah metrik kinerja yang paling umum untuk algoritme klasifikasi. Ini dapat didefinisikan sebagai jumlah prediksi yang benar yang dibuat sebagai rasio dari semua prediksi yang dibuat. Kita dapat dengan mudah menghitungnya dengan matriks kebingungan dengan bantuan rumus berikut -

$$ Akurasi = \ frac {TP + TN} {+++} $$

Kita dapat menggunakan fungsi akurasi_score dari sklearn.metrics untuk menghitung akurasi model klasifikasi kita.

Laporan Klasifikasi

Laporan ini terdiri dari skor Precisions, Recall, F1, dan Support. Mereka dijelaskan sebagai berikut -

Presisi

Presisi, yang digunakan dalam pengambilan dokumen, dapat didefinisikan sebagai jumlah dokumen benar yang dikembalikan oleh model ML kita. Kita dapat dengan mudah menghitungnya dengan matriks kebingungan dengan bantuan rumus berikut -

$$ Presisi = \ frac {TP} {TP + FP} $$

Ingat atau Sensitivitas

Perolehan dapat didefinisikan sebagai jumlah positif yang dikembalikan oleh model ML kami. Kita dapat dengan mudah menghitungnya dengan matriks kebingungan dengan bantuan rumus berikut -

$$ Perolehan = \ frac {TP} {TP + FN} $$

Kekhususan

Kekhususan, berbeda dengan perolehan, dapat didefinisikan sebagai jumlah negatif yang dikembalikan oleh model ML kita. Kita dapat dengan mudah menghitungnya dengan matriks kebingungan dengan bantuan rumus berikut -

$$ Kekhususan = \ frac {TN} {TN + FP} $$

Dukung

Dukungan dapat diartikan sebagai jumlah sampel dari respon sebenarnya yang terletak di setiap kelas dari nilai target.

Skor F1

Skor ini akan memberi kita rata-rata presisi dan perolehan yang harmonis. Secara matematis, skor F1 adalah rata-rata tertimbang dari presisi dan recall. Nilai F1 terbaik adalah 1 dan terburuk adalah 0. Kita dapat menghitung skor F1 dengan bantuan rumus berikut -

= ∗ (∗) / (+)

Skor F1 memiliki kontribusi relatif yang sama antara presisi dan recall.

Kita bisa menggunakan fungsi klasifikasi_report dari sklearn.metrics untuk mendapatkan laporan klasifikasi dari model klasifikasi kita.

ABK (Area di Bawah kurva KOP)

AUC (Area Under Curve) -ROC (Receiver Operating Characteristic) adalah metrik kinerja, berdasarkan nilai ambang batas yang bervariasi, untuk masalah klasifikasi. Seperti namanya, ROC adalah kurva probabilitas dan AUC mengukur keterpisahan. Dengan kata sederhana, metrik AUC-ROC akan memberi tahu kita tentang kemampuan model dalam membedakan kelas. Semakin tinggi AUC, semakin baik modelnya.

Secara matematis dapat dibuat dengan memplot TPR (True Positive Rate) yaitu Sensitivitas atau recall vs FPR (False Positive Rate) yaitu 1-Specificity, pada berbagai nilai ambang batas. Berikut adalah grafik yang menunjukkan ROC, ABK yang memiliki TPR pada sumbu y dan FPR pada sumbu x -

Kita dapat menggunakan fungsi roc_auc_score dari sklearn.metrics untuk menghitung AUC-ROC.

LOGLOSS (Kerugian Logaritmik)

Ini juga disebut kerugian regresi logistik atau kerugian lintas entropi. Ini pada dasarnya didefinisikan pada estimasi probabilitas dan mengukur kinerja model klasifikasi di mana inputnya adalah nilai probabilitas antara 0 dan 1. Hal ini dapat dipahami lebih jelas dengan membedakannya dengan akurasi. Seperti yang kita ketahui bahwa akurasi adalah hitungan prediksi (nilai prediksi = nilai aktual) dalam model kita sedangkan Log Loss adalah jumlah ketidakpastian prediksi kita berdasarkan seberapa besar variasinya dari label sebenarnya. Dengan bantuan nilai Log Loss, kita dapat melihat performa model kita dengan lebih akurat. Kita dapat menggunakan fungsi log_loss dari sklearn.metrics untuk menghitung Kerugian Log.

Contoh

Berikut ini adalah resep sederhana dengan Python yang akan memberi kita wawasan tentang bagaimana kita dapat menggunakan metrik kinerja yang dijelaskan di atas pada model klasifikasi biner -

from sklearn.metrics import confusion_matrix
from sklearn.metrics import accuracy_score
from sklearn.metrics import classification_report
from sklearn.metrics import roc_auc_score
from sklearn.metrics import log_loss
X_actual = [1, 1, 0, 1, 0, 0, 1, 0, 0, 0]
Y_predic = [1, 0, 1, 1, 1, 0, 1, 1, 0, 0]
results = confusion_matrix(X_actual, Y_predic)
print ('Confusion Matrix :')
print(results)
print ('Accuracy Score is',accuracy_score(X_actual, Y_predic))
print ('Classification Report : ')
print (classification_report(X_actual, Y_predic))
print('AUC-ROC:',roc_auc_score(X_actual, Y_predic))
print('LOGLOSS Value is',log_loss(X_actual, Y_predic))

Keluaran

Confusion Matrix :
[
   [3 3]
   [1 3]
]
Accuracy Score is 0.6
Classification Report :
            precision      recall      f1-score       support
      0       0.75          0.50      0.60           6
      1       0.50          0.75      0.60           4
micro avg     0.60          0.60      0.60           10
macro avg     0.62          0.62      0.60           10
weighted avg  0.65          0.60      0.60           10
AUC-ROC:  0.625
LOGLOSS Value is 13.815750437193334

Metrik Kinerja untuk Masalah Regresi

Kami telah membahas regresi dan algoritmanya di bab-bab sebelumnya. Di sini, kita akan membahas berbagai metrik kinerja yang dapat digunakan untuk mengevaluasi prediksi untuk masalah regresi.

Mean Absolute Error (MAE)

Ini adalah metrik kesalahan paling sederhana yang digunakan dalam masalah regresi. Ini pada dasarnya adalah jumlah rata-rata perbedaan absolut antara nilai prediksi dan nilai aktual. Dengan kata sederhana, dengan MAE, kita bisa mendapatkan gambaran tentang seberapa salah prediksi itu. MAE tidak menunjukkan arah model, yaitu tidak ada indikasi tentang kinerja yang buruk atau kinerja berlebih dari model. Berikut rumus menghitung MAE -

$$ MAE = \ frac {1} {n} \ sum | Y - \ hat {Y} | $$

Di sini, = Nilai Output Aktual

Dan $ \ hat {Y} $ = Nilai Output yang Diprediksi.

Kita bisa menggunakan fungsi mean_absolute_error dari sklearn.metrics untuk menghitung MAE.

Mean Square Error (MSE)

MSE seperti MAE, tetapi satu-satunya perbedaan adalah bahwa MSE mengkuadratkan perbedaan nilai output aktual dan yang diprediksi sebelum menjumlahkan semuanya alih-alih menggunakan nilai absolut. Perbedaannya dapat dilihat pada persamaan berikut -

$$ MSE = \ frac {1} {n} \ sum (Y - \ hat {Y}) $$

Di sini, = Nilai Output Aktual

Dan $ \ hat {Y} $ = Nilai Output yang Diprediksi.

Kita dapat menggunakan fungsi mean_squared_error dari sklearn.metrics untuk menghitung MSE.

R Kuadrat (R 2 )

R Squared metric umumnya digunakan untuk tujuan penjelasan dan memberikan indikasi tentang kebaikan atau kesesuaian sekumpulan nilai keluaran yang diprediksi dengan nilai keluaran yang sebenarnya. Rumus berikut akan membantu kita memahaminya -

$$ R ^ {2} = 1 - \ frac {\ frac {1} {n} \ sum_ {i {= 1}} ^ n (Y_ {i} - \ hat {Y_ {i}}) ^ 2} {\ frac {1} {n} \ sum_ {i {= 1}} ^ n (Y_ {i} - \ bar {Y_i) ^ 2}} $$

Dalam persamaan di atas, pembilangnya adalah MSE dan penyebutnya adalah varian nilai.

Kita dapat menggunakan fungsi r2_score dari sklearn.metrics untuk menghitung nilai R kuadrat.

Contoh

Berikut ini adalah resep sederhana dengan Python yang akan memberi kita wawasan tentang bagaimana kita dapat menggunakan metrik kinerja yang dijelaskan di atas pada model regresi -

from sklearn.metrics import r2_score
from sklearn.metrics import mean_absolute_error
from sklearn.metrics import mean_squared_error
X_actual = [5, -1, 2, 10]
Y_predic = [3.5, -0.9, 2, 9.9]
print ('R Squared =',r2_score(X_actual, Y_predic))
print ('MAE =',mean_absolute_error(X_actual, Y_predic))
print ('MSE =',mean_squared_error(X_actual, Y_predic))

Keluaran

R Squared = 0.9656060606060606
MAE = 0.42499999999999993
MSE = 0.5674999999999999