Algoritma AdaBoost (Adaptive Boosting) 18


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:

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:



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


Hasil akhir adalah: (klik untuk perbesar gambar)

cmd32b


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 *

18 pemikiran di “Algoritma AdaBoost (Adaptive Boosting)

  • ade

    Pada Tulisan Algoritma AdaBoost (Adaptive Boosting)

    saya masih belum jelas dengan perhitungan alpha nya ? bisa dikasih contoh satu saja cara mendapatkannya ? dari contoh nilai alpha sebagai berikut : [0] = 0.97 , [1] = 0,58 , [2] = 6.91 , [3] = 6.91 , [4] = 6.91 , [5] = 6.91

    misalnya untuk alpha [0] = 0.97 , gimana cara mendapatkan nilai 0.97 ?.. maap alur algoritma belum paham untuk perhitungan alpha.

    terimakasih

    • pip Penulis

      Pada setiap pelajar yang ditemukan, proses utama yang perlu dilakukan adalah menghitung nilai bobot dengan rumus:
      Bobot = bobot * Exp(-alpha * nilai sebenarnya * nilai hasil pelajar terbaik)
      Sedangkan alpha dihitung dengan rumus:
      Alpha = 0.5 * Ln((1-epsilon) / epsilon)
      Dan Epsilon adalah jumlah dari bobot aturan-aturan yang memenuhi syarat pelajar

      Dari sini saja sudah terlihat bahwa ketiga variabel ini membentuk loop (bobot -> alpha -> epsilon -> bobot), sehingga nilainya akan selalu berubah-ubah pada setiap kali perhitungan pelajar. Sangat sulit untuk mendeskripsikan sebuah sebuah contoh kecil karena semuanya akan bersambungan dengan data-data yang lain.

      * Untuk menjawab pertanyaan tersebut, saya menggunakan fitur debug dan mendapatkan nilai epsilon pelajar tersebut adalah epsilon = 0.125, dan kemudian memasukkan nilai ini ke dalam rumus alpha
      Alpha = 0.5 * Ln((1-epsilon) / epsilon)
      Dengan menggunakan rumus yang sama pada Microsoft Excel, maka akan didapatkan hasil 0.972955075 dan dibulatkan menjadi 0.97.

      • ade

        terimakasih jawabannya. tapi masih bingung..maap., nanya lagi ya.. hehe

        klo boleh dikasih contoh 1 kali perhitungan aja berdasarkan data diatas…
        mis :
        Bobot = bobot awal * Exp(-alpha * nilai sebenarnya * nilai hasil pelajar terbaik)
        dari rumus diatas maka :
        bobot awal = 1/8 (karena datanya ada 8)
        alpha = ? –> didapat dari 0.5 * Ln((1-epsilon) / epsilon)
        epsilon = ? –> jumlah dari bobot aturan-aturan yang memenuhi syarat pelajar
        nilai sebenarnya = ? –> ini yang mana
        nilai hasil pelajar terbaik ? –> ini yang mana

        terimakasih

        • pip Penulis

          Sebetulnya sulit sekali untuk menjabarkan contoh yang anda maksud, tetapi saya akan jawab sebisa mungkin
          Bobot pada awal mulanya adalah menggunakan nilai yang sama untuk masing-masing data yang tersedia, sehingga benar sekali jawaban anda 1/8.
          Kemudian lakukan perhitungan pada masing-masing pelajar secara berurutan, misalnya sebagai contoh saya gunakan pelajar #1
          Masukkan aturan pelajar #1 pada semua data. Ada 3 data yang memenuhi syarat yaitu #A (diterima), #F (ditolak), dan #G (diterima). Nilai epsilon pelajar ini adalah sesuai dengan jumlah nilai bobot data yang hasilnya tidak sesuai (nilai hasil pelajar #1 adalah diterima), dalam kasus ini hanya #F yang hasilnya tidak sesuai dengan aturan pelajar #1, sehingga nilai epsionnya adalah nilai bobot #F (masih 1/8)
          Kemudian hitung nilai alpha menggunakan rumus alpha = 0.5 * Ln((1-epsilon) / epsilon). Dengan menggunakan Excel maka didapatkan nilai alpha untuk pelajar #1 adalah -0.557858878
          Setelah mendapatkan nilai alpha dari pelajar #1, maka lakukan update nilai bobot pada data yang memenuhi hasil pelajar #1 (diterima), yaitu data #A dan data #G. Rumus yang digunakan adalah Bobot = bobot * Exp(-alpha * nilai sebenarnya * nilai hasil pelajar terbaik). Nilai sebenarnya adalah hasil data tersebut (diterima). Nilai hasil pelajar terbaik adalah nilai hasil pelajar #1 (diterima). Hasil diterima akan diterjemahkan menjadi angka plus (+1), dan hasil ditolak akan diterjemahkan menjadi angka negatif (-1). Sehingga bobot yang baru untuk data #A dan #G adalah bobot = 1/8 * Exp(-0.557858878*+1*+1)

          Ini adalah contoh perhitungan sederhananya. Implementasinya tidak semudah ini.
          Pada saat proses pencarian pelajar, pelajar yang terpilih adalah pelajar dengan nilai epsilon terendah. Dalam kasus diatas pelajar #1 memiliki nilai epsilon 1/8. Jika ada pelajar lain yang nilai epsilonnya lebih rendah dari 1/8, maka pelajar itu yang terpilih untuk dihitung terlebih dahulu.
          Kemudian jika ada pelajar yang nilai epsilonnya sudah mendekati 0.5, maka sisa pelajar tidak perlu dihitung karena semua data pelajar yang sudah terpilih sudah mampu mewakili perhitungan nilai vote untuk data baru.
          Dan perlu diperhatikan, angka bobot, alpha, dan epsilon akan selalu berubah-ubah sesuai data pelajar yang dihitung. Jika perhitungan diatas masih bisa menghasilkan angka desimal dengan sedikit angka dibelakang koma, maka perhitungan selanjutnya akan menjadi angka desimal dengan banyak angka dibelakang koma. Itulah sebabnya mengapa penjelasan “contoh kecil” algoritma ini tidak bisa semudah itu.

  • tkmn

    Maaf saya mau tanya. Apa anda tahu penjelasan untuk algoritma Real Adaboost? karena di Real Adaboost, untuk perhitungan alphanya, rumusnya tidak menggunakan epsilon, melainkan probabilitas kepadatan distribusi, dan saya tidak mengerti bagaimana cara kerjanya. Apa anda bisa menjelaskan? Terima kasih

    • pip Penulis

      Jika melihat pernyataan anda tentang penggantian nilai alpha yang tidak menggunakan epsilon, maka akan berakibat variabel epsilon menjadi tidak ada gunanya dan tidak perlu dihitung. Hal tersebut berakibat pada nilai bobot yang tidak dapat diupdate karena epsilonnya bernilai tetap. Keseluruhan sistem yang ada ini menjadi hancur. Sehingga pasti dalam sistem yang baru terdapat manipulasi di beberapa cara perhitungan agar dapat menyesuaikan sistem yang baru. Karena tidak ada penjelasan mengenai sistem yang baru, saya belum bisa membantu menjelaskan.

      • tkmn

        Ini rumus untuk peng-update-an bobot α_t=1/2 ln((Wj(+1)+ε)/(Wj(-1)^j+ε)), dimana Wj(+1) dan Wj(-1) didapatkan dari perhitungan fitur sampel training x_i dan menerapkan bobot sampel training D_t (i) ke bilangan BIN j dari histogram one-dimensional yang berhubungan dengan nilai fitur. Mungkin anda bisa menjelaskan. Terima kasih.

        • pip Penulis

          Rumus alpha yang saya gunakan disini adalah
          α_t = 1/2 * Ln((1-ε) / ε)
          Sedangkan rumus yang anda gunakan adalah
          α_t = 1/2 * ln((Wj(+1)+ε)/(Wj(-1)^j+ε))

          Sehingga saya kira rumusnya dapat langsung disubstitusi menggunakan rumus yang baru karena komponen untuk perhitungan rumus sudah tersedia semua. Variabel Wj adalah variabel bobot yang tersedia pada masing-masing pelajar, yang nilainya diupdate menggunakan fungsi UpdateBobot

  • amel

    saya masih kurang paham dengan langkah kedua,bagaaimana cara menentukan matriks data untuk data yang sudah mengalami pengelompokan data sesuai kriteria diatas secara manualnya

    • pip Penulis

      Pengelompokan data bertujuan untuk mengubah semua jenis kriteria menjadi bertipe numerik, karena semua perhitungan bobot, epsilon, alpha, dan nilai vote hanya dapat dilakukan pada data bertipe numerik. Mengenai cara pengelompokan data, tentu saja dapat diganti sesuka hati, menyesuaikan dari masing-masing contoh kasus yang dihadapi.

      Saya gunakan contoh data pertama
      44, Laki-laki, 3.55, Diterima

      Kriteria umur 44 termasuk dalam kelompok 41 s/d 50 yang berada pada posisi kedua, sehingga nilai matriksnya adalah 1 (karena indeks pertama dimulai dari angka 0)
      Kriteria jenis kelamin Laki-laki termasuk dalam kelompok Laki-laki yang berada pada posisi pertama, sehingga nilai matriksnya adalah 0
      Kriteria Skor Kepribadian 3.55 termasuk dalam kelompok Dibawah 4 yang berada pada posisi pertama, sehingga nilai matriksnya adalah 0
      Kriteria Hasil Diterima termasuk dalam kelompok Diterima, yang berada pada posisi kedua, sehingga nilai matriksnya adalah +1

      Maka nilai matriks untuk data ini adalah 1, 0, 0, +1

    • pip Penulis

      Pembahasan kasus pada skrip ini dari awal sampai akhir masih tetap menggunakan kasus kredit sepeda motor dan tidak berpindah menjadi kasus lain. Teknik implementasi algoritma adalah menggunakan pelajar untuk mempelajari data yang sudah ada, dan kemudian menggunakan pelajar-pelajar tersebut untuk memprediksikan data baru.

    • pip Penulis

      Mohon maaf contoh perhitungan tidak dapat dipermudah karena merupakan bagian kesatuan dari sistem sehingga tidak dapat hanya diambil sebagian saja. Jika anda tertarik untuk mengetahui cara perhitungan berdasarkan kasus yang anda miliki, maka silahkan menghubungi kami dengan nomor kontak yang tersedia pada halaman hubungi kami https://piptools.net/hubungi-kami/