Selamat Datang di blog sederhana saya,Semoga apa yang Kalian Inginkan dapat terpenuhi disini.

Contoh Perhitungan Algoritma Learning Vector Quantization

Melanjutkan tulisan saya tentang algoritma Learning Vector Quantization yang lalu, kali ini saya akan melanjutkan dengan contoh perhitungan manual. Berikut ini contoh data yang akan kita hitung.

No
X1

X2

X3

X4

target
1
0
1
1
0
0
2
0
0
1
1
1
3
1
1
1
1
0
4
1
0
0
1
1

pada contoh di atas, saya menggunakan 4 data sebagai data training beserta target yang bertujuan untuk mendapatkan bobot yang akan digunakan pada proses klasifikasi. Bobot awal adalah { 1, 1, 1, 0} dan { 1, 0, 1, 1} dengan learning rate 0,05 dengan fungsi pembelajaran = 0,1.

Pelatihan

Iterasi ke 1

1. Data ke 1 { 0, 1, 1, 0} dengan target 0, bobot = {{ 1, 1, 1, 0},{ 1, 0, 1, 1}}
     - menghitung bobot untuk masing masing output : 
        kelas 0 = sqrt(((0-1)^2)+((1-1)^2)+((1-1)^2)+((0-0)^2)) = 1
        kelas 1 = sqrt(((0-1)^2)+((1-0)^2)+((1-1)^2)+((0-1)^2)) = 1.7320508075689
     - menentukan kelas pemenang : 
       output = min(kelas 0, kelas 1) =  kelas 0
     - update bobot : 
       karena target 0 sama dengan output 0, maka update bobot : 
       W11 = 1 + (0.05*(0 - 1)) = 0.95
       W12 = 1 + (0.05*(1 - 1)) = 1
       W13 = 1 + (0.05*(1 - 1)) = 1
       W14 = 0 + (0.05*(0 - 0)) = 0
     
      maka diperoleh bobot baru = {{ 0.95, 1, 1, 0},{ 1, 0, 1, 1}} untuk digunakan pada perhitungan            data selanjutnya

2. Data ke 2 { 0, 0, 1, 1} dengan target 1, bobot = {{ 0.95, 1, 1, 0},{ 1, 0, 1, 1}}
    - menghitung bobot untuk masing masing output :
        kelas 0 = sqrt(((0-0.95)^2)+((0-1)^2)+((1-1)^2)+((1-0)^2)) = 1.7036725037401
        kelas 1 = sqrt(((0-1)^2)+((0-0)^2)+((1-1)^2)+((1-1)^2)) = 1
     - menentukan kelas pemenang : 
       output = min(kelas 0, kelas 1) =  kelas 1
     - update bobot : 
       karena target 1 sama dengan output 1, maka update bobot : 
       W21 = 1 + (0.05*(0 - 1)) = 0.95
       W22 = 0 + (0.05*(0 - 0)) = 0 
       W23 = 1 + (0.05*(1 - 1)) = 1
       W24 = 1 + (0.05*(1 - 1)) = 1
      
       maka diperoleh bobot baru = {{ 0.95, 1, 1, 0},{ 0.95, 0, 1, 1}} untuk digunakan pada perhitungan data selanjutnya

3. Data ke 3 { 1, 1, 1, 1} dengan target 0, bobot = {{ 0.95, 1, 1, 0},{ 0.95, 0, 1, 1}}
    - menghitung bobot untuk masing masing output :
        kelas 0 = sqrt(((1-0.95)^2)+((1-1)^2)+((1-1)^2)+((1-0)^2)) = 1.001249219725
        kelas 1 = sqrt(((1-0.95)^2)+((1-0)^2)+((1-1)^2)+((1-1)^2)) = 1.001249219725
     - menentukan kelas pemenang : 
       output = min(kelas 0, kelas 1) =  kelas 0, 
       - karena output antara kedua kelas sama besar, bisa dipilih salah satu sebagai output
     - update bobot : 
       karena target 0 sama dengan output 0, maka update bobot : 
       W11 = 0.95 + (0.05*(1 - 0.95)) = 0.9525
       W12 = 1 + (0.05*(1 - 1)) = 1
       W13 = 1 + (0.05*(1 - 1)) = 1
       W14 = 0 + (0.05*(1 - 0)) = 0.05
      
     maka diperoleh bobot baru = {{ 0.9525, 1, 1, 0.05},{ 0.95, 0, 1, 1}} untuk digunakan pada perhitungan data selanjutnya

