Sinopsis
Contents
Pembahasan machine learning dimulai dari dasar-dasar nya dulu secara bertahap agar kalian paham dan tidak pusing. Sejarah machine learning ketika diperkenalkannya algoritma perceptron. Algoritma ini cikal bakal mengenai soft computing dalam menangani masalah dalam dunia real yang begitu kompleks variabelnya serta banyak mengandung data bersifat nonlinear.
Secara umum pembahasan perceptron yaitu model persamaan umum, kasus klasifikasi binary yaitu dengan target terdiri dari 2 kelas saja, dilanjutkan dengan target multi kelas, dan yang terakhir non linear menggunakan multi layer perceptron yang merupakan cikal bakal dari feed forward backpropagation dan berkembang sampai tingkat lanjut menjadi deep learning. Tapi secara garis besar machine learning sesuai dengan alih bahasanya yaitu mesin yang belajar sehingga akan banyak melibatkan dataset yang berisi input dan target dengan komputer tersebut menyimpan kecerdasannya yang disimpan dalam sebuah istilah bobot dan bias.
Dalam kasus yang begitu kompleks bahkan diperlukan ribuan/jutaan kali iterasi serta berjam-jam/berhari-hari sesi pelatihan sehingga dibutuhkan RAM yang sangat besar sekali loading dataset. Kemampuan umum machine learning ditandai dengan sifat generalnya yang mampu secara soft mengambil sebuah keputusan secara luwes dalam menghadapi beragam data multidimensi dan non linear seperti layaknya otak manusia yang memproses data dalam banyak multi dimensi. Misalkan saja mata manusia menerima data kontinyu (sedangkan komputer bersifat diskrit) terdiri dari warna, jarak, dan kedalaman. Ketika mata manusia sedang melihat objek mobil terdiri bentuk, jarak, kedalaman, ukurannya diteruskan kedalam otak. Maka otak akan merespond sesuai dengan ingatan dan apa-apa yang telah dipelajari sebelumnya. Tentu kalau otak/manusia tersebut belum pernah melihat mobil akan bingung, berbeda dengan manusia yang sudah terlatih, bahkan dengan melihat sekilas mampu menebak jenis dan merk nya sekaligus!
Machine Learning pun bekerja sesuai dengan algoritma tersebut yaitu training dengan melibatkan jutaan/ribuan dataset yang telah dikuantisasi menjadi bilangan diskrit sesuai dengan cara kerja komputer/mesin/robot. Ribuah dataset tersebut akan ditransformasikan melalui persamaan matematika melibatkan banyak transfer learning menghasilkan memory kecerdasan buatan berupa bobot dan bias.
Ok, semoga kalian paham cara kerja machine learning sekilas diatas. Sekarang kita bahas model perceptron yang merupakan model sederhana jaringan syarat tiruan yang pertama kali dikenalkan. Perceptron menggunakan pemisah bertipe linear. Secara umum modelnya adalah
clc;clear all;close all; data = readtable('data.xlsx')
hasil
data = 13×3 table x1 x2 kelas __ __ _____ 4 6 0 7 8 0 3 5 0 5 9 0 3 9 0 6 8 0 12 18 1 18 17 1 19 20 1 20 24 1 21 23 1 13 14 1 15 18 1
Tugas kalian adalah membuat garis pemisah antar 2 kelas tersebut, nah garis pemisah tersebut bersifat linear dengan persamaan umum yaitu yaitu persamaan garis lurus dalam sebuah grafik sumbu x dan sumbu y. Persamaan tersebut sebenarnya digunakan dalam membangun perceptron. Data diatas terdiri dari 2 kelas yaitu 0 dan 1, sehingga harus menggunakan fungsi aktifasi , dengan menggunakan persamaan perceptron , maka nilai dan yaitu
clc;clear all;close all; data=readtable('data2.xlsx') data_input = [data.x1,data.x2]; data_target = data.kelas; w = [3;6]; b = -119; aktifasi='hardlim'; x = data_input; prediksi = hardlim(x*w+b); array2table([data_target,prediksi],'VariableNames',{'Target','Prediksi'})
hasil
ans = 13×2 table Target Prediksi ______ ________ 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1
Atau kalian plotkan kedalam sebuah persamaan garis lurus untuk persamaan
Dengan menghilangkan membuat sehingga
Atau
Bila dan maka
Sehingga menjadi persamaan garis lurus yaitu
atau disederhanakan menjadi
kalian bisa memasukan angka dan kedalam persamaan diatas menjadi
disederhanakan lagi menjadi
Kalian bisa plot kan persamaan diatas dengan sebaran data, sehingga menjadi seperti kode berikut
clc;clear all;close all; data=readtable('data.xlsx') data_input = transpose([data.x1,data.x2]); data_target = transpose(data.kelas); figure plotpv(data_input,data_target); title('Sebaran Data') hold on x=1:25; y=-0.5.*x+(119/6); plot(x,y); xlabel('x1'),ylabel('x2');
Nah pasti kalian akan bertanya, bagaimana menghasilkan nilai bobot dan bias diatas?
Model Perceptron
Untuk membuat model Jaringan syaraf tiruan / NN bertipe percepton, kalian bisa menggunakan perintah dengan fungsi pelatihan dan pengujian/simulasi , oiya kalian juga harus tahu, ada juga penggunaan perceptron untuk versi Matlab yang lama yaitu function , yang sekarang sudah diganti dengan function dengan default yaitu transfer learning/fungsi aktifasi berjenis dan merupakan rule/aturan pelatihan perceptron yaitu . Kalian bisa ubah saja sendiri fungsi aktifasinya selain , karena dataset diatas mempunyai target 0 dan 1, maka harus menggunakan fungsi .
clc;clear all;close all; data=readtable('data.xlsx'); %diubah/transpose dulu data_input = transpose([data.x1,data.x2]); data_target = transpose(data.kelas); net = perceptron('hardlim','learnp')
hasil
net = Neural Network name: 'Perceptron' userdata: (your custom info) dimensions: numInputs: 1 numLayers: 1 numOutputs: 1 numInputDelays: 0 numLayerDelays: 0 numFeedbackDelays: 0 numWeightElements: 0 sampleTime: 1 connections: biasConnect: true inputConnect: true layerConnect: false outputConnect: true subobjects: input: Equivalent to inputs{1} output: Equivalent to outputs{1} inputs: {1x1 cell array of 1 input} layers: {1x1 cell array of 1 layer} outputs: {1x1 cell array of 1 output} biases: {1x1 cell array of 1 bias} inputWeights: {1x1 cell array of 1 weight} layerWeights: {1x1 cell array of 0 weights} functions: adaptFcn: 'adaptwb' adaptParam: (none) derivFcn: 'defaultderiv' divideFcn: 'dividetrain' divideParam: (none) divideMode: 'sample' initFcn: 'initlay' performFcn: 'mae' performParam: .regularization, .normalization plotFcns: {'plotperform', plottrainstate, plotconfusion} plotParams: {1x3 cell array of 3 params} trainFcn: 'trainc' trainParam: .showWindow, .showCommandLine, .show, .epochs, .time, .goal, .max_fail weight and bias values: IW: {1x1 cell} containing 1 input weight matrix LW: {1x1 cell} containing 0 layer weight matrices b: {1x1 cell} containing 1 bias vector methods: adapt: Learn while in continuous use configure: Configure inputs & outputs gensim: Generate Simulink model init: Initialize weights & biases perform: Calculate performance sim: Evaluate network outputs given inputs train: Train network with examples view: View diagram unconfigure: Unconfigure inputs & outputs >>
Kalian bisa atur beberapa paramater penting lainnya yaitu
net = configure(model,data_input,data_target); net.trainParam.epochs = 100; %maksimal iterasi net.trainParam.showWindow = true; %menampilkan grafik net.trainParam.goal = 0.01; %target grand total errornya
Kalau sudah oke, silahkan untuk sesi latihan / training
net = train(net,data_input,data_target);
Kalian bisa akses bobot dan biasnya setelah training perceptron yaitu
disp('bobot') net.IW{1} disp('bias') net.b{1}
hasil
bobot ans = 3 6 bias ans = -119
Kalian bisa cek hasil training perceptron dengan function seperti berikut
disp('Hasil target dan prediksi') prediksi = sim(net,data_input) data_target
hasil
Hasil target dan prediksi prediksi = 0 0 0 0 0 0 1 1 1 1 1 1 1 data_target = 0 0 0 0 0 0 1 1 1 1 1 1 1
Untuk menghitung error kalian bisa menggunakan ataupun confussion matrix. Nah, untuk menyimpan modelnya, kalian bisa baca-baca lagi cara menyimpan data di matlab. Secara real akan dijumpai dataset dengan target multi kelas, untuk hal tersebut kalian bisa pelajari dibawah ini, termasuk bila ketemu dengan dataset bersifat non linear.
Perceptron untuk target kelas lebih dari 2
Perceptron bisa digunakan untuk klasifikasi kelas yang terdiri dari 2 atau multikelas dengan cara modifikasi kelas target, Kalian perhatikan sebaran data berikut, kalau kalian perhatikan terdapat 4 kelompok
clc;clear all;close all; format compact prediksi =[1 1] target_a = [1 0] target_b = [0 1] target_c = [0 0] mse = @(a,b) sqrt(sum((a-b).^2)); disp('Perhitungan MSE') error_a = mse(prediksi,target_a) error_b = mse(prediksi,target_b) error_c = mse(prediksi,target_c)
hasil
prediksi = 1 1 target_a = 1 0 target_b = 0 1 target_c = 0 0 Perhitungan MSE error_a = 1 error_b = 1 error_c = 1.4142 >>
Coba kalian perhatikan hasil MSE untuk error_a dan error_b menghasilkan nilai yang sama! Oleh hal tersebut kalian harus menggunakan Model B, maka kalian bisa lihat 2 tabel berikut dengan tabel kiri (dataset awal) dan tabel kanan (dataset yang siap digunakan untuk sesi pelatihan)
Dataset sudah digunakan, kalian bisa simpan dalam excel dengan adalah input dan adalah target
Nilai bobot dan bias untuk kasus diatas telah didapatkan yaitu
Kode lengkap untuk rumus perceptron yaitu
akan diterapkan untuk masing-masing node yaitu
Kalian bisa melihat input akan dimasukan ke semua bobot dan bias. Mari kita coba menggunakan perceptron, dengan gambaran umum seperti berikut
clc;clear all;close all; data = readtable('data multi kelas.xlsx'); data_input = [data.x1,data.x2]; data_target = [data.y1,data.y2,data.y3]; w = [3 1 -59; 6 14 35]; b =[-119, -378, -156]; aktifasi='hardlim'; x = data_input; prediksi_node_1 = hardlim(x*w(:,1)+b(1)); prediksi_node_2 = hardlim(x*w(:,2)+b(2)); prediksi_node_3 = hardlim(x*w(:,3)+b(3)); prediksi = [prediksi_node_1,prediksi_node_2,prediksi_node_3] hasil=array2table([sum(data_target,2),sum(prediksi,2)],'VariableNames',{'Target','Prediksi'}); disp(hasil);
hasil
prediksi = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Target Prediksi ______ ________ 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3
Pelatihan Perceptron Multi Kelas dengan Matlab
Kalian tentu penasaran, bagaimana menentukan bobot dan bias untuk Perceptron Multi Kelas. Proses pelatihan perceptron mutikelas sama seperti untuk 2 kelas, kalian bisa meggunakan kode seperti berikut
clc;clear all;close all; data=readtable('data multi kelas.xlsx'); %diubah/transpose dulu data_input = transpose([data.x1,data.x2]); data_target = transpose([data.y1,data.y2,data.y3]); model = perceptron('hardlim','learnp'); net = configure(model,data_input,data_target); net.trainParam.epochs = 1000; %maksimal iterasi net.trainParam.showWindow = true; %menampilkan grafik net.trainParam.goal = 0.01; %target grand total errornya net = train(net,data_input,data_target); disp('bobot') net.IW{1} disp('bias') net.b{1} disp('Hasil target dan prediksi') prediksi = sim(net,data_input); %tampilkan hasil=array2table([sum(data_target);sum(prediksi)]','VariableNames',{'Target','Prediksi'}); disp(hasil);
Hasil bobot dan bias, kalian bisa lakukan transpose agar sama dengan yang sebelumnya.
bobot ans = 3 6 1 14 -59 35 bias ans = -119 -378
Hasil prediksi
Hasil target dan prediksi Target Prediksi ______ ________ 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3
Sampai tahap ini kalian sudah banyak belajar belajar jaringan syaraf tiruan – machine learning dengan Matlab, silahkan bertanya via email kesini ataupun mengajukan proposal riset