Apa itu XGBoost?

Dua Dokter Memeriksa CT Scan Pasien di Rumah Sakit

Penyusun

Eda Kavlakoglu

Business Development + Partnerships

IBM Research

Erika Russi

Data Scientist

IBM

Apa itu XGBoost?

XGBoost (eXtreme Gradient Boosting) adalah pustaka machine learning sumber terbuka terdistribusi yang menggunakan decision trees, algoritma peningkatan pembelajaran yang diawasi yang memanfaatkan penurunan gradien. 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 peningkatan gradien dengan kerangka kerja umum yang sama; yaitu menggabungkan pohon pembelajar yang lemah menjadi pembelajar yang kuat dengan menjumlahkan residu. Pustaka ini tersedia untuk C++, Python, R, Java, Scala, dan Julia1.

Decision trees vs. peningkatan

Decision trees digunakan untuk klasifikasi atau regresi tugas di machine learning. Mereka menggunakan struktur pohon hierarkis di mana node internal mewakili fitur, cabang mewakili aturan keputusan­ dan setiap node daun mewakili hasil kumpulan data.

Karena decision trees rentan terhadap overfitting, metode ensemble, seperti boosting, sering kali dapat digunakan untuk membuat model yang lebih kuat. Boosting menggabungkan beberapa pohon lemah individu—yaitu, model yang berkinerja sedikit lebih baik daripada kesempatan acak, untuk membentuk pembelajar yang kuat. Setiap pembelajar yang lemah dilatih secara berurutan untuk memperbaiki kesalahan yang dibuat oleh model sebelumnya. Setelah ratusan iterasi, pembelajar yang lemah diubah menjadi pembelajar yang kuat.

Hutan acak dan algoritma penguatan keduanya merupakan teknik pembelajaran ansambel populer yang menggunakan pohon pembelajar individu untuk meningkatkan kinerja prediktif. Hutan acak didasarkan pada konsep bagging (agregasi bootstrap) dan melatih setiap pohon secara independen untuk menggabungkan prediksi mereka, sementara algoritma penguatan menggunakan pendekatan aditif di mana pembelajar yang lemah dilatih secara berurutan untuk memperbaiki kesalahan model sebelumnya.

Decision trees yang didorong oleh gradien 

Decision trees yang didorong gradien adalah jenis algoritma penguatan yang menggunakan penurunan gradien. Seperti metodologi peningkatan lainnya, peningkatan gradien dimulai dengan pembelajar yang lemah untuk membuat prediksi. Decision trees pertama dalam peningkatan gradien disebut pembelajar dasar. Selanjutnya, pohon baru dibuat dengan cara aditif berdasarkan kesalahan pembelajar dasar. Algoritma 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 kerugian.

Dalam machine learning, fungsi kerugian digunakan untuk mengukur kinerja model. Gradien dalam decision trees yang ditingkatkan gradien mengacu pada penurunan gradien. Turunan gradien digunakan untuk meminimalkan kerugian (yaitu untuk meningkatkan kinerja model) ketika melatih model baru. Penurunan gradien adalah algoritma pengoptimalan populer yang digunakan untuk meminimalkan fungsi kerugian dalam masalah machine learning. Beberapa contoh fungsi kerugian termasuk kesalahan kuadrat rata-rata atau kesalahan absolut rata-rata untuk masalah regresi, kerugian lintas entropi untuk masalah klasifikasi atau fungsi kerugian 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: Perpustakaan menyimpan data dalam unit dalam memori yang disebut blok. Blok terpisah dapat didistribusikan di seluruh mesin atau disimpan di memori eksternal menggunakan komputasi out-core. 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.
  • Algoritma prefetching yang sadar cache: XGBoost menggunakan algoritma prefetching yang sadar akan 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.
  • Dibangun dalam regularisasi: XGBoost menyertakan regularisasi sebagai bagian dari tujuan pembelajaran, tidak seperti peningkatan gradien reguler. Data juga dapat diatur melalui penyetelan hyperparameter. Menggunakan regularisasi bawaan XGBoost juga memungkinkan perpustakaan memberikan hasil yang lebih baik daripada paket peningkatan gradien scikit-learn biasa.
  • Menangani missing values: XGBoost menggunakan algoritma yang sadar sparsity untuk data yang jarang. Ketika sebuah nilai missing values dalam kumpulan data, titik data diklasifikasikan ke dalam arah default dan algoritma mempelajari arah terbaik untuk menangani missing values.
