All Products
Search
Document Center

PolarDB:Algoritma LightGBM

Last Updated:Mar 29, 2026

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:

  1. Pilih tujuan pembelajaran (loss): Gunakan binary untuk masalah dua kelas, multiclass untuk masalah multikelas, atau varian regresi untuk output kontinu.

  2. Pilih pembelajar lemah (boosting_type): Mulailah dengan gbdt (nilai default). Beralihlah ke dart jika perlu mencegah overfitting, goss untuk pelatihan lebih cepat, atau gblinear untuk model linear.

  3. Tentukan kompleksitas pohon (num_leaves, max_depth): Pertahankan num_leaves di bawah 2^max_depth untuk menghindari overfitting.

  4. Sesuaikan regularisasi (learning_rate, subsample, min_samples_leaf): learning_rate yang lebih rendah menghasilkan model lebih stabil tetapi memerlukan lebih banyak iterasi (n_estimators). Mengatur subsample di bawah 1 hanya menggunakan sebagian sampel untuk pembuatan model.

  5. Aktifkan AutoML jika ragu (automl): Atur automl=True agar 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'.

ParameterTipeDefaultDeskripsi
boosting_typestringgbdtJenis 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_estimatorsinteger100Jumlah iterasi boosting.
lossstringbinaryTujuan pembelajaran. binary: klasifikasi biner. multiclass: klasifikasi multikelas. regression: regresi dengan regularisasi L2. regression_l1: regresi dengan regularisasi L1.
num_leavesinteger128Jumlah maksimum daun per pohon. Mengontrol kompleksitas model.
max_depthinteger7Kedalaman maksimum pohon. Atur ke -1 untuk menghapus batas kedalaman. Pohon yang lebih dalam dapat menangkap lebih banyak pola tetapi berisiko overfitting.
learning_ratefloat0.06Ukuran langkah pada setiap iterasi.
max_leaf_nodesinteger atau kosongkosongJumlah maksimum node daun. Kosong berarti tidak ada batasan.
min_samples_leafinteger20Jumlah minimum sampel yang diperlukan pada node daun. Node daun (dan saudara-saudaranya) dipangkas jika jumlah sampel di bawah nilai ini.
subsamplefloat1Proporsi sampel pelatihan yang digunakan per iterasi. Rentang valid: 0–1. Nilai di bawah 1 hanya menggunakan proporsi sampel yang ditentukan untuk pembuatan model.
max_featuresfloat1Proporsi fitur yang dipertimbangkan saat membagi node. Rentang valid: 0–1.
random_stateinteger1Seed bilangan acak. Mengubah nilai ini memengaruhi konstruksi pohon dan pemisahan data, yang dapat menghasilkan hasil berbeda.
model_typestringpklFormat 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_jobsinteger4Jumlah thread yang digunakan untuk pelatihan. Lebih banyak thread mengurangi waktu pelatihan.
is_unbalancebooleanFalseApakah 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_featurestring arrayNama 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'.
automlbooleanFalseApakah akan mengaktifkan penyetelan parameter otomatis. Saat diatur ke True, penghentian dini diterapkan ketika metrik yang ditentukan oleh loss berhenti membaik.
automl_train_tagstringNilai label yang mengidentifikasi baris pelatihan dalam automl_column.
automl_test_tagstringNilai label yang mengidentifikasi baris pengujian dalam automl_column. Set pelatihan harus berukuran 4 hingga 9 kali lipat dari set pengujian.
automl_columnstringNama 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');