Algoritma AdaBoost (Adaptive Boosting) 20


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:

Dim data(9)() As String
data(0) = New String() {44, "Laki-laki", 3.55, "Diterima"}
data(1) = New String() {52, "Perempuan", 4.71, "Diterima"}
data(2) = New String() {60, "Perempuan", 6.56, "Ditolak"}
data(3) = New String() {56, "Laki-laki", 6.8, "Ditolak"}
data(4) = New String() {51, "Laki-laki", 6.94, "Ditolak"}
data(5) = New String() {46, "Perempuan", 6.52, "Ditolak"}
data(6) = New String() {48, "Laki-laki", 4.25, "Diterima"}
data(7) = New String() {58, "Perempuan", 5.71, "Diterima"}



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

data(8) = New String() {47, "Perempuan", 6.05, ""}
data(9) = New String() {52, "Laki-laki", 5, ""}

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

Dim kriteria() As String = {"Umur", "JK", "Skor", "Hasil"}

Dim kelompokKriteria(kriteria.Length - 1)() As String
kelompokKriteria(0) = New String() {"Dibawah 40", "41 s/d 50", "Diatas 50"}
kelompokKriteria(1) = New String() {"Laki-laki", "Perempuan"}
kelompokKriteria(2) = New String() {"Dibawah 4", "4 s/d 5", "5 s/d 6", "Diatas 6"}
kelompokKriteria(3) = New String() {"Ditolak", "Diterima"}

2. Tentukan matriks data untuk data yang sudah mengalami pengelompokan data sesuai kriteria diatas

Dim rows As Integer = data.Length
Dim cols As Integer = data(0).Length
Dim dataAwal(rows - 1)() As Integer
For i = 0 To rows - 1
	dataAwal(i) = New Integer(cols - 1) {}
Next i

For i = 0 To data.Length - 1
	For j = 0 To data(i).Length - 1
		Dim v As Integer = -1

		For k = 0 To kelompokKriteria(j).Length - 1
			If j = 0 Then
				If data(i)(j) < 40 Then
					v = 0
				ElseIf data(i)(j) < 50 Then
					v = 1
				ElseIf data(i)(j) >= 50 Then
					v = 2
				End If

			ElseIf j = 1 Then
				If data(i)(j) = kelompokKriteria(j)(k) Then
					v = k
				End If

			ElseIf j = 2 Then
				If data(i)(j) < 4 Then
					v = 0
				ElseIf data(i)(j) < 5 Then
					v = 1
				ElseIf data(i)(j) < 6 Then
					v = 2
				ElseIf data(i)(j) >= 6 Then
					v = 3
				End If

			ElseIf j = 3 Then
				If data(i)(j) = kelompokKriteria(j)(k) Then
					v = k
					If v = 0 Then v = -1
				End If
			End If
		Next k

		dataAwal(i)(j) = v
	Next j
Next i

3. Tentukan pelajar-pelajar yang didapatkan dari contoh data
Penjelasan lebih detail tentang fungsi ini dapat dilihat pada penjelasan dibawah ini (poin 3a – 3b)

Dim daftarPelajar As List(Of Pelajar) = TentukanPelajar(kelompokKriteria, contohData)

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)

For k = 0 To kelompokKriteria.Length - 2
	For n = 0 To kelompokKriteria(k).Length - 1
	. . .

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

Dim nilaiHasil As Integer = hitungKemungkinanBesar(k, n, data)

3a2. Jika nilai hasil adalah 0, maka kelompok kriteria tersebut tidak memiliki nilai,
maka lewati kelompok kriteria ini dan lanjutkan ke kriteria berikutnya

If nilaiHasil = 0 Then Continue For

3a3. Masukkan nilai hasil yang didapatkan ke dalam daftar pelajar

Dim pelajar As New Pelajar(k, n, nilaiHasil, -1.0, -1.0, -1.0)
hasil.Add(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)

For i = 0 To hasil.Count - 1
. . .

3b1. Lakukan perhitungan pada masing-masing data pelajar (poin 3b1a – 3b1c)

For k = 0 To data.Length - 1
. . .

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

If CekAturanPelajar(hasil(i), data(k)) = False Then Continue For

* Gunakan fungsi ini untuk menentukan apakah aturan pelajar dapat diterapkan pada data

Private Function CekAturanPelajar(ByVal Pelajar As Pelajar, ByVal data() As Integer) As Boolean
	Dim ti As Integer = Pelajar.kriteria
	If data(ti) = Pelajar.nilaiKriteria Then
		Return True
	Else
		Return False
	End If
