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





