Lewati ke konten utama

Apa itu Boosting?

Boosting meningkatkan kinerja machine learning dengan mengoreksi kesalahan secara berurutan dan menggabungkan weak learner menjadi prediktor yang kuat.
· 11 mnt Baca

Jelajahi bersama AI

Kemajuan terbaru dalam machine learning telah memperkenalkan cara-cara baru untuk mengatasi masalah kompleks. Boosting adalah salah satu teknik yang terus menunjukkan potensi. Teknik ini mengubah pendekatan kita terhadap pemodelan data dengan menggunakan banyak algoritma untuk meningkatkan kinerja. Seiring konsep boosting berkembang, varian yang lebih baru seperti Gradient Boosting dan XGBoost bermunculan, mendorong batas kecepatan dan akurasi.

Jangan khawatir jika Anda merasa ada banyak hal untuk dipelajari di bidang pemodelan prediktif. Coba jalur karier Associate Data Scientist in Python atau Data Scientist in Python, serta tutorial Explore Ensemble Learning Techniques kami untuk terus belajar. 

Boosting dalam Machine Learning

Boosting adalah metode ensemble learning yang kuat dalam machine learning, yang dirancang khusus untuk meningkatkan akurasi model prediktif dengan menggabungkan banyak weak learner—model yang kinerjanya hanya sedikit lebih baik daripada tebak acak—menjadi satu strong learner. 

Inti boosting terletak pada proses iteratif di mana setiap weak learner dilatih untuk mengoreksi kesalahan pendahulunya, sehingga secara bertahap meningkatkan kinerja model secara keseluruhan. Dengan berfokus pada kesalahan yang dibuat oleh model sebelumnya, boosting mengubah kumpulan weak learner menjadi model yang lebih akurat. 

Cara Kerja Boosting

Boosting mengubah weak learner menjadi satu strong learner yang terpadu melalui proses sistematis yang berfokus pada pengurangan kesalahan dalam pelatihan model secara berurutan. Langkah-langkahnya meliputi:

  1. Pilih Bobot Awal: Tetapkan bobot awal ke semua titik data untuk menunjukkan pentingnya dalam proses pembelajaran.
  2. Latih Secara Berurutan: Latih weak learner pertama pada data. Setelah mengevaluasi kinerjanya, tingkatkan bobot pada instance yang salah klasifikasi. Ini membuat weak learner berikutnya lebih fokus pada kasus yang lebih sulit.
  3. Ulangi Proses: Ulangi proses penyesuaian bobot dan melatih learner berikutnya. Setiap model baru berfokus pada kelemahan ensemble sejauh ini.
  4. Gabungkan Hasil: Gabungkan prediksi semua weak learner untuk membentuk keluaran akhir. Penggabungan umumnya berbobot, di mana learner yang lebih akurat memiliki pengaruh lebih besar.

Metode ini secara efektif meminimalkan kesalahan dengan lebih intensif berfokus pada kasus-kasus sulit dalam data pelatihan, menghasilkan kinerja prediktif yang kuat.

Jenis-Jenis Algoritma Boosting

Mari kita lihat beberapa algoritma boosting yang paling dikenal. 

AdaBoost (Adaptive Boosting)

AdaBoost adalah salah satu algoritma boosting pertama. Algoritma ini berfokus pada penimbangan ulang contoh pelatihan setiap kali learner ditambahkan, dengan memberikan penekanan lebih pada instance yang salah klasifikasi. AdaBoost sangat efektif untuk masalah klasifikasi biner. Baca tutorial AdaBoost Classifier in Python kami untuk mempelajari lebih lanjut.

Gradient Boosting

Gradient boosting membangun model secara berurutan dan mengoreksi kesalahan sepanjang proses. Ia menggunakan algoritma gradient descent untuk meminimalkan loss saat menambahkan model baru. Metode ini fleksibel dan dapat digunakan untuk masalah regresi maupun klasifikasi. Tutorial kami, A Guide to The Gradient Boosting Algorithm, menjelaskan proses ini secara rinci. 

XGBoost (Extreme Gradient Boosting)

XGBoost adalah pustaka gradient boosting terdistribusi yang dioptimalkan dan menjadi metode andalan bagi banyak pemenang kompetisi di Kaggle. Ia dirancang agar sangat efisien, fleksibel, dan portabel. XGBoost mengimplementasikan algoritma machine learning di bawah kerangka Gradient Boosting, menawarkan solusi yang dapat diskalakan dan akurat untuk banyak masalah data praktis. Untuk studi yang lebih mendalam, pertimbangkan untuk meninjau tutorial Using XGBoost in Python kami dan mengikuti kursus khusus: Extreme Gradient Boosting with XGBoost.