Desain 3D bola yang menggelinding di lintasan

Berita + Insight AI terbaru 


Temukan insight dan berita yang dikurasi oleh para pakar tentang AI, cloud, dan lainnya di Buletin Think mingguan. 

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 matriks kebingungan.

Penyetelan hyperparameter

Selanjutnya, Anda mungkin ingin mengulangi melalui kombinasi hyperparameter untuk membantu meningkatkan kinerja model Anda. Penyetelan hyperparameter adalah proses optimasi untuk hyperparameter algoritma machine learning. Hyperparameter terbaik dapat ditemukan dengan menggunakan metode pencarian grid dan validasi silang, yang akan mengulang melalui kamus kombinasi hyperparameter yang mungkin.

Hyperparameter yang dipilih untuk pohon yang ditingkatkan gradien di XGBoost

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

  • Laju pembelajaran (juga dikenal sebagai 'ukuran langkah' atau 'penyusutan'), adalah hiperparameter peningkat gradien yang paling penting. Dalam pustaka XGBoost, ini dikenal sebagai 'eta', harus berupa angka antara 0 dan 1 dan defaultnya adalah 0,36. Laju pembelajaran menentukan tingkat di mana algoritma penguatan belajar dari setiap iterasi. Nilai eta yang lebih rendah berarti pembelajaran yang lebih lambat, karena mengurangi kontribusi setiap pohon dalam ansambel, sehingga membantu mencegah overfitting. Sebaliknya, nilai eta yang lebih tinggi mempercepat pembelajaran, tetapi dapat menyebabkan overfitting jika tidak disetel dengan hati-hati.
  • Hyperparameter n_estimators menentukan jumlah pohon yang akan dibangun dalam ensembel. 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 (juga dikenal sebagai pengganda Lagrange atau parameter pengurangan kerugian minimum) mengontrol jumlah minimum pengurangan kerugian 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 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 cenderung overfit. Di XGBoost, max_depth default adalah 6, yang berarti bahwa setiap pohon dalam model diizinkan untuk tumbuh hingga kedalaman maksimum 6 level.
Gabungan Para Pakar | 28 Agustus, episode 70

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 algoritma penguatan lainnya

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

XGBoost vs AdaBoost

AdaBoost adalah algoritma 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 pembelajar yang lemah 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 algoritma penguatan gradien terakhir yang akan kami ulas. LightGBM dikembangkan oleh Microsoft dan pertama kali dirilis pada tahun 20169. Di mana sebagian besar algoritme pembelajaran decision trees menumbuhkan pohon berdasarkan kedalaman, LightGBM menggunakan strategi pertumbuhan pohon berdasarkan daun10. 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 menentukan peringkat: Salah satu contoh penggunaan yang paling populer untuk algoritma XGBoost adalah sebagai pemeringkat. Dalam pengambilan informasi, tujuan belajar memberi peringkat adalah untuk melayani konten pengguna yang diurutkan berdasarkan relevansi. Di XGBoost, XGBRanker didasarkan pada algoritma 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 dapat digunakan untuk pemodelan prediktif, seperti yang ditunjukkan dalam makalah ini di mana penjualan dari 45 toko Walmart diprediksi menggunakan model XGBoost13.
  • Klasifikasi malware: Dengan menggunakan pengklasifikasi XGBoost, para insinyur di Universitas Teknik Košice mampu mengklasifikasikan malware secara akurat, seperti yang ditunjukkan dalam makalah mereka14.
  • Kompetisi Kaggle: XGBoost telah menjadi algoritma 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
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.

Jelajahi watsonx.ai
Solusi kecerdasan buatan (AI)

Manfaatkan AI di bisnis Anda dengan perpaduan antara keahlian AI terdepan di industri dari IBM dan portofolio solusi Anda.

Jelajahi solusi AI
Konsultasi dan layanan kecerdasan buatan (AI)

