Topik ini menjelaskan algoritma light gradient boosting machine (LightGBM).
Informasi latar belakang
LightGBM adalah kerangka kerja peningkatan gradien terdistribusi berbasis Algoritma pohon keputusan. Dirancang sebagai alat yang cepat, efisien, hemat memori, dan akurat tinggi, LightGBM mendukung pemrosesan data paralel dan berskala besar. LightGBM dapat mengurangi penggunaan memori, menurunkan biaya komunikasi, meningkatkan efisiensi permintaan paralel elastis multi-node (ePQ), serta mencapai percepatan linear dalam komputasi data.
Skenario
LightGBM adalah kerangka kerja algoritma yang mencakup Model GBDT, Random Forest, dan model regresi logistik. LightGBM umumnya digunakan dalam skenario seperti klasifikasi biner, klasifikasi multikelas, dan Pengurutan.
Sebagai contoh, dalam sebagian besar skenario rekomendasi komoditas personalisasi, diperlukan model prediksi klik. Model prediksi klik digunakan untuk memprediksi klik atau pembelian pengguna berdasarkan data perilaku historis pengguna, seperti klik, tidak klik, dan pembelian. Fitur-fitur berikut diekstraksi berdasarkan perilaku dan atribut pengguna:
Fitur kategorikal: tipe string, seperti jenis kelamin (pria atau wanita).
Kategori komoditas: kategori seperti pakaian, mainan, atau elektronik.
Fitur numerik: tipe data integer atau floating-point, seperti aktivitas pengguna atau harga komoditas.
Parameter
Nilai parameter yang dijelaskan dalam tabel berikut sama dengan nilai parameter model_parameter yang ditentukan dalam pernyataan CREATE MODEL yang digunakan untuk membuat model. Anda dapat mengonfigurasi parameter-parameter tersebut sesuai dengan kebutuhan bisnis Anda.
Parameter | Deskripsi |
boosting_type | Tipe pembelajar lemah. Nilai valid:
Catatan Saat Anda menentukan nilai untuk parameter ini, apit nilai tersebut dengan tanda kutip tunggal ('). Contoh: |
n_estimators | Jumlah iterasi. Nilainya harus berupa bilangan bulat. Nilai default: 100. |
loss | Tugas pembelajaran dan tujuan pembelajaran dari tugas tersebut. Nilai valid:
|
num_leaves | Jumlah daun. Nilainya harus berupa bilangan bulat. Nilai default: 128. |
max_depth | Kedalaman maksimum pohon. Nilainya harus berupa bilangan bulat. Nilai default: 7. Catatan Jika parameter ini disetel ke -1, kedalaman pohon tidak ditentukan. Kami menyarankan Anda menentukan parameter ini dengan hati-hati untuk mencegah overfitting. |
learning_rate | Tingkat pembelajaran. Nilainya harus berupa bilangan titik mengambang. Nilai default: 0,06. |
max_leaf_nodes | Jumlah maksimum node daun dalam pohon. Nilainya bisa berupa bilangan bulat atau dibiarkan kosong. Secara default, parameter ini dibiarkan kosong, yang menunjukkan bahwa jumlah node daun dalam pohon tidak dibatasi. |
min_samples_leaf | Jumlah minimum node daun sampel dalam pohon. Nilainya harus berupa bilangan bulat. Nilai default: 20. Catatan Jika jumlah node daun kurang dari jumlah minimum node daun sampel, node tersebut dipangkas bersama dengan node saudaranya. |
subsample | Rasio sampel yang digunakan untuk pembuatan model terhadap semua sampel. Nilainya harus berupa bilangan titik mengambang. Nilai valid: 0 hingga 1. Nilai default: 1. Catatan Jika nilai parameter ini kurang dari 1, hanya proporsi sampel tertentu yang digunakan untuk pembuatan model. |
max_features | Proporsi fitur pembuatan model terhadap semua fitur. Nilainya harus berupa bilangan titik mengambang. Nilai valid: 0 hingga 1. Nilai default: 1. |
max_depth | Kedalaman maksimum pohon. Nilainya harus berupa bilangan bulat. Nilai default: 7. Catatan Nilai yang lebih besar menentukan presisi yang lebih tinggi. Namun, overfitting mungkin terjadi. |
random_state | Bibit angka acak. Nilainya harus berupa bilangan bulat. Nilai default: 1. Catatan Jika ada nilai berbeda, konstruksi pohon dan segmentasi data pembuatan model mungkin terpengaruh. |
model_type | Tipe penyimpanan model. Nilai valid:
|
n_jobs | Jumlah utas yang digunakan untuk membuat model. Nilainya harus berupa bilangan bulat. Nilai default: 4. Catatan Semakin banyak utas yang digunakan untuk pembuatan model, semakin cepat model dibuat. |
is_unbalance | Menentukan apakah akan menambah bobot kategori dengan jumlah sampel kecil untuk mengatasi ketidakseimbangan sampel. Nilai valid:
|
categorical_feature | Fitur kategorikal. Nilainya harus berupa larik string. Dalam kebanyakan kasus, LightGBM menentukan tipe data untuk secara otomatis mengonfigurasi parameter categorical_feature. Anda juga dapat mengonfigurasi parameter ini. Sebagai contoh, jika parameter |
automl | Menentukan apakah akan mengaktifkan fitur penyetelan parameter otomatis. Nilai valid:
|
automl_train_tag | Label pembuatan model. |
automl_test_tag | Label pengujian model. |
automl_column | Nama kolom dalam set pembuatan model atau set pengembangan yang ditentukan oleh fitur penyetelan parameter otomatis. Anda harus mengonfigurasi parameter Catatan Setelah Anda mengonfigurasi parameter
Parameter optimal diperoleh dari set laju pembelajaran "0,05, 0,04, 0,03, dan 0,01" dan parameter pengambilan sampel "0,6 dan 0,5". |
Contoh
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');Gunakan model untuk 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');