End Function

3b1b. Hitung jumlah data yang telah dihitung

jumlahData = jumlahData + 1

3b1c. Jika nilai hasil perhitungan tidak sama dengan nilai hasil pada data awal,
Catat jumlah ketidakcocokan antara kedua nilai hasil tersebut

Dim act As Integer = data(k)(data(k).Length - 1)
If hasil(i).nilaiHasil <> act Then jumlahDataSalah = jumlahDataSalah + 1

3b2. Hitung tingkat kesalahan dengan membagi jumlah ketidakcocokan data dengan jumlah data yang dihitung

If jumlahData = 0 Then
	hasil(i).tingkatKesalahan = 0.0
Else
	hasil(i).tingkatKesalahan = (jumlahDataSalah * 1.0) / jumlahData
End If

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)

CariNilaiAlpha(contohData, daftarPelajar, daftarPelajarTerbaik)

Memasuki perhitungan pada fungsi CariNilaiAlpha

4a. Inisialisasi bobot dengan nilai yang sama (1 / n) untuk semua (n) data

Dim bobot(data.Length - 1) As Double
For i = 0 To bobot.Length - 1
	bobot(i) = 1.0 / bobot.Length
Next i

4b. Lakukan perulangan sampai kondisi terpenuhi (poin 4b1 – 4b7)

Do While selesai = False
. . .

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)

UpdateEpsilons(daftarPelajar, data, bobot)

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)

For i = 0 To daftarPelajar.Count - 1
	For k = 0 To data.Length - 1
	. . .

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

If CekAturanPelajar(daftarPelajar(i), data(k)) = False Then Continue For

4b1a2. Jika nilai hasil data awal tidak sama dengan nilai hasil perhitungan pelajar tersebut,
maka tambahkan bobot data tersebut ke dalam nilai epsilon

Dim nilaiSebenarnya As Integer = data(k)(data(k).Length - 1)    'Nilai hasil dari matriks data
Dim nilaiHasilPelajar As Integer = daftarPelajar(i).nilaiHasil  'Nilai hasil dari pelajar
If nilaiSebenarnya <> nilaiHasilPelajar Then
	epsilon = epsilon + bobot(k)
End If

4b1a3. Masukkan nilai epsilon yang telah ditemukan ke dalam nilai epsilon masing-masing pelajar

daftarPelajar(i).epsilon = epsilon

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)

Dim indeksTerbaik As Integer = cariPelajarTerbaik(daftarPelajar, epsilonT, daftarPelajarTerpakai)

Memasuki perhitungan pada fungsi cariPelajarTerbaik

4b2a. Pastikan paling sedikit ada 1 pelajar yang masih belum terpakai

Dim x As Integer = Array.IndexOf(daftarPelajarTerpakai, 0)
If x < 0 Then
	Throw New Exception("Pada fungsi CariPelajarTerbaik, tidak ditemukan pelajar yang belum terpakai")
End If

4b2b. Lakukan perhitungan pada masing-masing pelajar yang ada (poin 4b2b1 – 4b2b2)

For i = 0 To daftarPelajar.Count - 1
. . .

4b2b1. Jika pelajar ini sudah terpakai, maka lanjutkan perhitungan ke pelajar berikutnya

If daftarPelajarTerpakai(i) = 1 Then Continue For

4b2b2. Jika nilai epsilon pelajar ini lebih rendah dari nilai epsilon terendah,
maka ambil indeks pelajar ini sebagai indeks pelajar terbaik

If daftarPelajar(i).epsilon < epsilonTerendah Then
	epsilonTerendah = daftarPelajar(i).epsilon
	indeksTerbaik = i
End If

4b2c. Tampilkan pesan kesalahan apabila nilai epsilon kurang dari 0

If epsilonTerendah < 0.0 Then
	Throw New Exception("Pada fungsi CariPelajarTerbaik, nilai epsilon tidak boleh negatif")
End If

4b2d. Tampilkan pesan kesalahan apabila tidak ada pelajar yang ditemukan

If indeksTerbaik = -1 Then
	Throw New Exception("Pada fungsi CariPelajarTerbaik, pelajar terbaik tidak ditemukan")
End If

4b2e. Lakukan update nilai epsilon dan beri tanda pada pelajar terbaik bahwa pelajar tersebut sudah terpakai

epsilon = epsilonTerendah
daftarPelajarTerpakai(indeksTerbaik) = 1
Return indeksTerbaik

