Algoritma RBF (Radial Basis Function) / Radial Nets 12


Algoritma RBF (Radial Basis Function) / Radial Nets 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.
Algoritma ini memiliki kemiripan struktur data dengan Algoritma JST (Jaringan Saraf Tiruan), tetapi teknik perhitungan yang dilakukan sangat berbeda.



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 adalah sebagai berikut:



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 baru yang akan dihitung adalah sebagai berikut:
Untuk kriteria Nilai Hasil:
Karena belum diketahui nilai hasilnya, maka semua inputan data adalah kosong


Langkah-langkah penggunaan algoritma ini adalah

1. Tentukan normalisasi matriks data ke dalam bentuk angka
Contoh dalam kasus ini:

  • Kriteria umur dinormalisasi dengan cara mencari rata-rata dari semua data umur, kemudian mengurangkan masing-masing umur dengan rata-ratanya
  • Kriteria jenis kelamin dinormalisasi dengan cara:
    Jenis kelamin Laki-laki dilambangkan dengan angka -1
    Jenis kelamin Perempuan dilambangkan dengan angka +1

  • Kriteria jenis kepribadian dinormalisasi dengan cara mencari rata-rata dari semua data skor, kemudian mengurangkan masing-masing skor dengan rata-ratanya
  • Kriteria Hasil memiliki 2 kolom untuk merepresentasikan kondisi Diterima dan Ditolak
  • Kriteria hasil dinormalisasi dengan cara:
    Jika kondisi Diterima, maka inputan data kolom adalah 1, 0
    Jika kondisi Ditolak, maka inputan data kolom adalah 0, 1

Untuk setiap data baru, karena belum ditemukan hasilnya, maka dilambangkan dengan -1, -1

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 RadialNets. Deklarasi awal untuk setiap pengisian data adalah sebagai berikut

3. Tentukan parameter-parameter yang digunakan dalam perhitungan

3a. Tentukan jumlah iterasi yang digunakan dalam perhitungan
Diasumsikan dalam kasus ini, jumlah iterasi yang dilakukan adalah sebanyak 100 kali

4. Lakukan proses perhitungan dengan menggunakan algoritma ini
Kemudian dapatkan nilai bobot dan nilai bias terbaik untuk digunakan dalam perhitungan data yang baru
Penjelasan tentang fungsi ini akan dijelaskan pada perhitungan dibawah ini

Memasuki perhitungan utama pada fungsi RBF

4a. Tentukan matriks centroid
Centroid adalah beberapa baris data yang diambil sebagai perwakilan data
Penjelasan mengenai fungsi ini dapat dilihat pada keterangan skrip dibawah ini (poin 4a1 – 4a2)

Memasuki perhitungan utama pada fungsi HitungCentroid

4a1. Lakukan perhitungan pada masing-masing contoh data (poin 4a1a – 4a1e)

4a1a. Cari indeks acak untuk digunakan sebagai nilai awal

4a1b. Lakukan perhitungan pada masing-masing pasangan indeks acak yang telah ditentukan sebelumnya

4a1c. Hitung rata-rata absolut jarak antara 2 data pada indeks pertama dan indeks kedua

4a1d. Perkiraan rata-rata jarak untuk semua data dengan indeks acak diatas

4a1e. Indeks yang cukup baik adalah indeks data dengan jarak lebih dari jarak rata-rata terbesar
Ini berarti data data dengan indeks tersebut cukup berjauhan satu sama lain

4a2. Simpan data-data dengan indeks yang terpilih sebelumnya kedalam matriks centroid

4b. Tentukan matriks width
Untuk setiap baris data pada centroid, tentukan jumlah jarak antar centroid yang bersebelahan
Penjelasan mengenai fungsi ini dapat dilihat pada keterangan skrip dibawah ini (poin 4b1 – 4b2)

Memasuki perhitungan utama pada fungsi HitungWidth

4b1. Lakukan perhitungan pada masing-masing pasangan centroid

4b1a. Hitung jarak antara centroid tersebut menggunakan metode Euclidean
Kemudian jumlahkan semua nilai jarak yang ditemukan
Penjelasan mengenai fungsi tersebut dapat dilihat pada keterangan skrip dibawah ini

* Gunakan fungsi ini untuk menghitung jarak Euclidean antara 2 data

4b2. Hitung nilai width, yaitu rata-rata jarak yang ada pada masing-masing centroid

4c. Tentukan nilai bobot dan nilai bias dari setiap data awal
Penjelasan mengenai fungsi ini dapat dilihat pada keterangan skrip dibawah ini (poin 4c1 – 4c4)

Memasuki perhitungan utama pada fungsi HitungBobot

