Regresi Logistik dengan teknik MSO (Multi Swarm Optimization) 1


Regresi logistik / model logit, dalam statistika digunakan untuk prediksi probabilitas kejadian suatu peristiwa. Contoh yang dibahas kali ini adalah mengenai penentuan penerimaan pengajuan kredit sepeda motor baru berdasarkan kelompok data yang sudah ada.
Algoritma ini adalah variasi lain dari Regresi logistik dengan teknik Newton-Raphson yang sudah pernah dibahas sebelumnya. Pada contoh sebelumnya, teknik pembelajaran yang digunakan adalah teknik Newton-Raphson. Sedangkan pada pembahasan kali ini, teknik MSO (Multi Swarm Optimization) akan digunakan sebagai teknik pembelajaran.



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 awal adalah sebagai berikut:
Untuk Kriteria Jenis Kelamin:
Laki-laki dilambangkan dengan angka -1
Perempuan dilambangkan dengan angka +1
Untuk kriteria Nilai Hasil:
Jika kondisi Diterima, maka inputan data kolom adalah 1
Jika kondisi Ditolak, maka inputan data kolom adalah 0



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


Langkah-langkah penggunaan algoritma ini adalah

1. Lakukan normalisasi data untuk kriteria Umur dan Skor Kepribadian
Normalisasi data dihitung dengan rumus (data – (rata-rata kriteria tersebut)) / standar deviasi kriteria tersebut
Rata-rata adalah jumlah semua data dibagi dengan jumlah datanya
Standar deviasi adalah akar dari ((kuadrat dari (jumlah dari (data – rata-rata))) / jumlah data)
Penjelasan lebih lanjut dapat dilihat pada penjelasan skrip dibawah ini

2. Tentukan jumlah swarm yang digunakan dalam perhitungan
Diasumsikan dalam kasus ini, jumlah swarm yang digunakan adalah 4 swarm

3. Tentukan jumlah partikel yang digunakan oleh masing-masing swarm
Diasumsikan dalam kasus ini, jumlah partikel yang digunakan adalah 3 partikel

4. Tentukan jumlah perulangan / epoch yang digunakan oleh setiap partikel untuk melakukan proses
Diasumsikan dalam kasus ini, jumlah perulangan / epoch yang digunakan adalah 100 kali

5. Lakukan proses perhitungan matriks bobot terbaik
Teknik yang digunakan dalam perhitungan ini adalah teknik MSO (Multi Swarm Optimization)
Penjelasan tentang fungsi tersebut akan dibahas pada perhitungan dibawah (poin 5a – 5k)

5a. Tentukan dimensi permasalahan
Kolom dimensi akan ditambah dengan 1, karena indeks 0 adalah untuk menghitung b0 atau konstanta
Diasumsikan dalam kasus ini, dimensi bernilai 4 karena ada 3 dimensi yang akan dicari solusinya + 1 untuk menghitung b0

5b. Tentukan batas posisi minimal dan maksimal dari sebuah partikel
Nilai batas ini dimaksudkan agar posisi yang dicari tidak terlalu menyimpang keluar dari jalur
Diasumsikan dalam kasus ini, batas minimal posisi adalah -10 dan batas maksimal posisi adalah +10

5c. Tentukan batas kecepatan minimal dan maksimal dari sebuah partikel
Nilai batas ini dimaksudkan agar perpindahan posisi yang dicari tidak terlalu cepat sekali berpindah-pindah
Diasumsikan dalam kasus ini, batas minimal kecepatan adalah -1 dan batas maksimal kecepatan adalah +1

5d. Inisialisasi semua komponen yang dibutuhkan dalam perhitungan, yaitu partikel, swarm, dan multiswarm
Buat matriks Multiswarm sebanyak variabel jumlahSwarm
Buat matriks Swarm sebanyak variabel jumlahPartikel, dan masukkan masing-masing Swarm ke dalam matriks MultiSwarm
Buat partikel sebanyak variabel jumlahSwarm * jumlahPartikel, dan masukkan masing-masing Partikel ke dalam matriks Swarm
Beri nilai posisi partikel awal dengan posisi acak
Kemudian beri nilai kecepatan acak pada partikel tersebut
Penjelasan lebih detail dapat dilihat pada penjelasan skrip Class dibawah ini

* Agar dapat menjalankan skrip diatas, maka diperlukan 3 Class Tambahan yaitu Class Partikel, Swarm, dan Multiswarm.
Class Partikel berisi data seperti posisi, kecepatan, nilai kesalahan, posisi partikel terbaik, dan nilai kesalahan partikel terbaik.
Class Swarm berisi data seperti daftar partikel, posisi swarm terbaik, dan nilai kesalahan swarm terbaik.
Class Multiswarm berisi data seperti daftar swarm, posisi multiswarm terbaik, dan nilai kesalahan multiswarm terbaik
Deklarasi Ketiga Class diatas adalah sebagai berikut:

