Light Gradient Boosting Machine (LightGBM) adalah framework gradient boosting terdistribusi berbasis pohon keputusan. Di PolarDB for MySQL, Anda dapat menjalankan model LightGBM secara langsung melalui SQL menggunakan pernyataan CREATE MODEL, EVALUATE, dan PREDICT—tanpa memerlukan lingkungan ML eksternal.
LightGBM mengurangi jejak memori data pelatihan, menekan biaya komunikasi antar node, meningkatkan efisiensi permintaan paralel elastis multi-node (ePQ), serta mencapai akselerasi linear dalam komputasi data.
Kasus penggunaan
LightGBM mencakup tiga keluarga model—gradient boosted decision trees (GBDT), random forests, dan logistic regression—dan sangat cocok untuk:
Klasifikasi biner: memprediksi hasil biner, seperti apakah pengguna akan mengklik atau melakukan pembelian
Klasifikasi multikelas: mengelompokkan item ke dalam salah satu dari beberapa kategori, seperti jenis produk
Peringkat dan pengurutan: mengurutkan hasil berdasarkan relevansi yang diprediksi
Contoh: prediksi klik dalam sistem rekomendasi
Sistem rekomendasi produk personalisasi perlu memprediksi apakah pengguna akan mengklik atau membeli suatu item berdasarkan perilaku sebelumnya (klik, tidak klik, dan pembelian). Fitur input biasanya mencakup:
Fitur kategorikal: nilai string seperti gender (
male,female) atau kategori produk (clothing,toys,electronics)Fitur numerik: nilai integer atau floating-point seperti skor aktivitas pengguna atau harga produk
Konfigurasi model LightGBM
Ikuti langkah-langkah berikut secara berurutan sebelum mengatur parameter:
Pilih tujuan pembelajaran (loss): Gunakan
binaryuntuk masalah dua kelas,multiclassuntuk masalah multikelas, atau varian regresi untuk output kontinu.Pilih pembelajar lemah (boosting_type): Mulailah dengan
gbdt(nilai default). Beralihlah kedartjika perlu mencegah overfitting,gossuntuk pelatihan lebih cepat, ataugblinearuntuk model linear.Tentukan kompleksitas pohon (num_leaves, max_depth): Pertahankan
num_leavesdi bawah2^max_depthuntuk menghindari overfitting.Sesuaikan regularisasi (learning_rate, subsample, min_samples_leaf):
learning_rateyang lebih rendah menghasilkan model lebih stabil tetapi memerlukan lebih banyak iterasi (n_estimators). Mengatursubsampledi bawah 1 hanya menggunakan sebagian sampel untuk pembuatan model.Aktifkan AutoML jika ragu (automl): Atur
automl=Trueagar PolarDB secara otomatis mencari kombinasi parameter terbaik.
Parameter
Parameter berikut dipetakan ke model_parameter dalam pernyataan CREATE MODEL.
Untuk parameter bertipe string seperti boosting_type, sertakan nilainya dalam tanda kutip tunggal. Contoh: boosting_type='gbdt'.
| Parameter | Tipe | Default | Deskripsi |
|---|---|---|---|
boosting_type | string | gbdt | Jenis pembelajar lemah. gbdt: gradient boosted decision tree (direkomendasikan sebagai default). rf: random forest. dart: menggunakan dropout untuk mengurangi overfitting. goss: gradient-based one-side sampling; cepat, tetapi berisiko menyebabkan underfitting. gblinear: model linear. |
n_estimators | integer | 100 | Jumlah iterasi boosting. |
loss | string | binary | Tujuan pembelajaran. binary: klasifikasi biner. multiclass: klasifikasi multikelas. regression: regresi dengan regularisasi L2. regression_l1: regresi dengan regularisasi L1. |
num_leaves | integer | 128 | Jumlah maksimum daun per pohon. Mengontrol kompleksitas model. |
max_depth | integer | 7 | Kedalaman maksimum pohon. Atur ke -1 untuk menghapus batas kedalaman. Pohon yang lebih dalam dapat menangkap lebih banyak pola tetapi berisiko overfitting. |
learning_rate | float | 0.06 | Ukuran langkah pada setiap iterasi. |
max_leaf_nodes | integer atau kosong | kosong | Jumlah maksimum node daun. Kosong berarti tidak ada batasan. |
min_samples_leaf | integer | 20 | Jumlah minimum sampel yang diperlukan pada node daun. Node daun (dan saudara-saudaranya) dipangkas jika jumlah sampel di bawah nilai ini. |
subsample | float | 1 | Proporsi sampel pelatihan yang digunakan per iterasi. Rentang valid: 0–1. Nilai di bawah 1 hanya menggunakan proporsi sampel yang ditentukan untuk pembuatan model. |
max_features | float | 1 | Proporsi fitur yang dipertimbangkan saat membagi node. Rentang valid: 0–1. |
random_state | integer | 1 | Seed bilangan acak. Mengubah nilai ini memengaruhi konstruksi pohon dan pemisahan data, yang dapat menghasilkan hasil berbeda. |
model_type | string | pkl | Format penyimpanan untuk model yang telah dilatih. pkl: file PKL. pmml: file PMML (Predictive Model Markup Language); mencakup struktur pohon lengkap, yang berguna untuk inspeksi. |
n_jobs | integer | 4 | Jumlah thread yang digunakan untuk pelatihan. Lebih banyak thread mengurangi waktu pelatihan. |
is_unbalance | boolean | False | Apakah akan memberikan bobot lebih besar pada kelas minoritas untuk mengatasi ketidakseimbangan kelas. Atur ke True ketika satu kelas memiliki jumlah sampel jauh lebih sedikit daripada kelas lainnya. |
categorical_feature | string array | — | Nama kolom fitur kategorikal, dalam bentuk string yang dipisahkan koma. LightGBM mendeteksi fitur kategorikal secara otomatis dalam sebagian besar kasus. Timpa parameter ini jika deteksi otomatis tidak memadai. Contoh: categorical_feature='AirportTo,DayOfWeek'. |
automl | boolean | False | Apakah akan mengaktifkan penyetelan parameter otomatis. Saat diatur ke True, penghentian dini diterapkan ketika metrik yang ditentukan oleh loss berhenti membaik. |
automl_train_tag | string | — | Nilai label yang mengidentifikasi baris pelatihan dalam automl_column. |
automl_test_tag | string | — | Nilai label yang mengidentifikasi baris pengujian dalam automl_column. Set pelatihan harus berukuran 4 hingga 9 kali lipat dari set pengujian. |
automl_column | string | — | Nama kolom yang digunakan untuk membagi baris menjadi set pelatihan dan set pengujian untuk AutoML. Saat diatur, awali parameter dengan automl_ untuk menentukan ruang pencarian. Contohnya: automl_learning_rate='0.05,0.04,0.03,0.01' mencari di antara empat nilai. Memerlukan automl_train_tag dan automl_test_tag. |
Contoh
Contoh berikut menggunakan set data db4ai.airlines. Semua pernyataan SQL menggunakan petunjuk /*polar4ai*/ untuk mengarahkan kueri ke mesin AI PolarDB.
Buat model LightGBM
/*polar4ai*/CREATE MODEL airline_gbm WITH
(model_class = 'lightgbm',
x_cols = 'Airline,Flight,AirportFrom,AirportTo,DayOfWeek,Time,Length',
y_cols='Delay',model_parameter=(boosting_type='gbdt'))
AS (SELECT * FROM db4ai.airlines);Evaluasi model
/*polar4ai*/SELECT Airline FROM EVALUATE(MODEL airline_gbm,
SELECT * FROM db4ai.airlines LIMIT 20) WITH
(x_cols = 'Airline,Flight,AirportFrom,AirportTo,DayOfWeek,Time,Length',y_cols='Delay',metrics='acc');Jalankan prediksi
/*polar4ai*/SELECT Airline FROM PREDICT(MODEL airline_gbm,
SELECT * FROM db4ai.airlines limit 20) WITH
(x_cols = 'Airline,Flight,AirportFrom,AirportTo,DayOfWeek,Time,Length');