4. Data ke 4 { 1, 0, 0, 1} dengan target 1, bobot = {{ 0.9525, 1, 1, 0.05},{ 0.95, 0, 1, 1}}
    - menghitung bobot untuk masing masing output :
        kelas 0 = sqrt(((1-0.9525)^2)+((0-1)^2)+((0-1)^2)+((1-0.05)^2)) = 1.7043345475581
        kelas 1 = sqrt(((1-0.95)^2)+((0-0)^2)+((0-1)^2)+((1-1)^2)) = 1.001249219725
     - menentukan kelas pemenang : 
       output = min(kelas 0, kelas 1) =  kelas 1
     - update bobot : 
       karena target 1 sama dengan output 1, maka update bobot : 
       W21 = 0.95 + (0.05*(1 - 0.95)) = 0.9525
       W22 = 0 + (0.05*(0 - 0)) = 0
       W23 = 1 + (0.05*(0 - 1)) = 0.95
       W24 = 1 + (0.05*(1 - 1)) = 1

      maka diperoleh bobot baru = {{ 0.9525, 1, 1, 0.05},{ 0.9525, 0, 0.95, 1}} untuk digunakan pada perhitungan data selanjutnya

- setelah semua data selesai dihitung, update learning rate : 
    learning rate baru = fungsi pembelajaran * learning rate;
                                 = 0.1 * 0.05 = 0.005
karena dalam satu iterasi semua data sudah diklasifikasikan dengan benar, maka iterasi pelatihan bisa dihentikan dan memakai bobot terakhir untuk digunakan dalam proses klasifikasi / prediksi. Jika dalam satu iterasi ada yang outputnya belum tepat, maka dilanjutkan ke iterasi berikutnya sampai dengan data diklasifikasikan dengan benar atau telah mencapai maksimal iterasi yang telah ditentukan.

Klasifikasi / Prediksi

Setelah didapat bobot hasil pelatihan yaitu {{ 0.9525, 1, 1, 0.05},{ 0.9525, 0, 0.95, 1}}, maka kita coba melakukan uji coba klasifikasi terhadap dua data yaitu { 1, 1, 1, 0} dan { 1, 0, 1, 1}.

1. Data ke 1 { 1, 1, 1, 0}

kelas 0 = sqrt(((1-0.9525)^2)+((1-1)^2)+((1-1)^2)+((0-0.05)^2)) = 0.068965571120669
kelas 1 = sqrt(((1-0.9525)^2)+((1-0)^2)+((1-0.95)^2)+((0-1)^2)) = 1.4158941521173
output = kelas 0

2. Data ke 2 { 1, 0, 1, 1}

kelas 0 = sqrt(((1-0.9525)^2)+((0-1)^2)+((1-1)^2)+((1-0.05)^2)) = 1.3801290700511
kelas 1 = sqrt(((1-0.9525)^2)+((0-0)^2)+((1-0.95)^2)+((1-1)^2)) = 0.068965571120669
output = kelas 1

Sekian tulisan saya kali ini, semoga bermanfaat.
Share:

Fungsi number_format php di javascript

      Fungsi number_format pada php biasanya digunakan untuk membuat angka menjadi format yang lebih enak dibaca seperti contoh berikut.


5000000   => 5.000.000    // number_format(5000000,0,',','.');
5000000 => 5.000.000,00 // number_format(5000000,2,',','.')

seperti terlihat pada contoh di atas, number_format digunakan untuk merubah format angka menjadi lebih mudah dibaca pada bahasa pemrograman php. Lalu bagaimana jika ingin menggunakan fungsi number_format pada javascript ? berikut saya bagikan fungsi membuat number_format pada bahasa pemrograman javascript yang saya dapat dari halaman github.

function number_format (number, decimals, decPoint, thousandsSep) { 
number = (number + '').replace(/[^0-9+\-Ee.]/g, '')
var n = !isFinite(+number) ? 0 : +number
var prec = !isFinite(+decimals) ? 0 : Math.abs(decimals)
var sep = (typeof thousandsSep === 'undefined') ? ',' : thousandsSep
var dec = (typeof decPoint === 'undefined') ? '.' : decPoint
var s = ''

var toFixedFix = function (n, prec) {
var k = Math.pow(10, prec)
return '' + (Math.round(n * k) / k)
.toFixed(prec)
}

// @todo: for IE parseFloat(0.55).toFixed(0) = 0;
s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.')
if (s[0].length > 3) {
s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep)
}
if ((s[1] || '').length < prec) {
s[1] = s[1] || ''
s[1] += new Array(prec - s[1].length + 1).join('0')
}

