BAB II LANDASAN TEORI
2.2 Tinjauan Pustaka
2.2.5 Pendekatan Level Algoritma
Boosting telah menunjukkan dapat meningkatkan kinerja pengklasifikasi
dalam banyak situasi, termasuk ketika data tidak seimbang (Seiffert, Khoshgoftaar, Hulse, & Napolitano, 2008, p. 445). Boosting adalah metode umum untuk meningkatkan kinerja algoritma belajar apapun. Secara teori, boosting dapat digunakan untuk mengurangi kesalahan algoritma belajar "lemah" secara signifikan.
AdaBoost adalah kependekan dari Adaptive Boosting (Afza, Farid, & Rahman, 2011, p. 105) (Harrington, 2012, p. 132), merupakan algoritma machine
learning yang dirumuskan oleh Yoav Freund and Robert Schapire. Algoritma
AdaBoost adalah algoritma yang berusaha membangun pengklasifikasi kuat dengan mengombinasikan sejumlah pengklasifikasi sederhana atau lemah secara linier. Algoritma klasifikasi kuat menggunakan teknik seperti ANN (Artificial
Neural Network), SVM (Support Vector Machines), dan lain-lain, sedangkan
algoritma klasifikasi lemah menggunakan teknik seperti Decision Trees, Bayesian
Networks, Random Forests, dan lain-lain (Korada, Kumar, & Deekshitulu, 2012,
p. 64). Algoritma AdaBoost ini menggunakan prinsip dari pohon keputusan (decision tree), pohon keputusan yang digunakan dapat berupa satu tingkat/cabang keputusan (decision stump) atau beberapa tingkat (dapat mencapai tiga tingkat).
Persamaan AdaBoost adalah:
55 Di mana:
βπ‘(π₯) : Pengklasifikasi dasar atau lemah βπ‘ : Tingkat pembelajaran (learning rate)
F(x) : Hasil, berupa pengklasifikasi kuat atau akhir
Kelebihan dari algorithma AdaBoost:
a. Mampu mengurangi nilai bias maupun perbedaan pada pengklasifikasi lemah (weak classifier)
b. Memiliki kemampuan generalisasi yang baik
c. Keluaran (output) AdaBoost mengonversi ke logaritma dengan rasio terdekat
d. AdaBoost dapat dilihat sebagai pemilih fitur dengan strategi berprinsip (minimalisasi dari batas atas error)
e. AdaBoost dekat dengan pembuatan keputusan linier
Algoritma AdaBoost (Zhou & Yu, AdaBoost, 2009, p. 130):
Masukan:
Dataset D = {(x1,y1), (x2,y2), ..., (xm,ym)}; Algoritma pembelajaran lemah (Weak Learner) L; Sebuah integer T yang menspesifikasi banyaknya iterasi.
Proses:
Inisialisasi berat distribusi: π·1(π) = 1
π untuk semua π = 1, β¦ , π for t=1, ... , T:
Melatih pembelajar dasar/lemah ht dari D menggunakan distribusi Dt
ht = L(D,Dt)
Mengkalkulasi kesalahan dari ht: ππ‘ = πππ₯~π·π‘,π¦πΌ[βπ‘(π₯π) β π¦π] if Ξ΅t > 0.5 then break
Menetapkan berat dari ht: βπ‘= 1
2ln (1βππ‘
56 π·π‘+1(π) =π·π‘(π)
ππ‘ x {
ππ₯π(ββπ‘) ππ βπ‘(π₯π) = π¦π ππ₯π(βπ‘) ππ βπ‘(π) β π¦π
Meng-update distribusi, di mana Zt adalah faktor normalisasi yang mengaktifkan Dt+1 menjadi distribusi:
π·π‘(π)ππ₯π(ββπ‘ π¦πβπ‘(π₯π)) ππ‘ end Keluaran: Pengklasifikasi akhir/kuat: π»(π₯) = π πππ(βπ βπ‘ βπ‘(π₯) π‘=1 ) (2. 19)
Kesalahan diukur dengan memperhatikan distribusi Dt di mana algoritma pembelajar lemah dilatih. Dalam prakteknya, algoritma pembelajar lemah mungkin merupakan suatu algoritma yang dapat menggunakan bobot Dt pada sampel pelatihan. Atau, bila hal ini tidak memungkinan, bagian dari sampel pelatihan dapat di-resampling menurut Dt, dan hasil dari resampling yang tidak berbobot (unweighted) dapat digunakan untuk melatih algoritma pembelajar yang lemah.
AdaBoost menghasilkan urutan hipotesis dan menggabungkannya dengan bobot, yang dapat dianggap sebagai kombinasi bobot tambahan dalam bentuk persamaan 2.18.
π»(π₯) = βπ βπ‘ βπ‘(π₯)
π‘=1 (2. 20)
Dari pandangan ini, AdaBoost sebenarnya memecahkan dua masalah, yaitu bagaimana untuk menghasilkan hipotesis ht dan bagaimana menentukan bobot yang tepat Ξ±t.
Dalam rangka untuk memiliki proses pengurangan kesalahan yang sangat efisien, maka dicoba meminimalkan kerugian eksponensial.
57
Kerugian dari setiap contoh dapat terurai, yang disebut kerugian titik bijaksana (pointwise), seperti persamaan 2.20.
πππ π ππ₯π(π»+β β | π₯) = πΈπ¦[πβπ¦(π»(π₯)+πΌβ(π₯)|π₯] (2. 22)
Karena y dan h(x) harus +1 atau -1, maka harapan dapat diperluas sebagai:
πππ π ππ₯π(π»+β β | π₯) = πβπ¦π»(π₯)(πββπ(π¦ = β(π₯)|π₯) + πβπ(π¦ β β(π₯)|π₯)) (2. 23)
Misalkan telah dihasilkan h, dan dengan berat β yang meminimalkan kerugian dapat ditemukan ketika turunan dari kerugian sama dengan nol, yaitu:
ππππ π ππ₯π(π»+ββ | π₯)
πΏπΌ = πβπ¦π»(π₯)(πββπ(π¦ = β(π₯)|π₯) + πβπ(π¦ β β(π₯)|π₯)) (2. 24) = 0
Maka solusinya adalah:
β =1
2lnπ(π¦ = β(π₯)|π₯)
π(π¦ β β(π₯)|π₯) = 1
2ln1βπ(π¦ β β(π₯)|π₯)
π(π¦ β β(π₯)|π₯) (2. 25)
Dengan mengambil harapan atas x, yaitu, memecahkan ππππ π ππ₯π(π»+ββ | π₯)
πΏπΌ ,
dan menunjukkan π = πΈπ₯~π·[π¦ β β(π₯)], maka didapatkan persamaan 2.24.
β =1
2ln1βπ
π (2. 26)
yang merupakan cara untuk menentukan Ξ±t di AdaBoost.
Selanjutnya mempertimbangkan bagaimana untuk menghasilkan h. Mengingat algoritma pembelajaran dasar, AdaBoost memanggilnya untuk menghasilkan hipotesis dari distribusi contoh tertentu. Jadi, hanya perlu dipertimbangkan apa hipotesis yang diinginkan untuk putaran berikutnya, dan kemudian menghasilkan distribusi contoh untuk mencapai hipotesis ini.
58
Kita dapat memperluas kerugian pointwise (titik bijaksana) untuk urutan kedua tentang h(x) = 0, ketika memperbaiki Ξ± = 1,
πππ π ππ₯π(π» + β | π₯) β πΈπ¦[πβπ¦π»(π₯)(1 β π¦β(π₯) + π¦2β(π₯)2/2)|π₯] (2. 27) πππ π ππ₯π(π» + β | π₯) β πΈπ¦[πβπ¦π»(π₯)(1 β π¦β(π₯) + 1/2)|π₯] (2. 28)
sejak y2 = 1 dan h(x)2=1.
Maka hipotesis yang sempurna adalah:
ββ(π₯) =arg πππ β πππ π ππ₯π(π» + β | π₯) = arg πππ₯ β πΈπ¦[πβπ¦π»(π₯)π¦β(π₯)|π₯] (2. 29) = arg πππ₯ β πβπ»(π₯)π(π¦ = 1|π₯) β 1 β β(π₯) + ππ»(π₯)π(π¦ = β1|π₯) β (β1) β β(π₯)
Karena πβπ¦π»(π₯) adalah bersifat konstan dalam h(x). Dengan normalisasi harapan sebagai:
ββ(π₯) =arg πππ₯ β
πβπ»(π₯)π(π¦ = 1|π₯)β1ββ(π₯)+ππ»(π₯)π(π¦ = β1|π₯)β(β1)ββ(π₯)
πβπ»(π₯)π(π¦ = 1|π₯)+ππ»(π₯)π(π¦ = β1|π₯) (2. 30)
Selanjutnya harapan ditulis ulang menggunakan istilah baru π€(π₯, π¦), yang diambil dari πβπ¦π»(π₯)π(π¦|π₯), sebagai:
ββ(π₯) =arg πππ₯ β
πΈπ€(π₯,π¦)~πβπ¦π»(π₯)π(π¦|π₯)[π¦β(π₯)|π₯]
(2. 31)
Sejak h*(x) harus +1 atau -1, solusi untuk optimasi adalah h*(x) memiliki tanda yang sama dengan y|x, yaitu:
ββ(π₯) = πΈπ€(π₯,π¦)~πβπ¦π»(π₯)π(π¦|π₯)[π¦β(π₯)|π₯] (2. 32)
59
Seperti dapat dilihat, h* hanya melakukan klasifikasi optimal x bawah distribusi πβπ¦π»(π₯)π(π¦|π₯). Oleh karena itu, πβπ¦π»(π₯)π(π¦|π₯) adalah distribusi yang diinginkan untuk meminimalkan hipotesis kerugian 0/1.
Jadi, ketika hipotesis h(x) telah dipelajari dan β = 1
2ln1βπ
π telah ditentukan pada saat ini, distribusi untuk tahap berikutnya harus:
π·π‘+1(π₯) = πβπ¦(π»(π₯)+ββ(π₯))π(π¦|π₯) = πβπ¦π»(π₯)π(π¦|π₯) β πββπ¦β(π₯) (2. 34) π·π‘+1(π₯) = π·π‘(π₯) β πββπ¦β(π₯) (2. 35)
yang merupakan cara memperbarui distribusi dalam AdaBoost.
Tapi, mengapa mengoptimalkan kerugian kerja eksponensial untuk meminimalkan kerugian 0/1?
Sebenarnya, dapat dilihat bahwa:
ββ(π₯) =arg πππ β πΈπ₯~π·,π¦[πβπ¦β(π₯)] = 1 2ln π(π¦=1|π₯) π(π¦=β1|π₯) (2. 36)
oleh karena itu didapat:
π πππ(ββ(π₯)) =arg πππ π¦ π(π¦|π₯) (2. 37)
yang mengimplikasikan bahwa solusi optimal untuk kerugian eksponensial dicapai pada kesalahan bayesian minimum untuk masalah klasifikasi. Selain itu, dapat dilihat bahwa fungsi h yang meminimalkan kerugian eksponensial adalah model regresi logistik hingga faktor 2. Jadi, dengan mengabaikan faktor 1/2, AdaBoost juga dapat dilihat sebagai model regresi logistik tambahan yang cocok.
Perlu dicatat bahwa distribusi data tidak dikenal dalam praktek, dan algoritma AdaBoost bekerja pada sejumlah pelatihan yang diberikan dengan contoh-contoh pelatihan terbatas. Oleh karena itu, semua harapan dalam turunan di atas diambil pada contoh pelatihan, dan bobot juga dikenakan pada contoh pelatihan. Untuk algoritma dasar pembelajaran yang tidak dapat menangani pembobotan contoh pelatihan, mekanisme pengambilan ulang dari contoh yang sesuai dengan bobot yang diinginkan, dapat digunakan sebagai pengganti.
60
Algoritma AdaBoost berbasis NaΓ―ve Bayes digambarkan dengan flowchart pada Gambar 2.16, dengan masukan sejumlah data latih, data uji, dan jumlah iterasi. Pertama dilakukan inisialisasi bobot untuk setiap fitur sebesar 1 dibagi jumah data latih. Selanjutnya dilakukan perulangan sesuai masukan jumlah iterasi. Selama iterasi dilakukan pembobotan terhadap fitur data latih, karena algoritma NaΓ―ve Bayes tidak menerima bobot, maka dilakukan duplikasi fitur sesuai bobotnya sebagai data latih.
Selanjutnya data latih diklasifikasikan menggunakan algoritma pengklasifikasi (NaΓ―ve Bayes). Hitung nilai kesalahannya, jika kesalahan lebih besar dari 0,5 maka iterasi diakhiri. Jika tidak lebih besar 0,5, maka hitung koefisien kesalahan. Hitung ulang bobot fitur menggunakan koefisien kesalahan, dan dilakukan normalisasi agar bobot bernilai antara 0 sampai 1.
Proses penghitungan dilakukan sampai jumlah iterasi tercapai atau nilai kesalahan lebih dari 0,5. Setelah perulangan selesai, selanjutnya data uji diklasifikasikan menggunakan model ensemble yang terbentuk dengan koefisien bobotnya. Jika hasil klasifikasinya lebih besar atau sama dengan 0, maka diklasifikasikan ke dalam cacat. Jika hasil klasifikasinya kurang dari 0, maka diklasifikasikan ke dalam tidak cacat.
61 Mulai
Masukkan sejumlah data latih, data uji, dan jumlah iterasi T
Kemudian lakukan inisialisasi bobot pada setiap fitur (1/jumlah data latih)
t=1
t <= T
Atur ulang bobot setiap fitur menggunakan nilai bobot Dt
Hitung nilai hipotesis ht menggunakan probabilitas NaΟve Bayes
Hitung kesalahan Ξ΅t
Ξ΅t > 1/2
Hitung koefisien bobot
Hitung bobot baru dan lakukan normalisasi:
t++
Hitung klasifikasi data uji:
Selesai T =t-1 Ya Tidak Ya Tidak H(x) >= 0 Ya Diklasifikasikan sebagai cacat Diklasifikasikan
sebagai tidak cacat Tidak
Gambar 2.16
62
2.2.5.2 Bagging
Bootstrap aggregating (Bagging) adalah metode belajar (learning) yang
sederhana dan efektif. Bagging merupakan metode ensemble yang banyak digunakan untuk klasifikasi, dengan tujuan untuk meningkatkan akurasi pengklasifikasi dengan menggabungkan pengklasifikasi tunggal, dan hasilnya sedikit lebih baik daripada random sampling (Alfaro, Gamez, & Garcia, 2013, p. 1).
Berikut ini adalah algoritma Bagging:
Masukan: B adalah jumlah bag, T adalah data training yang berukuran N, x adalah data yang diuji.
Keluaran: Hasil klasifikasi.
Ulangi untuk b = 1, 2, ..., B
a. Buat bootstrap BSb dengan mengambil sampel dari T sejumlah N dengan penggantian.
b. Latih pengklasifikasi tunggal Cb dengan boostrap BSb
akhir perulangan
Gabungkan hasil pengklasifikasi tunggal Cb (xi); b = 1, 2, ..., B , hasil klasifikasi yang paling banyak dijadikan keputusan final klasifikasi, mengikuti rumus:
πΆπ(π₯π) = arg πππ₯πβπβπ΅ πΌ(πΆπ(π₯π) = π)
π=1 (2. 38)
Bagging adalah metode yang mengkombinasikan bootstrapping dan
aggregating (Alfaro, Gamez, & Garcia, 2013, p. 4). Sampel bootstrap ini
diperoleh dengan melakukan resampling dengan penggantian (with replacemants) dari dataset asli sehingga menghasilkan jumlah elemen yang sama dari dataset asli.
Bagging dapat benar-benar berguna untuk membangun pengklasifikasi menjadi lebih baik bila pada pengamatan kumpulan data latih yang terdapat noise (kegaduhan) (Alfaro, Gamez, & Garcia, 2013, p. 5). Berdasarkan penelitian, perbaikan yang besar didapat ketika menggunakan 10 bootstrap, jika
63
menggunakan lebih dari 25 bootstrap, banyak tenaga yang dihabiskan. Sehingga Bagging lebih baik digunakan untuk data yang mengandung noise (kegaduhan) dan menggunakan 10 bootstrap.
Sedangkan algoritma Bagging berbasis NaΓ―ve Bayes digambarkan dengan
flowchart pada Gambar 2.17, dengan masukan sejumlah data latih, data uji, dan
jumlah bootstrap. Pertama dibuat bootstrap, dengan melakukan random sampling dengan penggantian. Setiap bootstrap yang dibuat digunakan untuk melatih algoritma belajar tunggal (NaΓ―ve Bayes). Algoritma belajar yang sudah dilatih kemudian digabungkan untuk mengklasifikasikan data uji. Jika hasilnya lebih banyak ke kelas cacat, maka diklasifikasikan ke dalam cacat, jika tidak maka diklasifikasikan ke dalam tidak cacat.
64 Mulai
Masukkan sejumlah data latih, data uji, dan jumlah iterasi T
t=1
t <=T
Buat bootstrap menggunakan random sampling dengan
penggantian
Latih pengklasifikasi tunggal Naive Bayes menggunakan data bootstrap
t++ Ya
Klasifikasikan data uji menggunakan pengklasifikasi
tunggal yang sudah dilatih t++ Selesai Lebih banyak prediksi cacat Ya Diklasifikasikan sebagai cacat Diklasifikasikan sebagai tidak cacat
Tidak t=1 t <=T Tidak Ya Tidak Gambar 2.17
65