Monday, November 11, 2019

buku belajar machine learning dengan matlab-Deteksi Jenis Kanker Payudara dengan Jaringan Syaraf Tiruan


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)
  1. Clump Thickness: 1 - 10
  2. Uniformity of Cell Size: 1 - 10
  3. Uniformity of Cell Shape: 1 - 10
  4. Marginal Adhesion: 1 - 10
  5. Single Epithelial Cell Size: 1 - 10
  6. Bare Nuclei: 1 - 10
  7. Bland Chromatin: 1 - 10
  8. Normal Nucleoli: 1 - 10
  9. Mitoses: 1 – 10
Dengan 2 kelas yaitu
  1. nilai 2 for benign
  2. 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
  1. wh : bobot input ke hidden
  2. bh :  bias input ke hidden
  3. wout : bobot hidden ke output
  4. bout : bias hidden ke output
  5. node_hidden : jumlah node pada hidden
Kode diatas menggunakan bahasa pemrograman Matlab, kalau kalian tertarik kirim saja email untuk meminta source codenya.

No comments:

Post a Comment