Pembelajaran ansambel: Bagging dan Boosting
Apakah Anda ingin meningkatkan keterampilan ilmu data Anda ke level berikutnya? Apakah Anda tertarik untuk meningkatkan akurasi model Anda dan membuat keputusan yang lebih tepat berdasarkan data Anda? Maka saatnya menjelajahi dunia mengantongi dan meningkatkan. Dengan teknik canggih ini, Anda dapat meningkatkan performa model, mengurangi kesalahan, dan membuat prediksi yang lebih akurat.
Apakah Anda sedang mengerjakan masalah klasifikasi, analisis regresi, atau proyek ilmu data lainnya, mengantongi dan meningkatkan algoritme dapat memainkan peran penting. Pada artikel ini, kami #1 meringkas ide utama pembelajaran ansambel, memperkenalkan keduanya, #2 bagging dan #3 boosting, sebelum akhirnya #4 membandingkan kedua metode untuk menyoroti kesamaan dan perbedaan.
Jadi mari bersiap-siap untuk mengantongi dan meningkatkan kesuksesan!
#1: Pendahuluan dan gagasan utama: pembelajaran ansambel
Jadi kapan kita harus menggunakannya? Jelas, saat kami melihat overfitting atau underfitting pada model kami. Mari kita mulai dengan konsep utama bagging dan boosting, yang keduanya termasuk dalam kelompok teknik pembelajaran ansambel:
Ide utama di balik pembelajaran ansambel adalah penggunaan beberapa algoritme dan model yang digunakan bersama untuk tugas yang sama. Sementara model tunggal hanya menggunakan satu algoritme untuk membuat model prediksi, metode bagging dan boosting bertujuan untuk menggabungkan beberapa di antaranya untuk mencapai prediksi yang lebih baik dengan konsistensi yang lebih tinggi dibandingkan dengan pembelajaran individual.
Contoh: Klasifikasi gambar
Konsep esensial dikemas melalui ilustrasi didaktis yang melibatkan klasifikasi citra. Misalkan kumpulan gambar, masing-masing disertai dengan label kategori yang sesuai dengan jenis hewan, tersedia untuk tujuan melatih model. Dalam pendekatan pemodelan tradisional, kami akan mencoba beberapa teknik dan menghitung akurasi untuk memilih satu dari yang lain. Bayangkan kita menggunakan regresi logistik, pohon keputusan, dan mesin vektor pendukung di sini yang bekerja berbeda pada kumpulan data yang diberikan.
Dalam contoh di atas, diamati bahwa catatan tertentu diprediksi sebagai anjing dengan model regresi logistik dan pohon keputusan, sementara mesin vektor pendukung mengidentifikasinya sebagai kucing. Karena berbagai model memiliki kelebihan dan kekurangan yang berbeda untuk catatan tertentu, itu adalah ide kunci pembelajaran ansambel untuk menggabungkan ketiga model daripada hanya memilih satu pendekatan yang menunjukkan akurasi tertinggi.
Prosedurnya disebut agregasi atau pemungutan suara dan menggabungkan prediksi dari semua model yang mendasarinya, untuk menghasilkan satu prediksi yang dianggap lebih tepat daripada sub-model mana pun yang akan tetap berdiri sendiri.
Pengorbanan Bias-Varians
Bagan berikutnya mungkin sudah tidak asing lagi bagi sebagian dari Anda, tetapi ini cukup mewakili hubungan dan pertukaran antara bias dan varians pada tingkat kesalahan pengujian.
Anda mungkin akrab dengan konsep berikut, tetapi saya mengandaikan bahwa ini secara efektif menggambarkan korelasi dan kompromi antara bias dan varian sehubungan dengan tingkat kesalahan pengujian.
Hubungan antara varians dan bias model sedemikian rupa sehingga pengurangan varians menghasilkan peningkatan bias, dan sebaliknya. Untuk mencapai kinerja yang optimal, model harus diposisikan pada titik ekuilibrium, di mana tingkat kesalahan pengujian diminimalkan, dan varian serta bias diseimbangkan dengan tepat.
Pembelajaran ensemble dapat membantu menyeimbangkan kedua kasus ekstrem menjadi prediksi yang lebih stabil. Satu metode disebut bagging dan yang lainnya disebut boosting.
#2: Mengantongi (agregasi bootstrap)
Mari kita fokus dulu pada teknik Bagging yang disebut bootstrap aggregation. Agregasi bootstrap bertujuan untuk menyelesaikan ekstrem kanan dari bagan sebelumnya dengan mengurangi varians model untuk menghindari overfitting.
Dengan tujuan ini, idenya adalah memiliki beberapa model dari algoritma pembelajaran yang sama yang dilatih oleh himpunan bagian acak dari data pelatihan asli. Subset acak itu disebut tas dan dapat berisi kombinasi data apa pun. Masing-masing kumpulan data tersebut kemudian digunakan untuk menyesuaikan model individual yang menghasilkan prediksi individual untuk data yang diberikan. Prediksi tersebut kemudian dikumpulkan menjadi satu classifier akhir. Gagasan metode ini sangat dekat dengan contoh mainan awal kita dengan kucing dan anjing.
Menggunakan subset data acak, risiko overfitting dikurangi dan diratakan dengan rata-rata hasil sub-model. Semua model dihitung secara paralel dan kemudian digabungkan bersama sesudahnya.
Perhitungan agregasi ansambel akhir menggunakan rata-rata sederhana untuk masalah regresi atau suara mayoritas sederhana untuk masalah klasifikasi. Untuk itu, setiap model dari setiap sampel acak menghasilkan prediksi untuk subset yang diberikan. Rata-rata, prediksi tersebut hanya dijumlahkan dan dibagi dengan jumlah tas yang dibuat.
Pemungutan suara mayoritas sederhana bekerja dengan cara yang sama tetapi menggunakan kelas yang diprediksi, bukan nilai numerik. Algoritme mengidentifikasi kelas dengan prediksi terbanyak dan mengasumsikan bahwa mayoritas adalah agregasi akhir. Ini sekali lagi sangat mirip dengan contoh mainan kami, di mana dua dari tiga algoritme memprediksi gambar sebagai anjing dan agregasi terakhirnya adalah prediksi anjing.
Hutan Acak
Perpanjangan yang terkenal untuk metode bagging adalah algoritma hutan acak, yang menggunakan ide bagging tetapi juga menggunakan himpunan bagian dari fitur dan tidak hanya himpunan bagian dari entri. Mengantongi, di sisi lain, mempertimbangkan semua fitur yang diberikan.
Contoh kode untuk mengantongi
Berikut ini, kita akan mengeksplorasi beberapa fungsi python yang berguna dari sklearn.ensemblelibrary. Fungsi yang dipanggil BaggingClassifiermemiliki beberapa parameter yang dapat dicari di dokumentasi, tetapi yang paling penting adalah base_estimator , n_estimators , dan max_samples .
from sklearn.ensemble import BaggingClassifier
# define base estimator
est = LogisticRegression() # or est = SVC() or est = DecisionTreeClassifier
# n_estimators defines the number of base estimators in the ensemble
# max_samples defines number of samples to draw from X to train each base estimator
bag_model = BaggingClassifier(base_estimator= est, n_estimators = 10, max_samples=1.0)
bag_model = bag_model.fit(X_train, y_train)
Prediction = bag_model.predict(X_test)
- n_estimators: Jumlah estimator menentukan jumlah tas yang ingin Anda buat di sini dan nilai defaultnya adalah 10.
- max_samples: Jumlah sampel maksimum menentukan berapa banyak sampel yang harus diambil dari X untuk melatih setiap estimator basis. Nilai default di sini adalah satu koma nol yang berarti bahwa jumlah entri yang ada harus digunakan. Anda juga dapat mengatakan bahwa Anda hanya menginginkan 80% entri dengan mengaturnya menjadi 0,8.
#3: Meningkatkan
Boosting adalah sedikit variasi dari algoritme bagging dan menggunakan pemrosesan berurutan, bukan perhitungan paralel. Sementara bagging bertujuan untuk mengurangi variansi model, metode boosting bertujuan untuk mengurangi bias agar tidak terjadi underfitting pada data. Dengan pemikiran tersebut, boosting juga menggunakan subkumpulan data acak untuk membuat model berperforma rata-rata.
Untuk itu, ia menggunakan entri yang salah diklasifikasikan dari model yang lemah dengan beberapa data acak lainnya untuk membuat model baru. Oleh karena itu, model yang berbeda tidak dipilih secara acak tetapi sebagian besar dipengaruhi oleh entri klasifikasi yang salah dari model sebelumnya. Langkah-langkah untuk teknik ini adalah sebagai berikut:
- Latih model awal (lemah)
Anda membuat subkumpulan data dan melatih model pembelajaran lemah yang dianggap sebagai model ansambel terakhir pada tahap ini. Anda kemudian menganalisis hasil pada kumpulan data pelatihan yang diberikan dan dapat mengidentifikasi entri yang salah klasifikasi. - Perbarui bobot dan latih model baru
Anda membuat subkumpulan acak baru dari data pelatihan asli, tetapi bobot entri yang salah klasifikasi tersebut lebih tinggi. Dataset ini kemudian digunakan untuk melatih model baru. - Agregat model baru dengan model ansambel
Model berikutnya harus tampil lebih baik pada entri yang lebih sulit dan akan digabungkan (digabungkan) dengan model sebelumnya ke dalam model ansambel akhir yang baru.
Dibandingkan dengan Bagging, teknik ini menggunakan voting tertimbang atau rata-rata tertimbang berdasarkan koefisien model yang dipertimbangkan bersama dengan prediksinya. Oleh karena itu, model ini dapat mengurangi underfitting, tetapi terkadang juga cenderung overfit.
Contoh kode untuk meningkatkan
Berikut ini, kita akan melihat contoh kode yang mirip tetapi untuk meningkatkan. Jelas, ada banyak algoritme penguat. Selain GradientDescentmetodologi, ini AdaBoostadalah salah satu yang paling populer.
- base_estimator: Mirip dengan Bagging, Anda perlu menentukan algoritma dasar mana yang ingin Anda gunakan.
- n_estimators: Jumlah estimator menentukan jumlah maksimum iterasi di mana peningkatan dihentikan. Ini disebut angka "maksimum", karena algoritme akan berhenti dengan sendirinya, jika kinerja yang baik tercapai lebih awal.
- learning_rate : Terakhir, learning rate mengontrol seberapa banyak kontribusi model baru terhadap model sebelumnya. Biasanya ada trade-off antara jumlah iterasi dan nilai learning rate. Dengan kata lain: saat mengambil nilai laju pembelajaran yang lebih kecil, Anda harus mempertimbangkan lebih banyak estimator, sehingga model dasar Anda (pengklasifikasi lemah) terus meningkat.
from sklearn.ensemble import AdaBoostClassifier
# define base estimator (requires support for sample weighting)
est = LogisticRegression() # or est = SVC() or est = DecisionTreeClassifier ….
# n_estimators defines maximum number of estimators at which boosting is terminated
# learning_rate defines the weight applied to each classifier at each boosting iteration
boost_model = AdaBoostClassifier(base_estimator= est, n_estimators = 10, learning_rate=1)
boost_model = boost_model.fit(X_train, y_train)
Prediction = boost_model.predict(X_test)
Karena kita telah mempelajari secara singkat cara kerja bagging dan boosting, saya ingin memusatkan perhatian sekarang pada membandingkan kedua metode satu sama lain.
Kesamaan
- Metode ansambel
Dalam pandangan umum, kesamaan antara kedua teknik dimulai dengan fakta bahwa keduanya adalah metode ansambel dengan tujuan untuk menggunakan banyak pembelajar dalam satu model untuk mencapai hasil yang lebih baik. - Beberapa sampel & agregasi
Untuk melakukan itu, kedua metode menghasilkan sampel acak dan beberapa kumpulan data pelatihan. Hal ini juga serupa bahwa Bagging dan Boosting sama-sama sampai pada keputusan akhir dengan menggabungkan model-model yang mendasarinya: baik dengan menghitung hasil rata-rata atau dengan mengambil peringkat pemungutan suara. - Tujuan
Akhirnya, masuk akal jika keduanya bertujuan untuk menghasilkan stabilitas yang lebih tinggi dan prediksi yang lebih baik untuk data.
- Partisi data | whole data vs. bias
Sementara bagging menggunakan bagan acak dari data pelatihan untuk semua model secara independen, boosting lebih mementingkan data yang salah klasifikasi dari model yang akan datang. Oleh karena itu, partisi data berbeda di sini. - Model | independen vs. urutan
Bagging membuat model independen yang digabungkan bersama. Namun, meningkatkan pembaruan model yang ada dengan yang baru secara berurutan. Oleh karena itu, model dipengaruhi oleh build sebelumnya. - Gol | varians vs bias
Perbedaan lain adalah kenyataan bahwa mengantongi bertujuan untuk mengurangi varians, tetapi meningkatkan mencoba untuk mengurangi bias. Oleh karena itu, bagging dapat membantu mengurangi overfitting, dan boosting dapat mengurangi underfitting. - Fungsi | berbobot vs. tidak berbobot
Fungsi terakhir untuk memprediksi hasil menggunakan rata-rata berbobot sama atau agregasi voting berbobot sama dalam teknik bagging. Boosting menggunakan suara mayoritas berbobot atau fungsi rata-rata tertimbang dengan bobot lebih untuk fungsi dengan performa lebih baik pada data pelatihan.
Terlihat bahwa ide utama dari kedua metode tersebut adalah menggunakan beberapa model secara bersamaan untuk mencapai prediksi yang lebih baik dibandingkan dengan model pembelajaran tunggal. Namun, tidak ada pernyataan satu per satu untuk memilih antara mengantongi dan meningkatkan karena keduanya memiliki kelebihan dan kekurangan.
Sementara mengantongi mengurangi varians dan mengurangi overfitting, itu jarang menghasilkan bias yang lebih baik. Meningkatkan di sisi lain mengurangi bias tetapi mungkin lebih pas daripada model yang dikantongi.
Kembali ke angka tradeoff varians-bias, saya mencoba memvisualisasikan kasus ekstrem ketika setiap metode tampaknya sesuai. Namun, ini tidak berarti bahwa mereka mencapai hasil tanpa kekurangan. Tujuannya harus selalu untuk menjaga bias dan varian dalam keseimbangan yang masuk akal.
Mengantongi dan meningkatkan keduanya menggunakan semua fitur yang diberikan dan hanya memilih entri secara acak. Hutan acak di sisi lain adalah perluasan untuk mengantongi yang juga membuat himpunan bagian fitur secara acak. Oleh karena itu, hutan acak lebih sering digunakan dalam praktik daripada mengantongi.
Saya harap Anda merasa berguna. Beri tau aku isi pikiranmu! Dan jangan ragu untuk terhubung di LinkedIn dihttps://www.linkedin.com/in/jonas-dieckmann/dan/atau untuk mengikuti saya di sini di media.
Referensi
[1]: Buhlmann, Peter. (2012). Metode Bagging, Boosting dan Ensemble. Handbook of Computational Statistics. 10.1007/978–3–642–21551–3_33.
[2]: Machova, Kristina & Puszta, Miroslav & Barcák, Frantisek & Bednár, Peter. (2006). Perbandingan metode bagging dan boosting menggunakan pengklasifikasi pohon keputusan. Komputer. Sains. Inf. Sistem.. 3. 57–72. 10.2298/CSIS0602057M.
[3]: Banerjee, Prashant. Mengantongi vs Meningkatkan @kaggle:https://www.kaggle.com/prashant111/bagging-vs-boosting

![Apa itu Linked List? [Bagian 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































