Sinopsis
Contents
Setelah kalian membaca buku belajar machine learning / jaringan syaraf tiruan menggunakan Matlab, tentu ingin sekali mempraktekan algoritma tersebut kedalam dataset yang real/sungguhan. Pembahasan ini untuk menentukan jenis kanker payudara dengan 9 jenis parameter yang mempunyai rentang nilai 1 sampai dengan 10
https://archive.ics.uci.edu/ml/datasets/Breast+Cancer+Wisconsin+(Original)
- Clump Thickness: 1 – 10
- Uniformity of Cell Size: 1 – 10
- Uniformity of Cell Shape: 1 – 10
- Marginal Adhesion: 1 – 10
- Single Epithelial Cell Size: 1 – 10
- Bare Nuclei: 1 – 10
- Bland Chromatin: 1 – 10
- Normal Nucleoli: 1 – 10
- Mitoses: 1 – 10
Dengan 2 kelas yaitu
- nilai 2 for benign
- nilai 4 for malignant
Kalian bisa mempelajari terlebih dahulu buku belajar machine learning / jaringan syaraf tiruan menggunakan Matlab agar lebih paham, karena tulisan ini hanya menampilkan hasil saja. Tidak dibahas cara loading data dan banyak lainnya untuk mencegah pembahasan yang berulang-ulang. Tapi kalau kalian ingin tahu cara kerjanya/code nya bisa kirim email kesini
Dataset Kanker Payudara
Arsitektur Jaringan
Adapun untuk arsitektur yang digunakan seperti berikut
Normalisasi Dataset
Langkah selanjutnya berupa desain dataset yaitu menggunakan fungsi training berupa logsig dengan batasan nilai 0 sampai dengan 1, sehingga dataset diatas perlu dilakukan normalisasi dari skala 1 sampai dengan 10 menjadi 0 sampai dengan 1, sedangkan kelas terdiri dari 0 dan 1. Rumus untuk normalisasi yaitu
menjadi
Hasil Pelatihan
Maka dengan rumus confusion matrix berikut
http://www.softscients.web.id/2019/10/cara-menghitung-confussion-matrix.html
Kode Lengkapnya yaitu
clc;clear all;close all; %baca dataset dataset = readtable('dataset utama.csv'); disp(dataset) data = dataset.Variables; %ambil paramater input P = data(:,1:end-1); %ambil paramater target/kelas T = data(:,end); %lakukan normalisasi P_norm = (P-1)/9; T_norm = T; T_norm(T_norm==2)=0; T_norm(T_norm==4)=1; data_norm = [P_norm,T_norm]; disp(array2table(data_norm,'VariableNames',dataset.Properties.VariableNames)); epoch = 10000; lr = 0.25; node_hidden = 20; jaringan = latihjaringan(P_norm,T_norm,epoch, node_hidden,lr); prediksi = round(simulasijaringan(jaringan,P_norm)); disp('hasil akhir:') disp(table(T_norm,prediksi)); figure plot(jaringan.error) xlabel('epoch','fontsize',16) ylabel('error','fontsize',16),grid on title('Error Per Epoch','FontSize',16) set(legend(['Last error: ' num2str(jaringan.error(end))]),'FontSize',16) [akurasi,sensifitas,spesifitas,presisi] = hitungakurasi(T_norm,prediksi) function [akurasi,sensifitas,spesifitas,presisi]=hitungakurasi(t,p) t(t==0)=-1; t(t==1)=+1; 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
akurasi = 0.9755 sensifitas = 1 spesifitas = 0 presisi = 0.9755
Dengan hasil yang cukup baik, maka model diatas dapat disimpan dengan properties berikut
>> jaringan jaringan = struct with fields: wh: [9×20 double] bh: [1×20 double] wout: [20×1 double] bout: 18.7103 error: [1×10000 double] node_hidden: 20
Keterangan Model
- wh : bobot input ke hidden
- bh : bias input ke hidden
- wout : bobot hidden ke output
- bout : bias hidden ke output
- node_hidden : jumlah node pada hidden
Kode diatas menggunakan bahasa pemrograman Matlab, berikut hasil tampilkan aplikasi berbasis GUI