Menghitung Confussion Matrix
Confussion Matrix merupakan salah satu cara untuk mengukur kinerja algoritma klasifikasi yang lebih detail. Pada kasus klasifikasi dengan target hanya terdiri dari 2 kelas saja {-1,+1} dengan evaluasi dilakukan menggunakan Confusion Matrix berisi informasi tentang kondisi yang sebenarnya dan prediksi kondisi dalam sistem klasifikasi. Tabel confusion matrix untuk data dengan jumlah 2 kelas prediksi (Negatif dan Positif).
Keterangan :
A = jumlah kondisi negatif yang terprediksi benar (Negatif) True Negatif
B = jumlah kondisi negatif yang terprediksi salah (Positif) False Negatif
C = jumlah kondisi positif yang terprediksi salah (Negatif) False Positif
D = jumlah kondisi positif yang terprediksi benar (Positif) True Positive
Kalau kalian ingin tahu apa itu True Negatif (TN); False Negatif (FN) bisa kunjungi ref: https://www.softscients.web.id/2018/01/compute-confusion-matrix.html. Pengujian dalam penelitian perlu dilakukan evaluasi dengan menggunakan pengukuran 4 komponen yaitu akurasi, spesifikasitas, presisi dan sensitivitas
Akurasi
Akurasi merupakan presentas dari prediksi yang benar ( positif dan negatif ) berdasarkan kondisi yang ada atau keseluruhan data.
Sensifitas
Sensitivitas (Recall/True positive rate) berguna untuk mengukur proporsi atau rasio prediksi benar positif dibandingkan dengan keseluruhan data yang benar positif.
Spesifitas
Spesifitas (True negative rate) merupakan kebalikan dari sensitivitas yaitu untuk mengukur proporsi atau rasio dari kebenaran memprediksi negatif dibandingkan dengan keseluruhan data negatif.
Presisi
Presisi adalah menghitung proporsi atau rasio prediksi benar positif dibandingkan dengan keseluruhan hasil yang diprediksi positif.
Berikut contoh perhitungannya.
clc;clear all;close all; target = [1;1;-1;-1;-1;1;1] prediksi = [1,-1,1,-1,1,1,1] [akurasi,sensifitas,spesifitas,presisi] = hitungakurasi(target,prediksi) function [akurasi,sensifitas,spesifitas,presisi]=hitungakurasi(t,p) t = t(:); p = p(:); data = [t,p]; true_positif = [1,1]; true_negatif = [-1,-1]; false_positif = [1,-1]; false_negatif = [-1,1]; %jumlah kondisi negatif yang terprediksi benar a = (data==true_negatif); a = sum(a(:,1).*a(:,2)); %jumlah kondisi negatif yang terprediksi salah b = (data==false_negatif); b = sum(b(:,1).*b(:,2)); %jumlah kondisi positif yang terprediksi salah c = (data==false_positif); c = sum(c(:,1).*c(:,2)); %jumlah kondisi positif yang terprediksi benar d = (data==true_positif); d = sum(d(:,1).*d(:,2)); akurasi = (a+d)/(a+b+c+d); sensifitas = d /(c+d); spesifitas = a /(a+b); presisi = d /(b+d); end
hasil
target = 1 1 -1 -1 -1 1 1 prediksi = 1 -1 1 -1 1 1 1 akurasi = 0.5714 sensifitas = 0.7500 spesifitas = 0.3333 presisi = 0.6000