* Inisialisasi semua posisi partikel awal dengan posisi acak

4c1. Lakukan perhitungan pada masing-masing partikel

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

4c1b. Hitung nilai kesalahannya dengan menggunakan teknik MSE (Mean Squared Error)
Penjelasan tentang fungsi MSE akan dijelaskan pada perhitungan dibawah ini

* Gunakan fungsi ini untuk menghitung tingkat kesalahan dari masing-masing data input
Hitung tingkat kesalahan nilai jawaban menggunakan teknik Mean Squared Error
dihitung dengan rumus jumlah dari (kuadrat dari (nilai jawaban – nilai hasil pada matriks data)) / jumlah data
Nilai jawaban yang baru bisa jadi mengembalikan nilai MSE yang lebih tinggi, sehingga nilai jawaban ini tidak bisa dipakai

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

4c1d. Ambil posisi partikel terbaik sementara berdasarkan nilai kesalahan terendah sementara

4c2. 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

4c3. Lakukan perhitungan sebanyak parameter jumlah iterasi

4c3a. Jika nilai kesalahan sudah cukup rendah, maka perhitungan akan dihentikan

4c3b. Lakukan pengacakan urutan partikel yang akan dihitung terlebih dahulu

4c3c. Lakukan perulangan untuk setiap partikel
Partikel yang dihitung adalah sesuai dengan urutan acak yang telah ditentukan sebelumnya (poin 4c3c1 – 4c3c5)

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

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

4c3c1a. 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))

4c3c1b. 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)

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

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

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

4c3c3. Hitung nilai fitness untuk posisi yang baru

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

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

4c4. Masukkan data posisi terbaik sebagai nilai bobot dan nilai bias

* Gunakan fungsi ini untuk memasukkan matriks bobot kedalam 2 matriks data yaitu matriks hoBobot dan oBias
hoBobot adalah matriks bobot pada titik tersembunyi-output, dengan jumlah data = jumlah titik tersembunyi * jumlah titik output
oBias adalah matriks nilai bias pada titik output, dengan jumlah data = jumlah titik output

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 – 5d)

Memasuki perhitungan utama pada fungsi hitungNilaiOutput

5a. Lakukan perulangan pada masing-masing jumlah titik tersembunyi

5a1. Hitung jarak menggunakan metode Euclidean
Penjelasan mengenai fungsi ini sudah dijelaskan pada perhitungan sebelumnya

5a2. Hitung nilai output dengan rumus:
g = exp(-d^2 / (2 * width^2))

5b. Hitung nilai sementara dengan cara perkalian antara nilai output pada titik tersembunyi dikali dengan matriks bobot pada titik tersembunyi-output

5c. Tambahkan nilai bias pada nilai sementara

5d. Hitung nilai output akhir dengan menggunakan fungsi Softmax untuk masing-masing data nilai output sementara
Penjelasan tentang fungsi Softmax akan dijelaskan pada perhitungan dibawah ini (poin 5d1 – 5d3)

Memasuki perhitungan utama pada fungsi Softmax

5d1. Cari nilai maksimal data

5d2. Cari nilai skala

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

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 skrip diatas, maka diperlukan sebuah Class Partikel untuk menampung semua data titik yaitu posisi, kecepatan, dan nilai kesalahan partikel tersebut. Deklarasi Class Partikel adalah sebagai berikut:


Hasil akhir adalah: (klik untuk perbesar gambar)

cmd36a


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 *

