Algoritma AdaBoost

Algoritma Adaptive Boosting adalah salah satu algoritma yang digunakan untuk pengambilan keputusan. Contoh yang dibahas kali ini adalah mengenai penentuan penerimaan pengajuan kredit sepeda motor baru berdasarkan kelompok data yang sudah ada.


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:
PelangganUmurJenis KelaminSkor KepribadianHasil
Pelanggan A44Laki-laki3.55Diterima
Pelanggan B52Perempuan4.71Diterima
Pelanggan C60Perempuan6.56Ditolak
Pelanggan D56Laki-laki6.8Ditolak
Pelanggan E51Laki-laki6.94Ditolak
Pelanggan F46Perempuan6.52Ditolak
Pelanggan G48Laki-laki4.25Diterima
Pelanggan H58Perempuan5.71Diterima
Contoh data awal 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:
PelangganUmurJenis KelaminSkor Kepribadian
Pelanggan I47Perempuan6.05
Pelanggan J52Laki-Laki5
Contoh data yang baru 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 Pengelompokan untuk masing-masing kriteria
Jumlah pengelompokan bebas tergantung keinginan
Contoh dalam kasus ini:
Kriteria umur hanya dikelompokan menjadi 3 bagian yaitu untuk umur dibawah 40, 41 sampai dengan 50, diatas 50
Kriteria jenis kelamin dikelompokan menjadi 2 bagian yaitu untuk laki-laki dan perempuan
Kriteria skor kepribadian dikelompokan menjadi 4 bagian yaitu untuk skor dibawah 4, 4 sampai dengan 5, 5 sampai dengan 6, diatas 6
Kriteria hasil dikelompokan menjadi 2 bagian yaitu untuk kelompok Diterima dan Ditolak
2. Tentukan matriks data untuk data yang sudah mengalami pengelompokan data sesuai kriteria diatas
3. Tentukan pelajar-pelajar yang didapatkan dari contoh data
Penjelasan lebih detail tentang fungsi ini dapat dilihat pada penjelasan dibawah ini (poin 3a – 3b)
Memasuki perhitungan pada fungsi TentukanPelajar
* Tentukan pelajar yang memenuhi kriteria (poin 3a)
3a. Lakukan perhitungan pada masing-masing kelompok kriteria yang ada (poin 3a1 – 3a3)
3a1. Tentukan nilai untuk masing-masing kelompok kriteria yang ada
Jika fungsi ini mengembalikan nilai 0, maka nilai tingkat kesalahan untuk kelompok kriteria tersebut adalah >= 0.5
Penjelasan lebih detail tentang fungsi ini dapat dilihat pada penjelasan skrip dibawah ini
3a2. Jika nilai hasil adalah 0, maka kelompok kriteria tersebut tidak memiliki nilai,
maka lewati kelompok kriteria ini dan lanjutkan ke kriteria berikutnya
3a3. Masukkan nilai hasil yang didapatkan ke dalam daftar pelajar
* Hitung nilai tingkat kesalahan masing-masing pelajar yang telah ditemukan (poin 3b)
3b. Lakukan perulangan pada masing-masing pelajar yang ditemukan (poin 3b1 – 3b2)
3b1. Lakukan perhitungan pada masing-masing data pelajar (poin 3b1a – 3b1c)
3b1a. Jika Jika aturan pelajar tidak berlaku pada data yang sedang dihitung, maka lanjutkan ke data berikutnya
Penjelasan lebih detail tentang fungsi ini dapat dilihat pada penjelasan skrip dibawah ini
* Gunakan fungsi ini untuk menentukan apakah aturan pelajar dapat diterapkan pada data
3b1b. Hitung jumlah data yang telah dihitung
3b1c. Jika nilai hasil perhitungan tidak sama dengan nilai hasil pada data awal,
Catat jumlah ketidakcocokan antara kedua nilai hasil tersebut
3b2. Hitung tingkat kesalahan dengan membagi jumlah ketidakcocokan data dengan jumlah data yang dihitung
4. Tentukan nilai alpha dari masing-masing pelajar
Alpha adalah tingkat kepercayaan dari para pelajar sebelum digunakan dalam perhitungan data yang baru
Penjelasan lebih detail tentang fungsi ini dapat dilihat pada penjelasan dibawah ini (poin 4a – 4c)
Memasuki perhitungan pada fungsi CariNilaiAlpha
4a. Inisialisasi bobot dengan nilai yang sama (1 / n) untuk semua (n) data
4b. Lakukan perulangan sampai kondisi terpenuhi (poin 4b1 – 4b7)
4b1. Hitung bobot nilai tingkat kesalahan untuk masing-masing pelajar
Penjelasan lebih detail tentang fungsi ini dapat dilihat pada penjelasan skrip dibawah ini (poin 4b1a)
Memasuki perhitungan pada fungsi UpdateEpsilons
* Update nilai epsilon dilakukan dengan cara menjumlahkan bobot nilai tingkat kesalahan
4b1a. Lakukan perulangan pada masing-masing data setiap pelajar yang ada (poin 4b1a1 – 4b1a3)
4b1a1. Jika aturan pelajar tidak berlaku pada data yang sedang dihitung, maka lanjutkan ke data berikutnya
Penjelasan tentang fungsi ini sudah dijelaskan pada penjelasan diatas
4b1a2. Jika nilai hasil data awal tidak sama dengan nilai hasil perhitungan pelajar tersebut,
maka tambahkan bobot data tersebut ke dalam nilai epsilon
4b1a3. Masukkan nilai epsilon yang telah ditemukan ke dalam nilai epsilon masing-masing pelajar
4b2. Cari indeks pelajar terbaik dan nilai epsilon nya
Penjelasan lebih detail tentang fungsi ini dapat dilihat pada penjelasan skrip dibawah ini (poin 4b2a – 4b2e)
Memasuki perhitungan pada fungsi cariPelajarTerbaik
4b2a. Pastikan paling sedikit ada 1 pelajar yang masih belum terpakai
4b2b. Lakukan perhitungan pada masing-masing pelajar yang ada (poin 4b2b1 – 4b2b2)
4b2b1. Jika pelajar ini sudah terpakai, maka lanjutkan perhitungan ke pelajar berikutnya
4b2b2. Jika nilai epsilon pelajar ini lebih rendah dari nilai epsilon terendah,
maka ambil indeks pelajar ini sebagai indeks pelajar terbaik
4b2c. Tampilkan pesan kesalahan apabila nilai epsilon kurang dari 0
4b2d. Tampilkan pesan kesalahan apabila tidak ada pelajar yang ditemukan
4b2e. Lakukan update nilai epsilon dan beri tanda pada pelajar terbaik bahwa pelajar tersebut sudah terpakai
4b3. Jika bobot nilai tingkat kesalahan mendekati 0.5, maka tidak perlu melanjutkan perhitungan
4b4. Tambahkan pelajar dengan indeks terbaik ke dalam daftar pelajar terbaik
4b5. Hitung nilai alpha pada iterasi ke t
Nilai alphaT akan semakin tinggi apabila nilai epsilonT semakin rendah
Kemudian masukkan nilai alpha tersebut ke dalam daftar pelajar dengan indeks terbaik
4b6. Lakukan update pada data yang cocok dengan aturan pelajar yang memiliki indeks terbaik
Penjelasan lebih detail tentang fungsi ini dapat dilihat pada penjelasan skrip dibawah ini (poin 4b6a – 4b6c)
Memasuki perhitungan pada fungsi UpdateBobot
* nilai bobot yang baru dihitung dengan rumus:
bobot baru = bobot lama * konstanta e dipangkatkan (-alpha * nilai hasil data sebenarnya * nilai hasil pelajar)
4b6a. Lakukan perhitungan pada masing-masing bobot data (poin 4b6a1 – 4b6a2)
4b6a1. Jika aturan pelajar tidak berlaku pada data yang sedang dihitung, maka lanjutkan ke data berikutnya
Penjelasan tentang fungsi ini sudah dijelaskan pada penjelasan diatas
4b6a2. Hitung nilai bobot sementara yang baru menggunakan rumus yang sudah dijelaskan sebelumnya
4b6b. Jumlahkan semua nilai bobot baru yang telah dihitung sebelumnya
4b6c. Lakukan normalisasi bobot dengan cara membagi masing-masing bobot dengan jumlah bobotnya
4b7. Hentikan perhitungan jika semua pelajar sudah terpakai
4c. Urutkan indeks pelajar menjadi 0 sampai dengan 5 agar nilai pengembalian mudah dibaca (tidak harus dilakukan)
5. Tentukan pengelompokan data untuk masing-masing data baru
Penjelasan lebih detail tentang fungsi ini dapat dilihat pada penjelasan dibawah ini (poin 5a – 5b)
Memasuki perhitungan pada fungsi Pengelompokan
5a. Lakukan perhitungan pada setiap pelajar terbaik yang ada (poin 5a1 – 5a2)
5a1. Jika aturan pelajar ini tidak berlaku pada data, maka lanjutkan perhitungan ke pelajar berikutnya karena pelajar ini tidak dapat melakukan voting
Penjelasan tentang fungsi ini sudah dijelaskan pada penjelasan diatas
5a2. Jumlahkan semua nilai vote untuk semua pelajar yang memenuhi kriteria data baru
5b. Lakukan pengelompokan data berdasarkan nilai vote positif dan negatif
* Agar dapat menjalankan skrip diatas, maka diperlukan sebuah Class Pelajar untuk menampung semua data pelajar, yaitu kriteria, nilai kriteria, epsilon, alpha, dll. Deklarasi Class Pelajar adalah sebagai berikut:

Komentar

Posting Komentar

Postingan populer dari blog ini

Algoritma Tipe Data