Algoritma Elman Network


Algoritma Elman Network adalah salah satu algoritma berbasis jaringan saraf yang dapat digunakan untuk pengambilan keputusan. Contoh yang dibahas kali ini adalah mengenai penentuan penerimaan pengajuan kredit sepeda motor baru berdasarkan kelompok data yang sudah ada.
Inti perhitungan pada algoritma berbasis jaringan adalah untuk mencari bobot terbaik dari contoh / sampel data yang sudah ada. Karena hasil pada contoh data sudah diketahui, maka nilai bobot akan dihitung berdasarkan nilai hasil yang sudah tersedia, sampai ditemukan nilai bobot terbaik yang paling banyak cocok apabila dihitungkan kembali pada data awal. Kemudian nilai bobot tersebut dapat digunakan untuk menghitung data lain yang tidak diketahui hasilnya. Pada kasus ini, metode yang digunakan untuk mencari bobot terbaik adalah menggunakan metode PSO (Particle Swarm Optimization)
Algoritma ini merupakan pengembangan dari Algoritma JST (Jaringan Saraf Tiruan). Perbedaan yang paling utama dari algoritma pendahulunya adalah adanya sebuah lapisan aluran yang menyimpan nilai bobot pada perhitungan sebelumnya, dan akan dimasukkan sebagai salah satu nilai input pada perulangan berikutnya. Sehingga nilai output bergantung dari nilai input dan bobot yang diperoleh dari perhitungan sebelumnya. Dengan sistem seperti ini, algoritma ini dapat memperkirakan nilai yang sangat bergantung dari nilai-nilai sebelumnya, sebagai contoh adalah pengenalan pola tulisan tangan, karena nilai dari sebuah huruf sangat bergantung dari nilai perhitungan sebelumnya untuk huruf tersebut.



Diasumsikan ada 8 data pelanggan yang sudah diketahui datanya, yaitu Pelanggan A,B,C,D,E,F,G,H
Masing-masing pelanggan memiliki kriteria, yaitu umur, jenis kelamin, skor kepribadian, dan memiliki nilai hasil yaitu Diterima / Ditolak
Diasumsikan 8 data tersebut adalah sebagai berikut:

Pelanggan Umur Jenis Kelamin Skor Kepribadian Hasil
Pelanggan A 44 Laki-laki 3.55 Diterima
Pelanggan B 52 Perempuan 4.71 Diterima
Pelanggan C 60 Perempuan 6.56 Ditolak
Pelanggan D 56 Laki-laki 6.8 Ditolak
Pelanggan E 51 Laki-laki 6.94 Ditolak
Pelanggan F 46 Perempuan 6.52 Ditolak
Pelanggan G 48 Laki-laki 4.25 Diterima
Pelanggan H 58 Perempuan 5.71 Diterima

Contoh data pelanggan awal adalah sebagai berikut:
Untuk Kriteria Jenis Kelamin:
Laki-laki dilambangkan dengan angka -1
Perempuan dilambangkan dengan angka +1
Untuk kriteria Nilai Hasil:
Terdapat 2 kolom untuk merepresentasikan kondisi Diterima dan Ditolak
Jika kondisi Diterima, maka inputan data kolom adalah 1, 0
Jika kondisi Ditolak, maka inputan data kolom adalah 0, 1



Selanjutnya ada 2 orang pelanggan baru yang mengajukan kredit sepeda motor
Maka tentukan pelanggan ini nantinya akan termasuk dalam kelompok Diterima / Ditolak
Diasumsikan data awalnya adalah sebagai berikut:

Pelanggan Umur Jenis Kelamin Skor Kepribadian
Pelanggan I 47 Perempuan 6.05
Pelanggan J 52 Laki-Laki 5

Contoh data pelanggan baru adalah sebagai berikut:
Untuk kriteria Nilai Hasil:
Terdapat 2 kolom untuk merepresentasikan kondisi Diterima dan Ditolak
Karena belum diketahui nilai hasilnya, maka semua inputan data adalah -1, -1


Langkah-langkah penggunaan algoritma ini adalah

1. Lakukan normalisasi data untuk kriteria Umur dan Skor Kepribadian
Penjelasan lebih lanjut dapat dilihat pada penjelasan skrip dibawah ini (poin 1a – 1c)

1a. Hitung nilai rata-rata tiap-tiap kolom
yaitu dengan rumus: jumlah semua data dibagi dengan jumlah datanya

1b. Hitung nilai standar deviasi tiap-tiap kolom
yaitu dengan rumus: akar dari ((kuadrat dari (jumlah dari (data – rata-rata))) / jumlah data)

1c. Normalisasi data dihitung dengan rumus (data – (rata-rata kriteria tersebut)) / standar deviasi kriteria tersebut

