Belajar R – Menghitung Confussion Matrix

By | July 30, 2024
3,475 Views

Confussion matrix digunakan untuk mengukur kinerja algoritma binary klasifikasi atau dengan kata lain untuk target 2 kelas saja. Gambar dibawah ini merupakan confusion matrix dengan 4 kombinasi nilai prediksi dan nilai aktual yang berbeda.

Maksud dari istilah Tp, FP, FN, dan TN, misalkan pada kasus sederhana untuk memprediksi seorang pasien menderita penyakit diabetes atau tidak (hanya ada 2 pilihan saja, ya dan tidak)

  1. True Positive (TP): Merupakan data positif yang diprediksi benar. Contohnya, pasien menderita diabetes (class 1) dan model membuat prediksi bahwa pasien tersebut menderita diabetes (class 1).
  2. True Negative (TN): Merupakan data negatif yang diprediksi benar. Contohnya, pasien tidak menderita diabetes (class 2) dan model membuat prediksi bahwa pasien tersebut tidak menderita diabetes (class 2).
  3. False Postive (FP) — Type I Error: Merupakan data negatif namun diprediksi sebagai data positif. Contohnya, pasien tidak menderita diabetes (class 2) tetapi model memprediksi pasien tersebut menderita diabetes (class 1).
  4. False Negative (FN) — Type II Error: Merupakan data positif namun diprediksi sebagai data negatif. Contohnya, pasien menderita diabetes (class 1) tetapi model memprediksi pasien tersebut tidak menderita diabetes (class 2).

Sebagai contoh, sebuah model akan dilatih untuk memprediksi mengenai kondisi pasien sedang menderita diabetes atau tidak. Jika terdapat 20 pasien dengan 9 pasien positif diabetes dan 11 pasien negatif diabetes, maka contoh confusion matrix yang dihasilkan model seperti dibawah ini :

Untuk membaca tabel diatas yaitu

  1. dari 9 pasien positif diabetes, model memprediksi ada 3 pasien yang diprediksi negatif diabetes (FN), dan
  2. dari 11 pasien negatif diabetes, model memprediksi ada 2 pasien yang diprediksi positif diabetes (FP). Prediksi yang benar terletak pada tabel diagonal (garis bawah merah),

sehingga secara visual sangat mudah untuk melihat kesalahan prediksi karena kesalahan prediksi berada di luar tabel diagonal confusion matrix.

Accuracy

Accuracy menggambarkan seberapa akurat model dapat mengklasifikasikan dengan benar. Maka, accuracy merupakan rasio prediksi benar (positif dan negatif) dengan keseluruhan data. Dengan kata lain, accuracy merupakan tingkat kedekatan nilai prediksi dengan nilai aktual (sebenarnya), rumusnya yaitu

    \[accuracy = \frac{TP+TN}{TP+TN+FP+FN}\]

Precision (Positive Predictive Value)

Precision menggambarkan tingkat keakuratan antara data yang diminta dengan hasil prediksi yang diberikan oleh model. Maka, precision merupakan rasio prediksi benar positif dibandingkan dengan keseluruhan hasil yang diprediksi positf. Dari semua kelas positif yang telah di prediksi dengan benar, berapa banyak data yang benar-benar positif, rumusnya yaitu

    \[precision = \frac{TP}{TP+FP}\]

Recall atau Sensitivity (True Positive Rate)

Recall menggambarkan keberhasilan model dalam menemukan kembali sebuah informasi. Maka, recall merupakan rasio prediksi benar positif dibandingkan dengan keseluruhan data yang benar positif, rumusnya yaitu

    \[recall = \frac{TP}{TP+FN}\]

Menghitung Confussion Matrix di R

Salah satu package untuk mempermudah perhitungan confussion matrix di R yaitu package caret. Kalian harus install terlebih dahulu menggunakan perintah  install.packages('caret')  lebih jelasnya disini untuk melakukan install package di R. Misalkan kita punya dataset dengan 10 records yaitu yang disimpan dalam format excel

   no target prediksi
1   1      1        1
2   2      1        1
3   3      1        0
4   4      0        0
5   5      1        0
6   6      0        0
7   7      0        0
8   8      1        1
9   9      1        0
10 10      1        0

Sesuai dengan data diatas, maka hasil untuk confussion matrix yaitu

Confusion Matrix and Statistics

          Reference
Prediction 0 1
         0 3 4
         1 0 3
                                          
               Accuracy : 0.6             
                 95% CI : (0.2624, 0.8784)
    No Information Rate : 0.7             
    P-Value [Acc > NIR] : 0.8497          
                                          
                  Kappa : 0.3103          
                                          
 Mcnemar's Test P-Value : 0.1336          
                                          
            Sensitivity : 1.0000          
            Specificity : 0.4286          
         Pos Pred Value : 0.4286          
         Neg Pred Value : 1.0000          
             Prevalence : 0.3000          
         Detection Rate : 0.3000          
   Detection Prevalence : 0.7000          
      Balanced Accuracy : 0.7143          
                                          
       'Positive' Class : 0 

Kode yang digunakan secara lengkap yaitu

library(openxlsx)
library(caret)

hasil = read.xlsx('data.xlsx')

CM = confusionMatrix(factor(hasil$prediksi),factor(hasil$target))
CM

ref:

https://en.wikipedia.org/wiki/Confusion_matrix