Metode Ensemble

Boosting termasuk dalam kelompok besar metode ensemble. Metode ensemble adalah pendekatan dalam machine learning yang menggabungkan beberapa model untuk menghasilkan prediksi yang lebih akurat daripada yang biasanya dapat dicapai oleh satu model saja. Teknik-teknik ini bekerja dengan memanfaatkan keberagaman model yang berbeda, masing-masing dengan kekuatan dan keterbatasannya, untuk menciptakan proses pengambilan keputusan kolektif.

Berbagai jenis metode ensemble

Boosting adalah teknik ensemble learning yang menonjol, tetapi ini hanyalah salah satu dari beberapa teknik yang meningkatkan kekuatan prediktif model. Mari kita lihat beberapa yang lain.

  • Bagging (Bootstrap Aggregating): Metode yang melatih beberapa model pada subset acak dari data pelatihan dan menggabungkan prediksinya. Mengurangi varians dan membantu menghindari overfitting.
  • Stacking (Stacked Generalization): Teknik yang menggabungkan beberapa model dengan melatih meta-model untuk mempelajari cara terbaik menggabungkan prediksi model dasar. Dapat menangkap pola kompleks yang mungkin terlewat oleh model tunggal.
  • Blending: Mirip dengan stacking, tetapi menggunakan set validasi yang disisihkan untuk melatih meta-model alih-alih cross-validation. Lebih sederhana dan lebih cepat daripada stacking, namun bisa jadi kurang tangguh.
  • Voting: Menggabungkan prediksi dari beberapa model dengan suara mayoritas (hard voting) atau rata-rata berbobot dari probabilitas yang diprediksi (soft voting). Mudah diimplementasikan dan dapat efektif dengan model dasar yang beragam.

Boosting vs. bagging

Boosting sering dibandingkan secara khusus dengan bagging. Meskipun dalam beberapa hal serupa, ada perbedaan besar di antara keduanya. Di bawah ini adalah tabel yang membandingkan boosting dengan bagging:

FiturBoostingBagging
Fokus KonseptualMeningkatkan akurasi secara berurutan dengan berfokus pada contoh yang sebelumnya salah diklasifikasi.Melatih beberapa model pada subset acak dan merata-ratakan prediksinya.
Pelatihan ModelPelatihan berurutan memungkinkan setiap model belajar dari kesalahan model sebelumnya.Pelatihan paralel model pada sampel data yang bervariasi meningkatkan keberagaman.
Pengurangan KesalahanUtamanya mengurangi bias dan varians pada tingkat yang lebih rendah.Mengurangi varians, khususnya pada model kompleks yang cenderung overfit.
Sensitivitas terhadap OutlierLebih sensitif karena peningkatan fokus pada data yang salah klasifikasi.Kurang sensitif karena pengambilan sampel acak mengurangi dampak outlier.
ContohAdaBoost, Gradient Boosting, XGBoost.Random Forests, Bootstrap Aggregating.

Jika Anda tertarik mempelajari lebih lanjut tentang bagging, baca tutorial What is Bagging in Machine Learning? kami, yang menggunakan sklearn. 

Implementasi Boosting di Python

Salah satu cara terbaik untuk memahami boosting adalah dengan mencobanya secara praktik. Untuk itu, kita akan menggunakan dataset Kaggle Almond Types Classification, yang menampilkan tiga jenis almond: MAMRA, SANORA, dan REGULAR, beserta atribut fisik uniknya seperti area, perimeter, dan kebundaran. 

Fitur dari setiap sampel almond diekstraksi melalui teknik pemrosesan citra canggih. Nilai null dalam dataset merepresentasikan kasus ketika orientasi almond—apakah ditegakkan, diletakkan miring, atau telentang—mempengaruhi akurasi proses ekstraksi fitur. 

Sekarang mari gunakan dataset ini untuk mencoba tugas klasifikasi. Kita akan menggunakan algoritma AdaBoost, yang, seperti telah kita bahas, meningkatkan kinerja model dengan menggabungkan weak learner menjadi satu model yang kuat.

1. Mengimpor pustaka

Kita mulai dengan mengimpor pustaka yang diperlukan dan memuat dataset almond. Lalu, kita pisahkan fitur dan variabel target.

import pandas as pd
almonds = pd.read_csv('Almond.csv', index_col=0)
X = almonds.drop('Type', axis=1)  
y = almonds['Type']

2. Menangani data hilang

Selanjutnya, kita membersihkan dataset dengan mengisi nilai yang hilang menggunakan KNN imputer. Ini memastikan kita memiliki dataset lengkap untuk model.

from sklearn.impute import KNNImputer
imputer = KNNImputer(n_neighbors=5)
X_imputed = imputer.fit_transform(X)

3. Membagi data untuk pelatihan dan pengujian

Kita membagi data menjadi set pelatihan dan uji agar dapat mengevaluasi seberapa baik model menangani data baru.

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X_imputed, y, test_size=0.2, random_state=42)

4. Melatih classifier pohon keputusan

Di sini kita melatih model pohon keputusan sederhana, yang memberi kita akurasi dasar sebelum melanjutkan untuk meningkatkan kinerjanya.

from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score
tree = DecisionTreeClassifier(max_depth=1, random_state=42)
tree.fit(X_train, y_train)
tree_accuracy = accuracy_score(y_test, tree.predict(X_test))

5. Meningkatkan kinerja dengan AdaBoost

Kemudian kita menggunakan AdaBoost untuk meningkatkan kinerja pohon keputusan dengan berfokus pada kesalahannya dan mendorong akurasi.

from sklearn.ensemble import AdaBoostClassifier
ada = AdaBoostClassifier(base_estimator=tree, n_estimators=100, learning_rate=1.0, random_state=42)
ada.fit(X_train, y_train)
ada_accuracy = accuracy_score(y_test, ada.predict(X_test))

# Print the accuracies
print(f'Accuracy of the weak learner (Decision Tree): {tree_accuracy * 100:.2f}%')
print(f'Accuracy of AdaBoost model: {ada_accuracy * 100:.2f}%')

6. Keluaran akhir

Terakhir, kita membandingkan hasil dan melihat bagaimana AdaBoost secara signifikan meningkatkan akurasi.

Accuracy of the weak learner (Decision Tree): 43.14%
Accuracy of AdaBoost model: 61.50%

Lantas, apa yang dapat diambil? Hasil ini menggambarkan kekuatan ensemble learning melalui AdaBoost. Di sini, weak learner adalah pohon keputusan dengan kedalaman maksimum hanya satu, yang memiliki akurasi sekitar 43%. Mengingat hanya ada tiga jenis almond, akurasi 43% tidak jauh di atas rata-rata tebakan. Namun, ketika weak learner ini digunakan sebagai estimator dasar dalam model AdaBoost dengan 100 iterasi, akurasi meningkat menjadi 62%.

Sebagai catatan kehati-hatian, meskipun AdaBoost menunjukkan akurasi yang lebih tinggi pada dataset Almonds kita, ia tidak selalu menjadi pilihan terbaik untuk setiap situasi. Ada risiko overfitting, terutama pada dataset kecil seperti ini, di mana model bisa menjadi terlalu kompleks. Pada kenyataannya, teknik klasifikasi yang lebih sederhana bisa berkinerja sama baiknya atau bahkan lebih baik untuk tugas tertentu. Jadi, meski kita menggunakan AdaBoost di sini untuk mengilustrasikan konsep, penting untuk mempertimbangkan kembali apakah kita benar-benar menginginkan tingkat kompleksitas yang tinggi.

Kesimpulan

Boosting merepresentasikan kemajuan signifikan di bidang machine learning, menampilkan kekuatan metode ensemble untuk meningkatkan akurasi prediktif. Seperti yang telah kita bahas, algoritma boosting seperti AdaBoost, Gradient Boosting, dan XGBoost beroperasi dengan prinsip dasar: menggabungkan beberapa model lemah untuk menciptakan satu prediktor yang lebih efektif. 

Namun, penting diingat bahwa boosting hanyalah salah satu alat dalam kotak peralatan machine learning. Efektivitasnya dapat bervariasi tergantung pada masalah spesifik. Seperti halnya teknik machine learning lainnya, memahami kapan dan bagaimana menerapkan boosting adalah kunci untuk memaksimalkan potensinya.

Untuk memperdalam pemahaman Anda tentang boosting dan konsep machine learning lainnya, pertimbangkan untuk menjelajahi jalur karier komprehensif DataCamp Machine Learning for Everyone. Bagi yang ingin lebih berspesialisasi, jalur karier Machine Learning Scientist with Python menawarkan pelatihan mendalam tentang teknik-teknik lanjutan dan penerapan praktis.

Vinod Chugani

Penulis

Vinod Chugani

Vinod Chugani memulai kariernya di Tokyo sebagai Kepala Meja Penjualan Hedge Fund termuda di JPMorgan dan kemudian mencetak rekor penjualan individu di Lehman Brothers, lalu membangun bisnis distribusi elektronik di 30 negara dengan pendapatan melampaui SG$100 juta sebelum beralih ke data. Lulusan Ekonomi Duke dan alumni NYC Data Science Academy, ia menjadi salah satu dari tiga penerima beasiswa dari lebih dari 100 pelamar untuk kursus Building AI Applications oleh Hugo Bowne-Anderson di Maven. Saat ini, ia menulis untuk DataCamp, KDnuggets, Machine Learning Mastery, dan Statology tentang topik mulai dari statistika hingga AI agensial, dan membimbing para profesional data di NYC Data Science Academy dengan lebih dari 1.000 sesi tatap muka atas namanya.

 

Frequently Asked Questions

Apa itu boosting dalam machine learning?

Boosting adalah teknik ensemble learning yang digunakan untuk meningkatkan akurasi model prediktif. Teknik ini menggabungkan beberapa weak learner—model yang kinerjanya hanya sedikit lebih baik daripada tebak acak—menjadi satu strong learner, yang secara signifikan meningkatkan kinerja model secara keseluruhan.

Apa perbedaan boosting dan bagging?

Boosting dan bagging sama-sama merupakan teknik ensemble yang menggabungkan beberapa model untuk meningkatkan prediksi, tetapi cara kerjanya berbeda. Boosting melatih model secara berurutan, di mana model baru berfokus pada kesalahan model sebelumnya untuk mengurangi bias dan meningkatkan akurasi. Sebaliknya, bagging melatih model secara paralel pada subset data yang berbeda, lalu merata-ratakan hasilnya untuk mengurangi varians dan meningkatkan stabilitas. Meskipun boosting sensitif terhadap outlier dan noise, bagging lebih tangguh terhadapnya karena metode perata-rataannya.

Apakah boosting dapat digunakan untuk masalah klasifikasi dan regresi?

Ya, teknik boosting dapat diadaptasi untuk klasifikasi maupun regresi. Sementara AdaBoost lebih umum digunakan untuk masalah klasifikasi, varian lain seperti Gradient Boosting dapat digunakan secara efektif untuk regresi.

Bagaimana cara memilih jumlah iterasi boosting?

Jumlah iterasi, atau jumlah weak learner, dalam algoritma boosting biasanya bergantung pada dataset spesifik dan kompleksitas masalah. Jumlah ini dapat ditentukan menggunakan cross-validation atau teknik serupa untuk menyeimbangkan antara underfitting dan overfitting.

Apa perbedaan AdaBoost dengan teknik boosting lain, seperti Gradient Boosting?

AdaBoost meningkatkan bobot pada instance yang salah klasifikasi agar model berikutnya fokus pada kasus-kasus menantang ini. Sebaliknya, Gradient Boost menyesuaikan learner baru terhadap galat residual dari model sebelumnya.

Apa saja keunggulan utama menggunakan AdaBoost?

Keunggulan utama AdaBoost adalah kesederhanaannya, efektivitasnya, dan fakta bahwa ia tidak memerlukan pengetahuan awal tentang weak learner. Ia juga sangat fleksibel, dapat dikombinasikan dengan algoritma pembelajaran apa pun, dan sering kali sangat berhasil pada klasifikasi ketika metode lain mungkin kesulitan.

Apa saja alternatif terkenal untuk meningkatkan kinerja model machine learning selain AdaBoost?

Beberapa alternatif terkenal untuk AdaBoost antara lain Gradient Boosting, XGBoost, CatBoost, LightGBM, dan HistGradientBoost.

Apa saja jenis metode ensemble learning selain boosting?

Bentuk umum ensemble learning selain boosting mencakup bagging dan stacking, masing-masing menggunakan strategi berbeda untuk mengintegrasikan model demi memaksimalkan daya prediksi.

Topik

Terkait

blogs

Tutorial Korelasi di R

blogs

Spaghetti Plot dan Jalur Badai