XGBoost (eXtreme Gradient Boosting) merupakan pengembangan algoritma gradient boosting yang menawarkan peningkatan dalam kemudahan penggunaan dan ketangguhan. Algoritma ini banyak digunakan baik dalam sistem produksi pembelajaran mesin maupun kompetisi, serta mendukung tugas klasifikasi dan regresi.
Komponen XGBoost Train di Platform for AI (PAI) dioptimalkan berdasarkan pustaka open-source XGBoost untuk meningkatkan kemudahan penggunaan dan kompatibilitas dengan platform PAI. Topik ini menjelaskan cara mengonfigurasi komponen XGBoost Train.
Batasan
Komponen XGBoost Train berjalan pada sumber daya komputasi berikut:
MaxCompute
Flink
Deep Learning Containers (DLC)
Format data
Komponen ini menerima data dalam format Table atau LibSVM. Anda menentukan format yang digunakan melalui parameter pada tab Field Setting: gunakan featureCols untuk format Table atau vectorCol untuk format LibSVM. Kedua parameter ini saling eksklusif.
Format tabel
Dalam format Table, setiap baris merepresentasikan sebuah instans data yang terdiri atas nilai fitur dan label.
| f0 | f1 | label |
|---|---|---|
| 0.1 | 1 | 0 |
| 0.9 | 2 | 1 |
Format LibSVM
Dalam format LibSVM, setiap baris berisi pasangan fitur-nilai jarang menggunakan notasi index:value. Contoh berikut menunjukkan data LibSVM sampel:
2:1 9:1 10:1 20:1 29:1 33:1 35:1 39:1 40:1 52:1 57:1 64:1 68:1 76:1 85:1 87:1 91:1 94:1 101:1 104:1 116:1 123:1
0:1 9:1 18:1 20:1 23:1 33:1 35:1 38:1 41:1 52:1 55:1 64:1 68:1 76:1 85:1 87:1 91:1 94:1 101:1 105:1 115:1 121:1
2:1 8:1 18:1 20:1 29:1 33:1 35:1 39:1 41:1 52:1 57:1 64:1 68:1 76:1 85:1 87:1 91:1 94:1 101:1 104:1 116:1 123:1
2:1 9:1 13:1 21:1 28:1 33:1 36:1 38:1 40:1 53:1 57:1 64:1 68:1 76:1 85:1 87:1 91:1 94:1 97:1 105:1 113:1 119:1
0:1 9:1 18:1 20:1 22:1 33:1 35:1 38:1 44:1 52:1 55:1 64:1 68:1 76:1 85:1 87:1 91:1 94:1 101:1 104:1 115:1 121:1
0:1 8:1 18:1 20:1 23:1 33:1 35:1 38:1 41:1 52:1 55:1 64:1 68:1 76:1 85:1 87:1 91:1 94:1 101:1 105:1 116:1 121:1Konfigurasi komponen di konsol PAI
Anda dapat mengonfigurasi komponen XGBoost Train di Machine Learning Designer. Parameter-parameter tersebut dikelompokkan dalam tiga tab:
Field Setting: Menentukan struktur data masukan dan lokasi penyimpanan model.
Parameter Setting: Mengatur perilaku algoritma pelatihan XGBoost.
Execution Tuning: Mengonfigurasi sumber daya untuk pelatihan terdistribusi.
Field Setting
| Parameter | Type | Deskripsi |
|---|---|---|
| labelCol | String | Kolom label. |
| featureCols | String array | Kolom fitur dalam format tabel. Parameter ini saling eksklusif dengan vectorCol. Saat Anda menentukan featureCols, data masukan harus dalam format Table. |
| vectorCol | String | Kolom vektor dalam format LibSVM. Parameter ini saling eksklusif dengan featureCols. Saat Anda menentukan vectorCol, data masukan harus dalam format LibSVM. |
| weightCol | String | Nama kolom bobot. |
| set the model file path | String | Path bucket Object Storage Service (OSS) tempat model yang telah dilatih disimpan. |
Parameter Setting
Parameter-parameter ini sesuai dengan hiperparameter standar XGBoost yang mengontrol perilaku pelatihan.
Tujuan pelatihan
| Parameter | Type | Default | Deskripsi |
|---|---|---|---|
| The number of rounds for boosting | Integer | -- | Jumlah putaran pelatihan (iterasi boosting). |
| objective | String | binary:logistic | Tugas pembelajaran dan tujuan pembelajaran yang sesuai. |
| Base score | Floating-point number | 0.5 | Bias global, yang berfungsi sebagai skor prediksi awal untuk semua instans. |
| The number of classes | Integer | -- | Jumlah kelas untuk tugas klasifikasi multi-kelas. |
Konstruksi pohon
| Parameter | Type | Default | Deskripsi |
|---|---|---|---|
| Tree Method | String | auto | Algoritma konstruksi pohon. Nilai yang valid: auto, exact, approx, hist. |
| Maximum depth of a tree | Integer | 6 | Kedalaman maksimum setiap pohon. Peningkatan nilai ini membuat model lebih kompleks dan rentan terhadap overfitting. |
| Max leaves | Integer | 0 | Jumlah maksimum node daun yang ditambahkan. Nilai 0 berarti tidak ada batasan. |
| Grow Policy | String | depthwise | Strategi penambahan node baru ke pohon. Nilai yang valid: depthwise, lossguide. |
| Maximum number of discrete bins to bucket continuous features | Integer | 256 | Jumlah maksimum bin diskret untuk bucketing fitur kontinu. Parameter ini hanya berlaku saat Tree Method diatur ke hist. |
| sketch_eps | Floating-point number | 0.03 | Mengontrol jumlah bin dalam algoritma sketching. Parameter ini hanya berlaku saat Tree Method diatur ke approx. |
Regularisasi
| Parameter | Type | Default | Deskripsi |
|---|---|---|---|
| L1 regularization term on weights | Floating-point number | 0.0 | Suku regularisasi L1 pada bobot. Nilai yang lebih tinggi menghasilkan model yang lebih konservatif. |
| L2 regularization term on weights | Floating-point number | 1.0 | Suku regularisasi L2 pada bobot. Nilai yang lebih tinggi menghasilkan model yang lebih konservatif. |
| gamma | Floating-point number | 0.0 | Reduksi loss minimum yang diperlukan untuk melakukan partisi lebih lanjut pada node daun pohon. |
| Min child weight | Floating-point number | 1.0 | Jumlah minimum bobot instans yang diperlukan dalam node anak. |
| Max delta step | Floating-point number | 0.0 | Langkah delta maksimum yang diizinkan untuk setiap node daun. Parameter ini memungkinkan Anda menyesuaikan granularitas pembaruan model. |
Tingkat pembelajaran dan pengambilan sampel
| Parameter | Type | Default | Deskripsi |
|---|---|---|---|
| eta | Floating-point number | 0.3 | Tingkat pembelajaran. Nilai yang lebih rendah membuat model lebih tangguh tetapi memerlukan lebih banyak putaran boosting. |
| scale_pos_weight | Floating-point number | 1.0 | Rasio untuk menyeimbangkan bobot kelas positif dan negatif. Berguna untuk dataset yang tidak seimbang. |
| Subsample ratio of the training instances | Floating-point number | 1 | Proporsi instans pelatihan yang diambil sampelnya sebelum setiap putaran boosting. |
| Sampling method | String | GRADIENT_BASED | Metode pengambilan sampel instans pelatihan. Nilai yang valid: GRADIENT_BASED, UNIFORM. |
| Subsample ratio of columns for each level | Floating-point number | 1.0 | Proporsi kolom yang diambil sampelnya untuk setiap level pohon. |
| Subsample ratio of columns for each node (split) | Floating-point number | 1.0 | Proporsi kolom yang diambil sampelnya untuk setiap pemisahan node. |
| Subsample ratio of columns when constructing each tree | Floating-point number | 1.0 | Proporsi kolom yang diambil sampelnya saat membangun setiap pohon. |
Kendala dan distribusi
| Parameter | Type | Default | Deskripsi |
|---|---|---|---|
| Interaction constraints | String | -- | Kelompok variabel yang diizinkan untuk saling berinteraksi. |
| Monotone constraints | String | -- | Kendala monotonisitas untuk setiap fitur. |
| Tweedie variance power | Floating-point number | 1.5 | Varians distribusi Tweedie. Parameter ini hanya berlaku saat objective menggunakan distribusi Tweedie. |
Execution Tuning
| Parameter | Type | Nilai valid | Deskripsi |
|---|---|---|---|
| Number of Workers | Bilangan bulat positif | [1, 9999] | Jumlah node pekerja. Konfigurasikan parameter ini bersama dengan Memory per worker, unit MB. |
| Memory per worker, unit MB | Bilangan bulat positif | [1024, 64 x 1024] | Memori yang dialokasikan untuk setiap node pekerja, dalam satuan MB. |
Prosedur
Bagian ini menjelaskan contoh klasifikasi boson Higgs untuk menunjukkan cara menggunakan komponen XGBoost Train di Machine Learning Designer. Pipeline dalam contoh ini dibuat dari template preset. Untuk mempelajari cara membuat pipeline dari template Use XGBoost algorithm to identify the Higgs boson, lihat Create a pipeline from a preset template.
Konversi format output untuk evaluasi
Komponen XGBoost Train menghasilkan string JSON yang diserialisasi dari objek JSON yang dihasilkan oleh pustaka open-source XGBoost. Untuk mengevaluasi prediksi model, Anda harus mengonversi output ini ke format yang dapat diproses oleh komponen evaluasi.
Untuk melakukannya, tambahkan komponen SQL Script sebagai komponen downstream dari komponen XGboost Predict. Komponen SQL Script mengonversi output prediksi ke format yang diperlukan oleh komponen Binary classification Evaluation V2. Gunakan kode SQL berikut:
set odps.sql.udf.getjsonobj.new=true;
select *, CONCAT("{\"0\":", 1.0-prob, ",\"1\":", prob, "}") as detail
FROM (
select *, cast(get_json_object(pred, '$[0]') as double) as prob FROM ${t1})Referensi
Untuk melakukan inferensi offline dengan model yang telah dilatih, gunakan komponen XGboost Predict. Untuk detail konfigurasi, lihat XGboost Predict.
Machine Learning Designer menyediakan berbagai komponen algoritma preset. Untuk daftar lengkapnya, lihat Component reference: Overview of all components.