Seiring dengan meningkatnya traffic dan kemudahan dalam mengelola content, kami mengucapkan banyak terima kasih kepada para pembaca setia pada blog www.softscients.web.id
Per 19 Maret 2020, kami sedang melakukan migrasi ke domain dan hosting yang lebih baik yaitu
Semoga dengan alamat domain dan hosting terbaru akan semakin memudahkan para pembaca dalam mencari materi/content. Migrasi dilakukan secara bertahap yang membutuhkan waktu yang cukup lama jadi jangan kuatir selama migrasi akan dilakukan secara hati-hati untuk memimalkan broken link
kalian bisa lanjut baca lagi di http://softscients.com/2020/03/26/buku-belajar-machine-learning-dengan-matlab-deteksi-jenis-kanker-payudara-dengan-jaringan-syaraf-tiruan/
Sinopsis
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
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 berikutNormalisasi 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
No comments:
Post a Comment