4b3. Jika bobot nilai tingkat kesalahan mendekati 0.5, maka tidak perlu melanjutkan perhitungan

If Math.Abs(0.5 - epsilonT) <= 0.00001 Then Exit Do

4b4. Tambahkan pelajar dengan indeks terbaik ke dalam daftar pelajar terbaik

daftarPelajarTerbaik.Add(indeksTerbaik)

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

Dim alphaT As Double = 0.5 * Math.Log((1.0 - epsilonT) / epsilonT)
daftarPelajar(indeksTerbaik).alpha = alphaT

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)

UpdateBobot(bobot, data, daftarPelajar, alphaT, indeksTerbaik)

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)

For i = 0 To bobot.Length - 1
. . .

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

If CekAturanPelajar(daftarPelajar(indeksTerbaik), data(i)) = False Then Continue For

4b6a2. Hitung nilai bobot sementara yang baru menggunakan rumus yang sudah dijelaskan sebelumnya

Dim nilaiSebenarnya As Integer = data(i)(data(0).Length - 1) 'bernilai -1 atau +1
bobot(i) = bobot(i) * Math.Exp(-alphaT * nilaiSebenarnya * daftarPelajar(indeksTerbaik).nilaiHasil)

4b6b. Jumlahkan semua nilai bobot baru yang telah dihitung sebelumnya

Dim Z As Double = 0.0
For i = 0 To bobot.Length - 1
	Z = Z + bobot(i)
Next i

4b6c. Lakukan normalisasi bobot dengan cara membagi masing-masing bobot dengan jumlah bobotnya

For i = 0 To bobot.Length - 1
	bobot(i) = bobot(i) / Z
Next i

4b7. Hentikan perhitungan jika semua pelajar sudah terpakai

t = t + 1
If t = daftarPelajar.Count Then selesai = True

4c. Urutkan indeks pelajar menjadi 0 sampai dengan 5 agar nilai pengembalian mudah dibaca (tidak harus dilakukan)

daftarPelajarTerbaik.Sort()

5. Tentukan pengelompokan data untuk masing-masing data baru
Penjelasan lebih detail tentang fungsi ini dapat dilihat pada penjelasan dibawah ini (poin 5a – 5b)

Dim Y As Integer = Pengelompokan(dataBaru(i), daftarPelajar, daftarPelajarTerbaik)

Memasuki perhitungan pada fungsi Pengelompokan

5a. Lakukan perhitungan pada setiap pelajar terbaik yang ada (poin 5a1 – 5a2)

For t = 0 To daftarPelajarTerbaik.Count - 1
. . .

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

If CekAturanPelajar(daftarPelajar(idx), data) = False Then Continue For

5a2. Jumlahkan semua nilai vote untuk semua pelajar yang memenuhi kriteria data baru

Dim vote As Double = daftarPelajar(idx).nilaiHasil * daftarPelajar(idx).alpha
jumlahVote += vote

5b. Lakukan pengelompokan data berdasarkan nilai vote positif dan negatif

If jumlahVote > 0.0 Then
	Return 1
ElseIf jumlahVote < 0.0 Then
	Return -1
Else
	Return 0
End If

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

Public Class Pelajar
    Public kriteria As Integer          'Kriteria: Umur, Jenis kelamin, Skor Kepribadian
    Public nilaiKriteria As Integer     'Nilai Kriteria: 50, ..., Laki-laki, ..., 5.0, ...
    Public nilaiHasil As Integer        'Nilai hasil: -1 (Ditolak) atau +1 (Diterima)
    Public tingkatKesalahan As Double   'Nilai tingkat kesalahan pelajar dalam menganalisa data
    Public epsilon As Double            'Nilai bobot tingkat kesalahan (karena beda data awal beda bobotnya)
    Public alpha As Double              'Nilai penentu bobot pelajar

    Public Sub New(ByVal kriteria As Integer, ByVal nilaiKriteria As Integer, ByVal nilaiHasil As Integer, ByVal tingkatKesalahan As Double, ByVal epsilon As Double, ByVal alpha As Double)
        Me.kriteria = kriteria
        Me.nilaiKriteria = nilaiKriteria
        Me.nilaiHasil = nilaiHasil
        Me.tingkatKesalahan = tingkatKesalahan
        Me.epsilon = epsilon
        Me.alpha = alpha
    End Sub
End Class

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 *

20 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/

  • ismail

    mohon saran dikerjakan juga dengan cara manual, karena membaca algoritma manualnya saja sudah sulit, lebih lagi mengextrak dari coding bahasa pemograman yang blm tentu juga menguasai.