return s.join(dec)
}

penggunaan fungsi tersebut sama seperti di php, seperti berikut.


number_format(5000000);

cukup sekian tulisan saya kali ini, semoga bermanfaat.
Share:

Membuka port firewall di Centos / RHEL

      distro Linux seperti CentOS atau RHEL dilengkapi dengan firewall bawaan yang powerful dengan aturan firewall default yang cukup ketat. Jadi, jika Anda menginstal layanan kustom apa pun (misalnya, server web, NFS, Samba), kemungkinan lalu lintasnya akan diblokir oleh aturan firewall. Anda perlu membuka port yang diperlukan di firewall untuk mengizinkan lalu lintas.
      Pada CentOS / RHEL 6 atau sebelumnya, layanan iptables memungkinkan pengguna berinteraksi dengan modul kernel netfilter untuk mengkonfigurasi aturan firewall di sisi pengguna. Dimulai dengan CentOS / RHEL 7, antarmuka pengguna baru yang disebut firewalld telah diperkenalkan untuk menggantikan layanan iptables.

Untuk memeriksa aturan firewall saat ini, gunakan perintah ini:

sudo iptables -L
Sekarang mari kita coba mengupdate firewall untuk membuka port di CentOS / RHEL.

Membuka port di Centos 7

      Dimulai dengan CentOS dan RHEL 7, pengaturan firewall rule dikelola oleh layanan firewall daemon. Syntax command-line yang digunakan adalah firewall-cmd untuk memperbarui peraturan firewall secara permanen. Contoh, kita akan membuka port 80 maka perintah yang digunakan sebagai berikut.


$ sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
$ sudo firewall-cmd --reload
tanpa tag "--permanent", maka pengaturan akan hilang ketika komputer di restart. Kemudian cek rule terbaru.


$ firewall-cmd --list-all 

Membuka port di Centos 6

      Pada Centos 6 atau yang terdahulu, untuk mengkonfigurasi firewall menggunakan service iptables.
 
$ sudo iptables -I INPUT -p tcp -m tcp --dport 80 -j ACCEPT
$ sudo service iptables save
perintah pertama adalah perintah untuk menambahkan port 80 ke dalam list service iptables. Sedangkan perintah kedua untuk menyimpan secara permanen perubahan yang telah dilakukan. 

Sekian dulu catatan saya kali ini, semoga bermanfaat.
Share:

Pemrograman Berorientasi Object - Overloading dan Overriding

       Function atau method overloading dan override adalah fitur yang sangat mendasar dan berguna dari bahasa OOP manapun. Dalam tutorial ini kita akan membahas implementasi metode overloading dan override di php. Di sini pertama kita akan membahas dasar-dasar overloading dan override. Setelah eksplorasi dasar kita akan menerapkan overloading dan override di php. Sebelum melangkah lebih jauh, saya mengasumsikan bahwa Anda memiliki pengetahuan dasar tentang class dan pewarisan di php. Anda juga memiliki pemahaman tentang magic method di php. Magic method karena overloading di php bisa di implmentasikan dengan menggunakan magic method.

Overriding

       Arti dasar dari overriding di OOP sama dengan arti kata sebenarnya. Dalam arti kata sebenarnya dari overriding adalah menggantikan perilaku orang tua yang sama pada anak. Ini sama dengan override method di OOP. Dalam arti OOP, override adalah mengganti method class induk di class anak. Atau dengan method kata kunci sederhana yang mengesampingkan berarti mengubah perilaku metode ini. Dalam OOP overriding adalah proses dimana Anda dapat mendeklarasikan ulang method class induk Anda di class anak. Jadi arti dasar override OOP adalah mengubah perilaku method class induk Anda.

       Biasanya method override diperlukan saat class parent / induk Anda memiliki beberapa method, namun di class anak Anda Anda menginginkan method yang sama dengan perilaku yang berbeda. Dengan meng-override method Anda dapat menyelesaikan perubahan perilakunya dari class induk. Untuk implementasi overiding di OOP kita umumnya membuat method yang sama di class anak.

Overloading

      Overloading di OOP sama dengan overloading di dunia nyata. Di dunia nyata, overloading berarti memberi pekerjaan ekstra pada mesin atau orang yang sama. Method overloading id OOP sama. Dengan proses methos overloading Anda meminta method / function Anda untuk beberapa pekerjaan ekstra. Atau dalam beberapa kasus, kita bisa mengatakan beberapa pekerjaan yang berbeda juga.

      Biasanya method overloading di OOP dikelola berdasarkan argumen / parameter yang dilewatkan dalam function. Kita bisa mencapai overloading di OOP dengan memberikan argumen yang berbeda dalam method / function yang sama.