12 pemikiran di “Algoritma RBF (Radial Basis Function) / Radial Nets

    • pip Penulis

      Tentu saja algoritma ini dapat digunakan untuk melakukan prediksi data time series. Yang perlu anda lakukan hanyalah mengganti data contoh pada pos ini menyesuaikan dengan data yang anda miliki. Semua alurnya tetap sama,

      Karena anda belum menjelaskan data yang anda miliki, maka saya belum bisa mengetahui cara “penyesuaian” secara spesifik dari kasus anda. Silahkan anda informasikan terlebih dahulu

      • Al Hikmah

        Data yang saya miliki data tingkat inflasi Indonesia bulan jan 2003 sampai dengan september 2016. Yang akan saya ramalkan bulan Oktober, November dan Desember 2016. Analisa saya yang pertama menentukan input sesuai lag ACF data ada 9 input. Berarti pola data yang pertama masukan bulan jan 2003 sampai dengan bulan sept 2003 dan targetnya bulan okt 2003 begitu seterusnya. Baru data saya komposisi training 80 % dan 20% testing. Setelah itu kan penentuan titik pusat dan varian dg k-means. Nah disitu dan seterusnya saya bingung langkahnya. Mohon dijelaskan. Terima kasih.

        • pip Penulis

          Perlu diingat bahwa algoritma ini tidak menerapkan Algoritma K-Means Clustering. Cara implementasi algoritma K-Means Clustering dapat anda lihat pada halaman tersebut, dan menurut saya tidak ada kecocokan implementasi antara algoritma tersebut dengan algoritma ini.

          Sistem yang anda rancang sudah benar. Fungsi pencarian titik pusat sudah tercatat dalam fungsi HitungCentroid pada poin 4a1 – 4a2. Fungsi pencarian varian sudah tercatat dalam fungsi HitungWidth pada poin 4b1 – 4b2. Selanjutnya adalah perhitungan bobot yang sudah tercatat dalam poin 4c. Jumlah bobot yang dicari adalah tergantung dari jumlah data dan struktur jaringan saraf yang anda gunakan. Lakukan pelatihan pada semua data input yang anda pakai, kemudian dapatkan nilai bobot yang paling optimal, dalam kasus ini, saya gunakan nilai MSE terendah untuk mencari bobot yang paling optimal. Proses perhitungan utama selesai sampai disini.

          Selanjutnya adalah tahap optional, yaitu menghitung nilai output dari masing-masing data testing dan bandingkan dengan nilai sebenarnya. Kemudian hitung jumlah prediksi benar dan prediksi salah untuk mengetahui tingkat kecocokan dari proses pelatihan bobot tersebut.

          Langkah terakhir adalah melakukan perhitungan nilai output pada data yang tidak memiliki nilai output. Dalam kasus anda berarti data yang diperlukan untuk menghitung prediksi pada bulan Okt-Des 2016

      • Al Hikmah

        Apakah data harus di normalisasi dulu atau boleh tidak? Kemudian untuk menentukan hidden unit apa harus dg metode k-means/SOM? Mohon penjelasannya. Terima kasih.

        • pip Penulis

          Data sebaiknya dinormalisasi dulu apabila antar data tidak memiliki rentang nilai yang setingkat,
          contoh: terdapat masing-masing data yang memiliki 2 kriteria. Kriteria pertama berada pada rentang 1-10. Kriteria kedua berada pada 50-100. Sebelum masuk dalam algoritma ini, sebaiknya data dinormalisasi pada rentang yang sama agar tidak ada kriteria yang lebih mendominasi nilai output. Rentang yang baru dapat anda tentukan sendiri, tidak harus mengikuti rentang yang sudah ada, tetapi bisa menggunakan rentang lain, misalnya 0 – 1 atau -1 – 1.

          Jika menggunakan algoritma ini secara murni, maka semua perhitungan dapat dilakukan tanpa menggunakan algoritma lain seperti Algoritma K-Means Clustering atau Algoritma SOM (Self Organizing Maps), kecuali jika permintaan kasus anda memang mengharuskan 2 atau lebih jumlah algoritma yang dipakai. Jika demikian maka saya harus meneliti kembali per kasus, karena setiap kasus pasti memiliki kebutuhan yang berbeda, sehingga cara penyesuaian penggabungan algoritma yang dilakukan juga akan berbeda.

        • Al Hikmah

          Oke terima kasih atas penjelasannya. Mas punya source code matlab.nya tidak? Saya pakainya matlab soalnya. Terima kasih.

        • pip Penulis

          Saya tidak memiliki contoh implementasi dalam bahasa pemrograman matlab, tetapi saya bisa bantu untuk melakukan konversi skrip atau mencari dan memodifikasi referensi skrip matlab yang sudah tersedia.

        • Al Hikmah

          Oke saya akan mencoba sendiri dulu. Punya literatur manualnya tentang rbf tidak mas? Yanh berisi rumus2 untuk perhitungannya. Terima kasih.

        • pip Penulis

          Saya tidak memiliki referensi jurnal mengenai algoritma ini. Cara implementasi yang saya bagikan pada pos ini adalah hasil pembelajaran dari beberapa referensi website dan skrip yang saya temukan sebelumnya. Mengenai referensi jurnal silahkan anda cari langsung melalui google.

  • Mahag

    terimakasih atas tulisan nya yg cukup mencerahkan
    mas, dicontoh ditulis ada 8 training data yang dijadikan acuan dalam melakukan perkiraan
    bagaimana jika training data dalam bentuk file dan terdiri dari banyak data?
    terimakasih sebelumnya

    • pip Penulis

      Jika data yang anda miliki tersedia dalam bentuk file maka tentunya anda harus melakukan pembacaan file dan mengambil data-data yang diperlukan dalam file tersebut. Saya rasa ini adalah langkah tambahan saja sebelum memasuki point pertama dalam penjelasan diatas.