2. Tentukan skema awal untuk algoritma ini.
Algoritma ini dapat digunakan untuk melakukan perhitungan yang memiliki banyak input dan menghasilkan banyak output
Diasumsikan dalam kasus ini, skema yang digunakan adalah 3 – 4 – 2, dimana:

  • 3 adalah jumlah saraf input, karena ada 3 kriteria awal, yaitu Umur, Jenis Kelamin, dan Skor Kepribadian
  • 4 adalah jumlah saraf tersembunyi yang digunakan. Jumlah saraf tersembunyi harus lebih dari jumlah saraf input
  • dalam kasus ini bisa lebih dari 4, tetapi hanya digunakan 4 saja untuk mempercepat perhitungan

  • 2 adalah jumlah saraf output, Karena kriteria nilai hasil bergantung pada nilai 2 kolom, yaitu 1,0 jika diterima dan 0,1 jika ditolak

* Diperlukan sebuah class untuk menyimpan semua matriks data untuk digunakan dalam perhitungan algoritma ini. Class ini dinamakan class ElmanNetwork. Deklarasi awal untuk setiap pengisian data adalah sebagai berikut

* Setelah melakukan inisialisasi diatas, maka akan dilakukan inisialisasi matriks bobot dan bias yang digunakan

  • jumlah nilai bobot pada jaringan saraf input-tersembunyi adalah jumlah saraf input * jumlah saraf tersembunyi (3 * 4 = 12 buah)
  • jumlah nilai bias pada jaringan saraf input-tersembunyi adalah jumlah saraf tersembunyi (4 buah)
  • jumlah nilai bobot pada jaringan saraf tersembunyi-output adalah jumlah saraf tersembunyi * jumlah saraf output (4 * 2 = 8 buah)
  • jumlah nilai bias pada jaringan saraf tersembunyi-output adalah jumlah saraf output (2 buah)
  • jumlah nilai bobot pada jaringan saraf aluran-tersembunyi adalah jumlah saraf tersembunyi * jumlah saraf tersembunyi (4 * 4 = 16 buah)

Sehingga, banyak data yang diperlukan adalah 12 + 4 + 8 + 2 + 16 = 42 buah data
Kemudian pada masing-masing bobot, beri nilai awal dengan nilai acak yang sangat kecil (antara 0.001 sampai dengan 0.0001)

* Gunakan fungsi ini untuk memasukkan matriks bobot awal kedalam 5 matriks data yaitu matriks ihBobot, hBias, hoBobot, oBias
ihBobot adalah matriks bobot pada jaringan saraf input-tersembunyi, dengan jumlah data = jumlah saraf input * jumlah saraf tersembunyi
hBias adalah matriks nilai bias pada jaringan saraf input-tersembunyi, dengan jumlah data = jumlah saraf tersembunyi
hoBobot adalah matriks bobot pada jaringan saraf tersembunyi-output, dengan jumlah data = jumlah saraf tersembunyi * jumlah saraf output
oBias adalah matriks nilai bias pada jaringan saraf tersembunyi-output, dengan jumlah data = jumlah saraf output
chBobot adalah matriks bobot pada jaringan saraf aluran-tersembunyi, dengan jumlah data = jumlah saraf tersembunyi * jumlah saraf tersembunyi

3. Tentukan parameter-parameter yang digunakan dalam perhitungan

3a. Tentukan Jumlah partikel yang digunakan
Diasumsikan dalam kasus ini jumlah partikel adalah 10 partikel

3b. Tentukan Jumlah maksimal iterasi
Diasumsikan dalam kasus ini jumlah maksimal iterasi adalah 500 kali

4. Lakukan proses pencarian nilai bobot dan bias terbaik
Metode yang digunakan adalah PSO (Particle Swarm Optimization)
Penjelasan tentang fungsi PSO akan dijelaskan pada perhitungan dibawah ini

Memasuki perhitungan utama pada fungsi PSO

* Inisialisasi semua posisi partikel awal dengan posisi acak

4a. Lakukan perhitungan pada masing-masing partikel

4a1. Tentukan posisi acak pada partikel tersebut sesuai dengan batasan minimal dan maksimal nilai

4a2. Hitung nilai fitnessnya dengan menggunakan fungsi CrossEntropy
Penjelasan tentang fungsi CrossEntropy dapat dilihat pada penjelasan dibawah ini

* Gunakan fungsi ini untuk menghitung tingkat kesalahan dari masing-masing data input
Teknik yang digunakan adalah CrossEntropy
Pertama, hitung nilai output untuk masing-masing data
Nilai akhir didapat dari -1 * (jumlah dari (nilai kolom output * logaritma dari nilai output yang telah dihitung sebelumnya) untuk masing-masing data)

4a3. Hitung kecepatan acak partikel tersebut sesuai dengan batasan kecepatan minimal dan maksimal

4a4. Ambil posisi partikel terbaik sementara berdasarkan nilai fitness terendah sementara

4b. Tentukan bobot inertia (w), bobot kognitif (c1), dan bobot sosial (c2)
Nilai acuan untuk masing-masing variabel dapat dilihat di http://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=00870279
Diasumsikan dalam kasus ini, nilai bobot tersebut akan mengikuti nilai acuan yang sudah ada

4c. Lakukan perhitungan sebanyak parameter jumlah iterasi

4c1. Lakukan perulangan untuk setiap partikel