5e. Tentukan nilai kesalahan terendah (terbaik) sementara untuk posisi acak tersebut
Bandingkan semua nilai kesalahan pada masing-masing partikel, ambil nilai kesalahan terendah (terbaik)
Kemudian tentukan nilai kesalahan terendah pada masing-masing swarm
Dan terakhir, bandingkan nilai kesalahan terendah antar swarm untuk mendapatkan nilai kesalahan terendah pada multiswarm

* Gunakan Fungsi ini untuk menghitung nilai kesalahan
teknik yang digunakan adalah 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

5f. Tentukan bobot inertia (w), bobot kognitif (c1), bobot sosial (c2), dan bobot global (c3)
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

5g. Tentukan probabilitas sebuah partikel akan dibuang dan dibuat ulang
Diasumsikan dalam kasus ini, nilai probabilitas tersebut adalah 0.01

5h. Tentukan probabilitas sebuah partikel akan bertukar dengan partikel acak dalam swarm acak
Diasumsikan dalam kasus ini, nilai probabilitas tersebut adalah 0.005

5i. Lakukan proses pencarian posisi terbaik sebanyak jumlah perulangan (poin 5j dan 5k)

5j. Pada setiap kali perhitungan untuk swarm berikutnya, lakukan pengacakan urutan partikel pada masing-masing swarm
Sehingga perhitungan data tidak dimulai dari indeks partikel terendah sampai ke indeks tertinggi

5k. Lakukan perhitungan pada setiap partikel dalam masing-masing swarm
Perlu diingat bahwa urutan partikel yang dihitung terlebih dahulu adalah sesuai urutan pada pengacakan sebelumnya

5k1. Cari kecepatan perpindahan posisi yang baru dengan rumus:
v baru = (w * v skrg) + (c1 * r1 * (posisi partikel terbaik – posisi partikel skrg)) + (c2 * r2 * (posisi swarm terbaik – posisi partikel skrg) + (c3 * r3 * (posisi multiswarm terbaik – posisi partikel skrg))
Jika kecepatan yang baru ternyata diluar batas variabel minKecepatan dan maksKecepatan (-1 s/d 1), maka kembalikan kecepatan agar masuk dalam batas

5k2. Lakukan update posisi yang baru dengan cara posisi lama + kecepatan baru
Jika posisi yang baru ternyata diluar batas variabel minX dan maksX (-10 s/d 10), maka kembalikan posisinya agar masuk dalam batas

5k3. Hitung nilai kesalahan untuk posisi yang baru

5k4. Jika nilai kesalahan baru lebih rendah dari nilai kesalahan yang diperoleh partikel tersebut sebelumnya, maka ambil posisi yang baru sebagai posisi terbaik partikel tersebut

5k5. Jika nilai kesalahan baru ternyata lebih rendah dari nilai kesalahan swarm partikel tersebut, maka ambil posisi yang baru sebagai posisi terbaik swarm partikel tersebut

5k6. Jika nilai kesalahan baru ternyata lebih rendah dari nilai kesalahan multi swarm, maka ambil posisi yang baru sebagai posisi terbaik multiswarm

5k7. Cari angka acak antara 0 sampai dengan 1
Jika angka acak termasuk dalam probabilitas pembuangan partikel, maka lakukan pembuangan dan buat ulang partikel tersebut
Setelah itu hitung nilai kesalahan untuk posisi partikel yang baru dibuat ulang
Dan bandingkan nilai kesalahannya dengan nilai kesalahan partikel, swarm, dan multiswarm

5k8. Cari angka acak antara 0 sampai dengan 1
Jika angka acak termasuk dalam probabilitas pertukaran partikel, maka lakukan pertukaran partikel
Partikel akan ditukar dengan partikel acak pada swarm acak
Untuk masing-masing partikel yang telah ditukar posisinya, bandingkan nilai kesalahannya dengan nilai kesalahan swarm pada swarm yang baru

Setelah melalui perhitungan diatas, maka akan didapatkan bobot dengan nilai fungsi terendah

6. Lakukan perhitungan dari masing-masing data awal menggunakan matriks bobot yang sudah ditemukan

* Gunakan fungsi ini untuk menghitung nilai output
nilai output dihitung dengan rumus:
Pertama, tentukan nilai z, yaitu z = b0 + b1(x1) + b2(x2) + b3(x3)
Kemudian tentukan nilai akhir, yaitu Y = 1.0 / (1.0 + e^-z)
Penjelasan mengenai langkah-langkah perhitungan dapat dilihat pada keterangan skrip dibawah ini

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

8. 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

9. Lakukan perhitungan yang sama (poin 6 dan 7) untuk masing-masing data baru


Hasil akhir adalah: (klik untuk perbesar gambar)

cmd42


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 *

Satu pemikiran di “Regresi Logistik dengan teknik MSO (Multi Swarm Optimization)