Overiding dan Overloading di PHP

      Implementasi override di php sangat mudah. Jika class induk Anda memiliki fungsi, nda dapat membuat fungsi dengan nama yang sama di class anak Anda untuk mengganti fungsinya. Implementasi override tidak bisa diraih dengan membuat 2 function dengan nama yang sama dan argumen / parameter yang berbeda dalam php. Karena kita tidak bisa membuat function nama yang sama lebih dari 1 kali di class php. Untuk menerapkan overloading kita perlu bantuan metode magic di php. Di bagian bawah kita akan membahas overloading dan override satu per satu.

Overloading di PHP

      Seperti kita ketahui bahwa kita tidak bisa menerapkan overloading dengan membuat 2 fungsi dengan nama yang sama dalam satu class. Jadi untuk menerapkan overloading di php kita akan mengambil bantuan magic method __call(). magic method __call() dipanggil saat metode yang disebut dengan objek kelas tidak tersedia di class. Jadi di sini kita tidak akan membuat method dengan tepat dan akan membantu metode __call(). Sekarang method __call() akan memberi kita 2 argumen / parameter, parameter pertama adalah function / method yang akan dipanggil dan parameter kedua adalah parameter yang akan dikirim ke method yang dipanggil. Sekarang dengan bantuan switch-case atau if-else kita akan menerapkan overloading di php. Berikut adalah contoh overloading yang sangat sederhana di php.


<?php 
class Test
{
public function __construct()
{
//Your logic for constructor
}
public function __call($method_name , $parameter)
{
if($method_name == "overlodedFunction") //Function overloading logic for function name overlodedFunction
{
$count = count($parameter);
switch($count)
{
case "1":
//Business log in case of overlodedFunction function has 1 argument
echo "You are passing 1 argument";
break;
case "2": //Incase of 2 parameter
echo "You are passing 2 parameter";
break;
default:
throw new exception("Bad argument");
}
}
else
{
throw new exception("Function $method_name does not exists ");
}
}
}
$a = new Test();
$a->overlodedFunction("ankur");
$a->overlodedFunction("techflirt" , "ankur");
?>

        Seperti yang kita tahu bahwa magic method __call() dipanggil saat metode tidak tersedia di class. Jadi dalam kasus contoh test class di atas kita belum membuat function overlodedFunction. Jadi kapanpun metode overlodedFunction disebut, maka akan memanggil method __call(). Method __call() mempunyai 2 parameter, parameter pertama adalah nama dari method yang akan dijalankan dan lainnya adalah parameter yang dilewatkan dalam method yang disebut. Dalam fungsi __call() saya telah menerapkan if-else untuk memastikan bahwa logika bisnis overloading hanya berfungsi untuk fungsi overlodedFunction.

Overriding di PHP

       Override di php sangat mudah. Seperti yang kita ketahui bahwa override adalah proses memodifikasi method yang diwariskan. Jadi dalam kasus pewarisan, anda hanya perlu membuat method dengan nama yang sama di class anak yang ingin ditimpa. Berikut ini adalah contoh override method di php.


<?php 
class testParent
{
public function f1()
{
echo 1;
}
public function f2()
{
echo 2;
}
}

class testChild
{
function f2($a) //overriding function f2
{
echo $a;
}
}

$a = new testChild();
$a->f2('ankur');//it will print ankur
?>

      Pada contoh di atas Anda mengoverride fungsi f2. ketika melakukan override, anda bebas mengubah logika bisnis dan jumlah parameter.

Sekian tulisan saya kali ini, saya harap tulisan saya tentang konsep overloading dan override di php ini dapat bermanfaat untuk pembaca. Terima kasih.
Share:

Install phpPgAdmin di Centos 7

     Melanjutkan tulisan saya sebelumnya tentang instalasi postgreSQL, kali ini saya lanjutkan dengan instalasi phpPgAdmin. phpPgAdmin merupakan aplikasi GUI untuk postgreQL seperti phpMyAdmin pada MySQL. phpPgAdmin digunakan untuk memudahkan managemen database pada postgreSQL.

Instalasi phpPgAdmin

     paket phpPgAdmin tersedia pada repository centos. Anda dapat menambahkan / melakukan update dengan menggunakan perintah :