*Lakukan perhitungan untuk menentukan nilai kecepatan yang baru (poin 4c1a)

4c1a. Lakukan perhitungan pada setiap nilai kecepatan dalam masing-masing dimensi

4c1a1. Cari kecepatan perpindahan posisi yang baru dengan rumus:
v baru = (w * v skrg) + (c1 * r1 * (posisi terbaik – posisi skrg)) + (c2 * r2 * (posisi umum terbaik – posisi skrg))

4c1a2. Jika kecepatan tersebut ternyata diluar batas kecepatan yang diperbolehkan,
maka kembalikan nilainya agar masuk dalam batas tersebut

*Lakukan perhitungan untuk menentukan posisi yang baru (poin 4c1b)

4c1b. Lakukan perhitungan pada setiap nilai posisi dalam masing-masing dimensi

4c1b1. Hitung posisi baru dengan menambahkan posisi lama dengan kecepatan yang baru

4c1b2. Jika posisi tersebut ternyata diluar batas posisi yang diperbolehkan,
maka kembalikan nilainya agar masuk dalam batas tersebut

4c1c. Hitung nilai fitness untuk posisi yang baru

4c1d. Jika nilai fitness baru lebih baik dari nilai fitness sebelumnya, maka ambil posisi yang baru sebagai posisi terbaik partikel tersebut

4c1e. Jika nilai fitness baru ternyata lebih baik dari nilai fitness umum, maka ambil posisi yang baru sebagai posisi terbaik secara umum

5. Lakukan perhitungan dari masing-masing contoh data menggunakan nilai bobot dan nilai bias yang sudah ditemukan
Penjelasan tentang fungsi ini akan dijelaskan pada perhitungan dibawah ini (poin 5a – 5i)

Memasuki perhitungan utama pada fungsi hitungNilaiOutput

5a. Beri nilai matriks input sesuai array input

5b. Hitung matriks hJumlahBobotDanBias dengan cara penjumlahan dari perkalian matriks antara matriks input dan matriks ihBobot

5c. Kemudian tambahkan nilai aluran yang telah diberikan bobot pada matriks hJumlahBobotDanBias

5d. Akhirnya tambahkan nilai bias pada matriks hJumlahBobotDanBias

5e. Hitung nilai output sementara dengan menggunakan fungsi HyperTan untuk masing-masing data pada matriks hJumlahBobotDanBias
Penjelasan tentang fungsi HyperTan akan dijelaskan pada perhitungan dibawah ini

* Gunakan fungsi ini untuk menghitung nilai fungsi HyperTan (tanh)

5f. Hitung matriks oJumlahBobotDanBias dengan cara penjumlahan dari perkalian matriks antara matriks hNode sementara dan matriks hoBobot

5g. Kemudian tambahkan nilai bias pada matriks oJumlahBobotDanBias

5h. Hitung nilai output akhir dengan menggunakan fungsi Softmax untuk masing-masing data pada matriks oJumlahBobotDanBias
Penjelasan tentang fungsi Softmax akan dijelaskan pada perhitungan dibawah ini (poin 5h1 – 5h3)

Memasuki perhitungan utama pada fungsi Softmax

5h1. Cari nilai maksimal data

5h2. Cari nilai skala

5h3. Hitung hasil akhir
Sehingga semua jumlah bobot pada parameter matriks hoJumlahBobotDanBias akan bernilai 1

5i. Lakukan update nilai aluran yang baru menggunakan nilai akhir hNode yang telah dihitung sebelumnya

6. Jika nilai output bernilai kurang dari 0.5 maka pelanggan tersebut memiliki nilai hasil Ditolak
Jika nilai output bernilai lebih dari 0.5 maka pelanggan tersebut memiliki nilai hasil Diterima
Kemudian bandingkan nilai output dengan nilai hasil pada contoh data
Jika hasilnya sudah sama, maka catat data ini kedalam jumlah data benar
Jika hasilnya tidak sama, maka catat data ini kedalam jumlah data salah

7. Catat tingkat kecocokan perhitungan data dengan hasil awal pada data
Langkah ini tidak wajib, hanya untuk mengetahui seberapa besar tingkat kecocokan perhitungan untuk data baru yang akan dihitung selanjutnya

8. Lakukan perhitungan yang sama (poin 5 dan 6) untuk masing-masing data baru

* Agar dapat menjalankan fungsi PSO diatas, maka diperlukan sebuah Class Partikel untuk menampung semua data data partikel yang berisi posisi, fitness, dan kecepatan partikel. Deklarasi Class Partikel adalah sebagai berikut:


Hasil akhir adalah: (klik untuk perbesar gambar)

cmd92


Contoh modul / source code dalam bahasa VB (Visual Basic) dapat didownload disini:



Jika membutuhkan jasa kami dalam pembuatan program, keterangan selanjutnya dapat dilihat di Fasilitas dan Harga
Jika ada yang kurang paham dengan langkah-langkah algoritma diatas, silahkan berikan komentar Anda.
Selamat mencoba.

Tinggalkan sebuah komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *