Apa Itu XGBoost dan Cara Kerjanya dalam Machine Learning?

Apa Itu XGBoost dan Cara Kerjanya dalam Machine Learning?

XGBoost (eXtreme Gradient Boosting) adalah pustaka machine learning sumber terbuka terdistribusi yang menggunakan decision tree, algoritme peningkatan pembelajaran diawasi yang memanfaatkan gradient descent. Ia dikenal karena kecepatan, efisiensi, dan kemampuannya untuk menskalakan dengan baik dengan kumpulan data yang besar.

Dikembangkan oleh Tianqi Chen dari University of Washington, XGBoost adalah implementasi lanjutan dari gradient boosting dengan kerangka kerja umum yang sama; yaitu menggabungkan pohon weak learner menjadi pembelajar yang kuat dengan menjumlahkan residu. Pustaka ini tersedia untuk C++, Python, R, Java, Scala, dan Julia1.

Decision tree vs peningkatan

Decision tree digunakan untuk klasifikasi atau regresi tugas di machine learning. Algoritme ini menggunakan struktur pohon hierarkis; simpul internal (internal node) merepresentasikan fitur, cabang (branch) menyatakan aturan keputusan, dan setiap simpul daun (leaf node) menghasilkan prediksi atau klasifikasi data.

Karena decision tree rentan terhadap overfitting, metode ensambel, seperti boosting, sering kali dapat digunakan untuk membuat model yang lebih kuat. Peningkatan menggabungkan beberapa pohon lemah terpisah—yaitu, model yang berkinerja sedikit lebih baik daripada peluang acak, untuk membentuk pembelajar yang kuat. Setiap weak learner dilatih secara berurutan untuk memperbaiki kesalahan yang dibuat oleh model sebelumnya. Setelah ratusan iterasi, weak learner diubah menjadi pembelajar yang kuat.

Random forest dan algoritme peningkatan keduanya merupakan teknik pembelajaran ensambel populer yang menggunakan pohon tiap pembelajar untuk meningkatkan kinerja prediktif. Random forest didasarkan pada konsep bagging (agregasi bootstrap) dan melatih setiap pohon secara independen untuk menggabungkan prediksi mereka, sementara algoritme boosting menggunakan pendekatan aditif yang melatih model standar (weak learner) secara berurutan guna memperbaiki kesalahan prediksi dari model sebelumnya.

Meningkatkan - pembelajaran ansambel berurutan

Decision tree dioptimalkan dengan gradient boost 

Gradient Boosting Trees merupakan jenis algoritme boosting berbasis decision tree yang menerapkan metode gradient descent untuk meminimalkan kesalahan prediksi model. Seperti metodologi peningkatan lainnya, peningkatan gradien dimulai dengan weak learner untuk membuat prediksi. Struktur keputusan pertama dalam gradient boosting disebut pembelajar dasar. Selanjutnya, pohon baru dibuat dengan cara aditif berdasarkan kesalahan pembelajar dasar. Algoritme ini kemudian menghitung residu dari prediksi setiap pohon untuk menentukan seberapa jauh prediksi model dari kenyataan. Residu adalah perbedaan antara nilai prediksi model dan nilai aktual. Residu kemudian digabungkan untuk menilai model dengan fungsi kesalahan.

Dalam machine learning, fungsi kesalahan digunakan untuk mengukur kinerja model. Gradien dalam struktur keputusan yang diterapkan gradient boost mengacu pada gradient descent. Gradient descent digunakan untuk meminimalkan kerugian (yaitu untuk meningkatkan kinerja model) ketika melatih model baru. Gradient descent adalah algoritme pengoptimalan populer yang digunakan untuk meminimalkan fungsi kesalahan dalam masalah machine learning. Beberapa contoh fungsi kesalahan termasuk rata-rata kuadrat kesalahan atau rata-rata absolut kesalahan untuk masalah regresi, kesalahan lintas entropi untuk masalah klasifikasi, atau fungsi kesalahan khusus dapat dikembangkan untuk contoh penggunaan dan kumpulan data tertentu.

Fitur XGBoost

Berikut adalah diskusi tentang beberapa fitur XGBoost di Python yang membuatnya lebih menonjol dibandingkan dengan paket peningkatan gradien normal di scikit-learn2:

  • Komputasi paralel dan terdistribusi: Pustaka menyimpan data dalam unit di dalam memori yang disebut blok. Blok terpisah dapat didistribusikan di seluruh mesin atau disimpan di memori eksternal menggunakan komputasi di luar memori. XGBoost juga memungkinkan contoh penggunaan yang lebih canggih, seperti pelatihan terdistribusi di sekelompok komputer untuk mempercepat komputasi. XGBoost juga dapat diimplementasikan dalam mode terdistribusi menggunakan alat seperti Apache Spark, Dask, atau Kubernetes.

  • Algoritme prefetching yang sadar cache: XGBoost menggunakan algoritme prefetching sadar cache yang membantu mengurangi waktu proses untuk kumpulan data yang besar. Pustaka dapat berjalan lebih dari sepuluh kali lebih cepat daripada kerangka kerja lain yang ada pada satu mesin. Karena kecepatannya yang mengesankan, XGBoost dapat memproses miliaran contoh dengan menggunakan sumber daya yang lebih sedikit, sehingga menjadikannya sistem peningkatan pohon yang dapat diskalakan.

  • Regularisasi bawaan: XGBoost menyertakan regularisasi sebagai bagian dari tujuan pembelajaran, tidak seperti gradient boosting reguler. Data juga dapat diatur melalui penyetelan hiperparameter. Menggunakan regularisasi bawaan XGBoost juga memungkinkan pustaka untuk memberikan hasil yang lebih baik daripada paket gradient boosting scikit-learn biasa.

  • Menangani missing values: XGBoost menggunakan algoritme yang sadar sparsity untuk data yang jarang. Ketika sebuah nilai missing values dalam kumpulan data, titik data diklasifikasikan ke dalam arah default dan algoritme mempelajari arah terbaik untuk menangani missing values.

Cara kerja XGBoost

Pada bagian ini, kita akan membahas cara menggunakan paket XGBoost, cara memilih hyperparameter untuk peningkat pohon XGBoost, bagaimana XGBoost dibandingkan dengan implementasi peningkat lainnya dan beberapa contoh penggunaannya.

Memisahkan data Anda dan mengonversinya ke format DMatrix

Dengan asumsi Anda telah melakukan analisis data eksplorasi pada data Anda, lanjutkan dengan membagi data Anda antara kumpulan data pelatihan dan kumpulan data pengujian. Selanjutnya, konversikan data Anda ke format DMatrix yang diharapkan oleh XGBoost3. DMatrix adalah struktur data internal XGBoost yang dioptimalkan untuk efisiensi memori dan kecepatan pelatihan4.

Menghasilkan dan mengevaluasi model

Selanjutnya, instansikan model XGBoost dan, tergantung pada contoh penggunaan Anda, pilih fungsi objektif mana yang ingin Anda gunakan melalui hyperparameter “object”. Sebagai contoh, jika Anda memiliki tugas klasifikasi multi-kelas, Anda harus menetapkan tujuan ke “multi:softmax”5. Atau, jika Anda memiliki masalah klasifikasi biner, Anda dapat menggunakan tujuan regression logistik “binary:logistic”. Sekarang Anda dapat menggunakan set pelatihan Anda untuk melatih model dan memprediksi klasifikasi untuk data yang disisihkan sebagai set pengujian. Menilai kinerja model dengan membandingkan nilai yang diprediksi dengan nilai aktual set uji. Anda dapat menggunakan metrik seperti akurasi, presisi, mengingat, atau skor f-1 untuk mengevaluasi model Anda. Anda mungkin juga ingin memvisualisasikan positif sejati, negatif sejati, positif palsu, dan negatif palsu menggunakan confusion matrix.

Penyetelan hiperparameter

Selanjutnya, Anda mungkin ingin mengulangi melalui kombinasi hiperparameter untuk membantu meningkatkan kinerja model Anda. Penyetelan hiperparameter adalah proses optimasi untuk hiperparameter algoritme machine learning. Hiperparameter terbaik dapat ditemukan menggunakan metode pencarian grid dan validasi silang, yang akan diulang melalui kamus kemungkinan opsi penyetelan hiperparameter.

Hiperparameter yang dipilih untuk pohon dioptimalkan dengan gradient boost di XGBoost

Berikut ini adalah penjelasan mengenai beberapa hyperparameter yang tersedia untuk disetel pada pohon yang ditingkatkan gradien di XGBoost:

  • Laju pembelajaran (dikenal juga sebagai “ukuran langkah” atau “shrinkage“), adalah hiperparameter gradient boosting yang paling penting. Dalam pustaka XGBoost, ini dikenal sebagai “eta”, harus berupa angka antara 0 dan 1 dan defaultnya adalah 0,36. Laju pembelajaran (learning rate) menentukan seberapa cepat atau besar bobot koreksi yang diambil oleh algoritme boosting pada setiap iterasi. Nilai eta yang lebih rendah berarti pembelajaran yang lebih lambat, karena mengurangi kontribusi setiap pohon dalam ensambel, sehingga membantu mencegah overfitting. Sebaliknya, nilai eta yang lebih tinggi mempercepat pembelajaran, tetapi dapat menyebabkan overfitting jika tidak disetel dengan hati-hati.

  • Hiperparameter n_estimators menentukan jumlah pohon yang akan dibangun dalam ensambel. Tiap putaran peningkatan menambahkan pohon baru ke dalam keseluruhan dan model perlahan belajar memperbaiki kesalahan yang dibuat oleh pohon sebelumnya. N_estimators mengarahkan kompleksitas model dan memengaruhi waktu pelatihan dan kemampuan model untuk digeneralisasi ke data yang tidak terlihat. Meningkatkan nilai n_estimators biasanya meningkatkan kompleksitas model, karena memungkinkan model untuk menangkap pola yang lebih rumit dalam data. Akan tetapi, menambahkan terlalu banyak pohon dapat mengakibatkan overfitting. Sebagai contoh umum, seiring bertambahnya n_estimators, maka laju pembelajaran akan menurun.

  • Gamma (dikenal juga sebagai pengganda Lagrange atau parameter pengurangan kesalahan minimum) mengontrol jumlah minimum pengurangan kesalahan yang diperlukan untuk membuat pemisahan lebih lanjut pada node daun pohon. Nilai yang lebih rendah berarti XGBoost berhenti lebih awal tetapi mungkin tidak menemukan solusi terbaik; sementara nilai yang lebih tinggi berarti XGBoost melanjutkan pelatihan lebih lama, berpotensi menemukan solusi yang lebih baik, tetapi dengan risiko yang lebih besar untuk overfitting. Tidak ada batas atas untuk gamma. Default di XGBoost adalah 0 dan apa pun di atas 10 dianggap tinggi.

  • Max_depth merepresentasikan seberapa dalam setiap pohon dalam proses peningkatan yang dapat tumbuh selama pelatihan. Kedalaman pohon mengacu pada jumlah level atau perpecahan yang dimilikinya dari node akar ke node daun. Meningkatkan nilai ini akan membuat model lebih kompleks dan lebih mungkin mengalami overfit. Di XGBoost, max_depth default adalah 6, yang berarti bahwa setiap pohon dalam model diizinkan untuk tumbuh hingga kedalaman maksimum 6 level.
Mixture of Experts | 12 Desember, episode 85

Decoding AI: Rangkuman Berita Mingguan

Bergabunglah dengan panel insinyur, peneliti, pemimpin produk, dan sosok kelas dunia lainnya selagi mereka mengupas tuntas tentang AI untuk menghadirkan berita dan insight terbaru seputar AI.

Membandingkan XGBoost dengan algoritme penguatan lainnya

XGBoost adalah salah satu dari banyak algoritme peningkatan sumber terbuka yang tersedia. Pada bagian ini, kita akan membandingkan XGBoost dengan tiga kerangka kerja peningkatan lainnya.

XGBoost vs AdaBoost

AdaBoost adalah algoritme peningkatan awal yang ditemukan oleh Yoav Freund dan Robert Schapire pada tahun 19957. Dalam AdaBoost, lebih banyak penekanan diberikan pada prediksi yang salah melalui sistem bobot yang memengaruhi titik data yang lebih sulit diprediksi secara lebih signifikan. Pertama, setiap titik data dalam kumpulan data diberi bobot tertentu. Ketika weak learner memprediksi contoh dengan benar, bobot contoh berkurang. Tetapi jika pembelajar salah mendapatkan contoh, bobot untuk titik data itu meningkat. Saat pohon baru dibuat, bobotnya didasarkan pada kesalahan klasifikasi pohon pembelajar sebelumnya. Dengan bertambahnya jumlah pembelajar, sampel yang mudah diprediksi akan lebih sedikit digunakan untuk peserta didik berikutnya, sementara titik data yang lebih sulit diprediksi akan diberi bobot yang lebih besar. Peningkatan gradien dan XGBoost cenderung menjadi alternatif yang lebih kuat untuk AdaBoost karena akurasi dan kecepatannya.

XGBoost vs CatBoost

CatBoost adalah kerangka kerja peningkat gradien lainnya. Dikembangkan oleh Yandex pada tahun 2017, aplikasi ini berspesialisasi dalam menangani fitur kategorikal tanpa perlu prepemrosesan dan umumnya bekerja dengan baik di luar kotak tanpa perlu melakukan penyetelan hyperparameter yang ekstensif8. Seperti XGBoost, CatBoost telah membangun dukungan untuk menangani data yang hilang. CatBoost sangat berguna untuk kumpulan data dengan banyak fitur kategoris. Menurut Yandex, kerangka kerja ini digunakan untuk pencarian, sistem rekomendasi, asisten pribadi, mobil tanpa pengemudi, prediksi cuaca, dan tugas-tugas lainnya.

XGBoost vs LightGBM

LightGBM (Light Gradient Boosting Machine) adalah algoritme penguatan gradien terakhir yang akan kami ulas. LightGBM dikembangkan oleh Microsoft dan pertama kali dirilis pada tahun 20169. Jika sebagian besar algoritme decision tree menumbuhkan pohon secara horizontal berdasarkan kedalamannya (level-wise/depth-wise growth), LightGBM justru menerapkan strategi pertumbuhan pohon berbasis daun (leaf-wise growth)10. Seperti XGBoost, LightGBM menunjukkan kecepatan dan akurasi pelatihan model yang cepat dan berkinerja baik dengan kumpulan data besar.

Aplikasi XGBoost

XGBoost dan decision trees yang ditingkatkan gradien digunakan di berbagai aplikasi ilmu data, termasuk:

  • Belajar memeringkat: Salah satu contoh penggunaan yang paling populer untuk algoritme XGBoost adalah sebagai pemeringkat. Dalam pengambilan informasi, tujuan belajar memeringkat adalah untuk menyajikan konten pengguna yang diurutkan berdasarkan relevansi. Di XGBoost, XGBRanker didasarkan pada algoritme LambdaMART11.

  • Prediksi rasio klik-tayang iklan: Para peneliti menggunakan model terlatih XGBoost untuk menentukan seberapa sering iklan online diklik dalam 10 hari data klik-tayang. Tujuan dari penelitian ini adalah untuk mengukur efektivitas iklan online dan menentukan iklan mana yang berfungsi dengan baik12.

  • Prediksi penjualan toko: XGBoost sangat andal untuk kebutuhan pemodelan prediktif; salah satu contohnya ditunjukkan dalam penelitian ini yang memproyeksikan angka penjualan dari 45 toko Walmart menggunakan algoritme tersebut13.

  • Klasifikasi malware: Dengan menggunakan pengklasifikasi XGBoost, para insinyur di Technical University of Košice mampu mengklasifikasikan malware secara akurat, seperti yang ditunjukkan dalam makalah mereka14.

  • Kompetisi Kaggle: XGBoost telah menjadi algoritme pemenang yang populer di kompetisi Kaggle, seperti yang tercatat di halaman DMLC (Distributed (Deep) Machine Learning Community) yang menampilkan daftar pemenang kompetisi Kaggle baru-baru ini yang menggunakan XGBoost untuk entri mereka15

Penyusun

Eda Kavlakoglu

Business Development + Partnerships

IBM Research

Erika Russi

Data Scientist

IBM

Solusi terkait
IBM watsonx.ai

Latih, validasi, lakukan tuning, dan terapkan AI generatif, model dasar, dan kemampuan machine learning dengan IBM watsonx.ai, studio perusahaan generasi berikutnya untuk pembangun AI. Bangun aplikasi AI dalam waktu singkat, dengan sedikit data.

Temukan watsonx.ai
Solusi kecerdasan buatan (AI)

Gunakan AI di bisnis Anda dalam perpaduan antara keahlian AI terdepan di industri dari IBM dan portofolio solusi Anda.

Jelajahi solusi AI
Konsultasi dan layanan AI

Temukan kembali alur kerja dan operasi yang penting dengan menambahkan AI untuk memaksimalkan pengalaman, pengambilan keputusan secara real-time, dan nilai bisnis.

Jelajahi layanan AI
Ambil langkah selanjutnya

Dapatkan akses satu atap ke kemampuan yang mencakup siklus hidup pengembangan AI. Hasilkan solusi AI yang kuat dengan antarmuka ramah pengguna, alur kerja yang efisien, serta akses ke API dan SDK berstandar industri.

  1. Jelajahi watsonx.ai
  2. Pesan demo langsung