sudo rpm -Uvh https://download.postgresql.org/pub/repos/yum/9.5/redhat/rhel-7-x86_64/pgdg-centos95-9.5-2.noarch.rpm

selanjutnya lakukan instalasi phpPgAdmin menggunakan perintah :


sudo yum -y install phpPgAdmin

pastikan bahwa komputer sudah terinstall web server seperti apache.Secara default, phpPgAdmin tidak dapat diakses dari luar. untuk itu anda perlu melakukan konfigurasi pada file /etc/httpd/conf.d/phpPgAdmin.conf.


sudo vi /etc/httpd/conf.d/phpPgAdmin.conf

anda akan mendapat kode sebagai berikut.


Alias /phpPgAdmin /usr/share/phpPgAdmin# Apache 2.4
Require local
#Require host example.com# Apache 2.2
Order deny,allow
Deny from all
Allow from 127.0.0.1
Allow from ::1
# Allow from .example.com

ubah sehingga menjadi seperti berikut.


Alias /phpPgAdmin /usr/share/phpPgAdmin# Apache 2.4
Require all granted
#Require host example.com# Apache 2.2
Order deny,allow
#Deny from all
Allow from all
Allow from ::1
# Allow from .example.com

jika komputer anda menggunakan SELinux, anda perlu menjalankan perintah berikut untuk dapat melakukan loginke phpPgAdmin :


setsebool -P httpd_can_network_connect_db 1

sekarang edit file konfigurasi phpPgAdmin untuk dapat merkomunikasi dengan database postgreSQL. Buka file /etc/phpPgAdmin/config.inc.php menggunakan text editor.


sudo vi /etc/phpPgAdmin/config.inc.php

cari dan ubah baris kode berikut :


$conf['servers'][0]['host'] = '';
$conf['extra_login_security'] = true;

dan ubah menjadi berikut.


$conf['servers'][0]['host'] = 'localhost';
$conf['extra_login_security'] = false;

kemudian simpan dan restart service apache.


sudo systemctl restart postgresql-9.5
sudo systemctl restart httpd
sudo systemctl enable httpd

kemudian akses dengan alamat http://localhost/phpPgAdmin.

Sampai disini kita sidah selesai melakukan instalasi phpPhAdmin.
Share:

Install PostgreSQL di CentOS 7

     PostgreSQL adalah object-relational database system yang kuat, dan gratis. PostgreSQL support di hampir semua sistem operasi. PostgreSQL dapat menyimpan data dengan aman dan dapat menangani request mulai dari web kecil sampai aplikasi enterprise / sangat besar. PostgreSQL juga support berbagai bahasa pemrograman seperti java, php, perl, ruby dll.
     PostgreSQL tidak memerlukan persyaratan hardware minimum khusus. Dalam tutorial ini kita akan memakai OS Centos 7 dan menggunakan account non-root untuk menjalankan perintah. Jika Anda login sebagai user root, menghilangkan perintah sudo dari semua perintah.

Instalasi PostgreSQL

pertama, buka terminal untuk update system dan repository menggunakan perintah :


sudo yum -y update

untuk menginstal postgreSQL anda membutuhkan repository postgreSQL yang terbaru. untuk mengupdate repository PostgreSQL gunakan perintah berikut :


sudo rpm -Uvh https://download.postgresql.org/pub/repos/yum/9.5/redhat/rhel-7-x86_64/pgdg-centos95-9.5-2.noarch.rpm

setelah repository terupdate, kita dapat melakukan proses install porsgreSQL menggunakan perintah berikut :


sudo yum -y install postgresql95-server postgresql95-contrib

setelah selesai proses download dan install, maka kita lanjutkan untuk melakukan inisialisasi database :


sudo /usr/pgsql-9.5/bin/postgresql95-setup initdb

setelah itu jalankan service postgreSQL dan setting untuk selalu dijalankan saat booting sistem.


sudo systemctl start postgresql-9.5
sudo systemctl enable postgresql-9.5

selanjutnya kita lakukan setting firewall untuk membuka akses port 5432 yang akan digunakan oleh postgreSQL dan juga port 80 untuk akses http.


sudo firewall-cmd --permanent --add-port=5432/tcp
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --reload

sekarang anda dapat melakukan akses ke postgreSQL dengan menggunakan perintah di terminal :


sudo su - postgres

postgres adalah database default dan user default yang otomatis dibuat pada saat pertama instalasi. untuk masuk dan menggunakan postgreSQL sql command gunakan perintah :


psql

