Monday, May 29, 2017

Mind Maping Machine Learning Algorithm

referensi: http://machinelearningmastery.com/a-tour-of-machine-learning-algorithms/

buku belajar machine learning dengan matlab - AdaBoost for Machine Learning


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

Sinopsis

AdaBoost termasuk algoritma machine learning yang menggunakan beberapa ciri fitur lemah yang digabung secara linear menjadi ciri fitur kuat. Menggunakan teknik iterasi dalam melakukan update bobot ditiap iterasi. Berikut  perhitungan secara matematikanya.
Diberikan
 (x1,y1),…..(xm,ym);xi∈X,yi∈{-1,+1}

Yang artinya diberikan sebuah data x1 dengan x1 termasuk sebuah himpunan X yaitu ciri fitur dengan y1 adalah target dengan himpunan terdiri dari anggota {-1, +1} dan m adalah jumlah data.
Maka nilai bobot yaitu
D1(i)=1/m

Sehingga

Cara menentukan weak Threshold untuk ciri fitur bisa menggunakan teknik regresi linear.  Kita akan menentukan nilai threshold yaitu 1:1:9 yang diambil dari nilai maksimal dan minimal.
Kita akan membandingkan nilai label yaitu +1 dan -1 terhadap nilai threshold, misalkan kita pilih untuk +1  dan -1 pada threshold 3 pada x1 menghasilkan


Artinya akan melakukan thresholding,
a.    jika kita mengambil +1 maka setiap x1>=threshold akan diberikan +1 dengan lainnya -1
b.    jika kita mengambil -1, maka setiap x1<threshold akan diberikan +1 dengan lainnya -1
disinilah letak mengenai weak learner nya yaitu memilah fitur-fitur lemah. Dilanjut kita mencari error yaitu dengan membandingkan hasil point a atau b dengan y. Berikut contoh cara menghitung error pada point a

Untuk point b

Bisa dilihat error a+b akan menghasilkan 1, maka bila kita sudah mengetahui nilai a,
maka untuk nilai b = 1-b
sehingga bisa disimpulkan error terkecil yaitu b<a, error ini disebut error iterasi.
Error iterasi akan berhenti jika
∈_t>  1⁄2
Terlihat bahwa nilai 0.27272 masih dibawah ½ sehingga nilai ∈_t = 0.27272
Kemudian akan terjadi update pada nilai berikut
Alpha
α_t=  1⁄(2 ) log⁡((1-∈_t)/∈_t )
Nilai alpha menjadi α_t = 0.4904

Bobot D

D_(t )=D_(t )*exp⁡(-α_t*y*weakLearner)
D_(t )= D_(t )/sum(D_(t ))


Pada pada kasus diatas nilai b atau 0.2727  sebagai nilai terkecil, sehingga nilai weakLearner sebagai berikut tetap menggunakan label = -1

Sehingga nilai

Bila ingin lebih jelas, lihatlah rumus berikut
  1. Freund, Y.: Boosting a weak learning algorithm by majority. Information and Computation 121(2), 256–285 (1995)
  2. Freund, Y.: An adaptive version of the boost by majority algorithm. Machine Learning 43(3), 293–318 (2001)
  3. Freund, Y., Schapire, R.E.: A decision-theoretic generalization of on-line learning and an application to boosting. Journal of Computer and System Sciences 55(1), 119–139 (1997)


Agak sulit bila menjelaskan menggunakan persamaan matematika secara umum karena sifatnya general sekali



Python-Perceptron

Penulis telah membaca link berikut https://piptools.net/algoritma-adaboost-adaptive-boosting/ dengan menggunakan Adaboost yaitu dengan dasar menggunakan fitur-fitur lemah yang digabungkan menjadi fitur yang kuat untuk melakukan keputusan ditolak dan diterima pada database yang telah ada.



Thursday, May 25, 2017

Buku Belajar Pemrogaman Matlab - Control Random Generator


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/29/buku-belajar-pemrogaman-matlab-seed-random-generator/


Jika kamu menggunakan Matlab untuk melakukan komputasi tidak terlepas kita membutuhkan bilangan random, tapi ini menjadi masalah tersendiri jika terdapat hasil yang berbeda-beda setiap kali melakukan proses komputasi.  Biasanya ini terjadi ketika kamu menggunakan algoritma machine learning yang melibatkan bilangan random sebagai initial valuenya. Bagaimana kita harus membuat menjadi tetap? Saya gunakan contoh kmeans clustering berikut

clc;clear all;close all;
load fisheriris
X = meas(:,3:4);
 
figure;
plot(X(:,1),X(:,2),'k*','MarkerSize',5);
title 'Fisher''s Iris Data';
xlabel 'Petal Lengths (cm)';
ylabel 'Petal Widths (cm)';
 
%kita akan menggunakan kmeans untuk melakukan
%clustering
[idx,C] = kmeans(X,3);
hold on
for i =1:3
    text(C(i,1),C(i,2),num2str(i),'FontSize',30,'Color','B')
end 

Coba kamu perhatikan urutan angka berikut


Pasti akan menghasilkan urutan yang berbeda-beda, oleh karena itu kita harus menetapkan terlebih dahulu seed random generator yaitu dengan function rand(‘seed’,0) yang artinya bilangan random akan menggunakan seed/benih 0 sebagai nilai awalnya, kamu bebas menggunakan 0 – 9999.

Coba kamu perbaiki codenya menjadi berikut

clc;clear all;close all;
load fisheriris
X = meas(:,3:4);
 
figure;
plot(X(:,1),X(:,2),'k*','MarkerSize',5);
title 'Fisher''s Iris Data';
xlabel 'Petal Lengths (cm)';
ylabel 'Petal Widths (cm)';
 
%kita akan menggunakan kmeans untuk melakukan
%clustering
rand('seed',0) %seed nya diisi 0
[idx,C] = kmeans(X,3);
hold on
for i =1:3
    text(C(i,1),C(i,2),num2str(i),'FontSize',30,'Color','B')
end 
Maka hasil urutannya akan senantiasa sama.

http://www.softscients.web.id/2015/11/pembangkitan-bilangan-random-dengan.html

Thursday, May 11, 2017

Sekilas Mengenai KFold Validation

Cross Validation merupakan salah satu teknik untuk menilai/memvalidasi keakuratan sebuah model yang dibangun berdasarkan dataset tertentu, yang melibatkan proses K-buah partisi secara acak. 

Kelebihan dari metode ini adalah tidak adanya masalah dalam pembagian data. Setiap data akan menjadi test set sebanyak satu kali dan akan menjadi training set sebanyak K-1 kali. Kekurangan dari metode ini adalah algoritma pembelajaran harus dilakukan sebanyak K kali yang berarti menggunakan K kali waktu komputasi. Berikut contoh Kfold sebanyak Kfold-3.