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 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 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.
Berikut adalah diskusi tentang beberapa fitur XGBoost di Python yang membuatnya lebih menonjol dibandingkan dengan paket peningkatan gradien normal di scikit-learn2:
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.
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.
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.
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.
Berikut ini adalah penjelasan mengenai beberapa hyperparameter yang tersedia untuk disetel pada pohon yang ditingkatkan gradien di XGBoost:
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.
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.
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.
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.
XGBoost dan decision trees yang ditingkatkan gradien digunakan di berbagai aplikasi ilmu data, termasuk:
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.
6 "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.