setelah berhasil masuk maka anda akan melihat tampilan sebagai berikut.


[centos@liptan ~]$ sudo su - postgres
Last login: Thu Jul 21 05:26:08 UTC 2016 on pts/1
-bash-4.2$ psql
psql (9.5.3)
Type "help" for help.

postgres=#

untuk merubah password user postgres, gunakan perintah berikut.


\password postgres

maka anda akan melihat tampilan sebagai berikut.


postgres=# password postgres
Enter new password:
Enter it again:
postgres=#

untuk keluar dari sql command, gunakan perintah \q. Kemudian untuk logout dari postgresSQL gunakan perintah exit.

Konfigurasi Authentifikasi MD5

      Konfigurasi diperlukan untuk proses authentifikasi user. Buka dan edit file /var/lib/pgsql/9.4/data/pg_hba.conf menggunakan editor.                

sudo vi /var/lib/pgsql/9.5/data/pg_hba.conf

kemudian scroll atau cari code seperti sebagai berikut :


# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
host all all 127.0.0.1/32 ident
# IPv6 local connections:
host all all ::1/128 ident

ubah method peer dan ident menjadi md5 sehingga menjadi sebagai berikut.

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local all all md5
# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5

kemudian restart service postgreSQL


sudo systemctl restart postgresql-9.5

Konfigurasi Koneksi TCP/IP 

     Secara default, postgreSQL tidak mengijinkan koneksi dari luar, sehingga user tidak dapat mengakses SQL Server dari luar. Untuk mengizinkan akses database menggunakan protokol TCP/IP anda perlu mengedit file konfigurasi postgreSQL. buka dan edit file postgresql.conf menggunakan perintah :

sudo vi /var/lib/pgsql/9.5/data/postgresql.conf

cari perintah seperti berikut :


listen_addresses = '*'  # what IP address(es) to listen on;
# comma-separated list of addresses;
# defaults to 'localhost'; use '*' for all
# (change requires restart)
port = 5432 # (change requires restart)
max_connections = 100 # (change requires restart)

buang tanda # didepan syntak jika ada. kemudian simpan dan restart service postgreSQL


    sudo systemctl restart postgresql-9.5

sampai disini kita sudah selesai melakukan instalasi postgreSQL. pada artikel selanjutnya akan saya lanjutkan dengan instalasi phpPgAdmin.
Share:

Learning Vector Quantization (LVQ)

Learning Vector Quantization (LVQ) adalah sebuah metode klasifikasi dimana setiap unit output mempresentasikan sebuah kelas. LVQ digunakan untuk pengelompokkan dimana jumlah kelompok sudah ditentukan arsitekturnya (target/kelas sudah ditentukan).

LVQ salah satu jaringan syaraf tiruan yang merupakan algoritma pembelajaran kompetitif terawasi versi dari algoritma Kohonen Self-Organizing Map (SOM). Tujuan dari algoritma ini adalah untuk mendekati distribusi kelas vektor  untuk meminimalkan kesalahan dalam pengklasifikasian.

Algoritma diusulkan oleh Kohonen pada tahun 1986 sebagai perbaikan dari Vector Quantization. Model pembelajaran LVQ dilatih secara signifikan agar lebih cepat dibandingkan algoritma lain seperti Back Propagation Neural Network. Hal ini dapat meringkas atau mengurangi dataset besar untuk sejumlah kecil vektor.

Arsitektur LVQ seperti pada gambar berikut:






Adapun Langkah langkah LVQ sebagai berikut:
  • Tetapkan: bobot(W), maksimum epoch (MaxEpoch), error minimum yang diharapkan (Eps), Learning rate (α).
  • Masukan:
  1. Input : x(m,n);
  2. Target : T(1,n)
  • Tetapkan kondisi awal:
  1. Epoch = 0;
  2. Eps = 1;
  • Tetapkan jika:epoch < MaxEpoch atau ( e < eps)
  1. Epoch = Epoch + 1
  2. Kerjakan untuk i = 1 sampai n
  • Tentukan J sedemikian hingga || x – wj || minimum (sebut sebagai Ci)
  • Perbaiki Wj dengan ketentuan:
           - Jika T = Cj maka: wj(baru) = wj(lama) + α (x-wj(lama))
           - Jika T ≠ Cj maka: wj(baru) = wj(lama) - α (x-wj(lama))
  • Kurangi nilai α
Sekian, saya lanjutkan dengan contoh perhitungan dilain kesempatan. Thanks.
Share:
  • ()
  • ()
Show more

Halaman