Layanan IBM Consulting AI membantu merancang ulang cara kerja bisnis dengan AI untuk transformasi.

Jelajahi layanan AI
Ambil langkah selanjutnya

Dapatkan akses ke berbagai kemampuan dalam satu alat untuk seluruh siklus pengembangan AI. Hasilkan solusi AI yang kuat dengan antarmuka ramah pengguna, alur kerja yang efisien, serta akses ke API dan SDK berstandar industri.

Jelajahi watsonx.ai Pesan demo langsung
Catatan kaki

1 "Scalable and Flexible Gradient Boosting," https://xgboost.ai/.

2 Tianqi Chen and Carlos Guestrin, "XGBoost: A Scalable Tree Boosting System," University of Washington, 10 JunI 2016, https://arxiv.org/pdf/1603.02754.

3 "XGBoost Python Package Introduction, Data Interface," https://xgboost.readthedocs.io/en/stable/python/python_intro.html#data-interface.

4 "XGBoost API Reference, Core Data Structure," https://xgboost.readthedocs.io/en/stable/python/python_api.html#module-xgboost.core.

5 "XGBoost Parameters, Learning Task Parameters," https://xgboost.readthedocs.io/en/stable/parameter.html#learning-task-parameters.

"XGBoost Parameters for Tree Booster," https://xgboost.readthedocs.io/en/stable/parameter.html#parameters-for-tree-booster.

7 Yoav Freund and Robert E. Schapire, "A decision-theoretic generalization of on-line learning and an application to boosting," Journal of Computer and System Sciences, Vol. 55, hlm. 119–139, Agustus 1997.

8 "CatBoost adalah sebuah library sumber terbuka berkinerja tinggi untuk meningkatkan gradien pada decision trees," https://catboost.ai/.

9 Qi Meng, Guolin Ke, Taifeng Wang, Wei Chen, Qiwei Ye, Zhi-Ming Ma and Tie-Yan Liu, "A Communication-Efficient Parallel Algorithm for Decision Tree," Peking University, Microsoft Research and Chinese Academy of Mathematics and Systems Science, 4 November 2016, https://arxiv.org/pdf/1611.01276.

10 "LightGBM Features, Leaf-wise (Best-first) Tree Growth," https://lightgbm.readthedocs.io/en/latest/Features.html#leaf-wise-best-first-tree-growth.

11 "XGBoost Tutorials, Learning to Rank Overview," https://xgboost.readthedocs.io/en/latest/tutorials/learning_to_rank.html#overview.

12 AlAli Moneera, AlQahtani Maram, AlJuried Azizah, Taghareed AlOnizan, Dalia Alboqaytah, Nida Aslam and Irfan Ullah Khan, "Click through Rate Effectiveness Prediction on Mobile Ads Using Extreme Gradient Boosting," College of Computer Science and Information Technology, Imam Abdulrahman bin Faisal University, 12 September 2020, https://www.techscience.com/cmc/v66n2/40673/html.

13 Yetunde Faith Akande, Joyce Idowu, Abhavya Gautam, Sanjay Misra, Oluwatobi Noah Akande and Ranjan Kumar Behera, "Application of Xgboost Algorithm for Sales Forecasting Using Walmart Dataset," Landmark University, Ladoke Akintola University of Technology, Brandan University, Covenant University and XIM University, Juni 2022, https://www.researchgate.net/publication/361549465_Application_of_XGBoost_Algorithm_for_Sales_Forecasting_Using_Walmart_Dataset.

14 Jakub Palša, Norbert Ádám, Ján Hurtuk, Eva Chovancová, Branislav Madoš, Martin Chovanec and Stanislav Kocan, "MLMD—A Malware-Detecting Antivirus Tool Based on the XGBoost Machine Learning Algorithm," MDPI.com Journal of Applied Sciences, Vol 12, 6672, 1 Juli 2022, https://www.mdpi.com/2076-3417/12/13/6672.

15 "Distributed (Deep) Machine Learning Community XGBoost Machine Learning Challenge Winning Solutions" https://github.com/dmlc/xgboost/tree/master/demo#machine-learning-challenge-winning-solutions.