LGBMClassifier: Panduan Memulai - KDnuggets

LGBMClassifier: Panduan Memulai – KDnuggets

Node Sumber: 2793517

LGBMClassifier: Panduan Memulai
Gambar oleh Editor 
 

Ada sejumlah besar algoritma pembelajaran mesin yang cenderung memodelkan fenomena tertentu. Sementara beberapa model menggunakan seperangkat atribut untuk mengungguli yang lain, yang lain menyertakan pelajar yang lemah untuk memanfaatkan sisa atribut untuk memberikan informasi tambahan pada model, yang dikenal sebagai model ansambel.

Premis dari model ansambel adalah untuk meningkatkan kinerja model dengan menggabungkan prediksi dari model yang berbeda dengan mengurangi kesalahannya. Ada dua teknik ansambel yang populer: bagging dan boosting. 

Bagging, alias Bootstrapped Aggregation, melatih beberapa model individual pada himpunan bagian acak yang berbeda dari data pelatihan dan kemudian merata-ratakan prediksi mereka untuk menghasilkan prediksi akhir. Peningkatan, di sisi lain, melibatkan pelatihan model individu secara berurutan, di mana setiap model mencoba memperbaiki kesalahan yang dibuat oleh model sebelumnya.

Sekarang kita memiliki konteks tentang model ansambel, mari kita klik dua kali pada model ansambel penguat, khususnya algoritme GBM Ringan (LGBM) yang dikembangkan oleh Microsoft. 

LGBMClassifier adalah singkatan dari Light Gradient Boosting Machine Classifier. Ini menggunakan algoritme pohon keputusan untuk memberi peringkat, klasifikasi, dan tugas pembelajaran mesin lainnya. LGBMClassifier menggunakan teknik baru Gradient-based One-Side Sampling (GOSS) dan Exclusive Feature Bundling (EFB) untuk menangani data berskala besar dengan akurat, membuatnya lebih cepat secara efektif dan mengurangi penggunaan memori.

Apa itu Sampling Satu Sisi Berbasis Gradien (GOSS)?

Algoritme peningkatan gradien tradisional menggunakan semua data untuk pelatihan, yang dapat menghabiskan waktu saat menangani kumpulan data besar. GOSS LightGBM, di sisi lain, menyimpan semua instans dengan gradien besar dan melakukan pengambilan sampel acak pada instans dengan gradien kecil. Intuisi di balik ini adalah bahwa instance dengan gradien besar lebih sulit untuk disesuaikan dan membawa lebih banyak informasi. GOSS memperkenalkan pengganda konstan untuk instance data dengan gradien kecil untuk mengkompensasi hilangnya informasi selama pengambilan sampel.

Apa itu Bundling Fitur Eksklusif (EFB)?

Dalam kumpulan data yang jarang, sebagian besar fitur adalah nol. EFB adalah algoritma near-lossless yang membundel/menggabungkan fitur yang saling eksklusif (fitur yang bukan bukan nol secara bersamaan) untuk mengurangi jumlah dimensi, sehingga mempercepat proses pelatihan. Karena fitur ini "eksklusif", ruang fitur asli dipertahankan tanpa kehilangan informasi yang signifikan.

Paket LightGBM dapat diinstal langsung menggunakan manajer paket pip – python. Ketik perintah yang dibagikan di bawah ini baik di terminal atau command prompt untuk mengunduh dan menginstal pustaka LightGBM ke mesin Anda:

pip install lightgbm

 

Pengguna Anaconda dapat menginstalnya menggunakan perintah "conda install" seperti yang tercantum di bawah ini.

conda install -c conda-forge lightgbm

 

Berdasarkan OS Anda, Anda dapat memilih metode instalasi menggunakan panduan ini.

Sekarang, mari impor LightGBM dan pustaka lain yang diperlukan:

import numpy as np
import pandas as pd
import seaborn as sns
import lightgbm as lgb
from sklearn.metrics import classification_report
from sklearn.model_selection import train_test_split

Mempersiapkan Kumpulan Data

Kami menggunakan kumpulan data Titanic yang populer, yang berisi informasi tentang penumpang Titanic, dengan variabel target yang menunjukkan apakah mereka selamat atau tidak. Anda dapat mengunduh dataset dari Kaggle atau gunakan kode berikut untuk memuatnya langsung dari Seaborn, seperti yang ditunjukkan di bawah ini:

titanic = sns.load_dataset('titanic')

 

Jatuhkan kolom yang tidak perlu seperti "deck", "embark_town", dan "alive" karena kolom tersebut mubazir atau tidak berkontribusi pada kelangsungan hidup siapa pun di kapal. Selanjutnya, kami mengamati bahwa fitur "usia", "tarif", dan "memulai" memiliki nilai yang hilang - perhatikan bahwa atribut yang berbeda diperhitungkan dengan ukuran statistik yang sesuai.

# Drop unnecessary columns
titanic = titanic.drop(['deck', 'embark_town', 'alive'], axis=1) # Replace missing values with the median or mode
titanic['age'] = titanic['age'].fillna(titanic['age'].median())
titanic['fare'] = titanic['fare'].fillna(titanic['fare'].mode()[0])
titanic['embarked'] = titanic['embarked'].fillna(titanic['embarked'].mode()[0])

 

Terakhir, kami mengonversi variabel kategori menjadi variabel numerik menggunakan kode kategori panda. Sekarang, data disiapkan untuk memulai proses pelatihan model.

# Convert categorical variables to numerical variables
titanic['sex'] = pd.Categorical(titanic['sex']).codes
titanic['embarked'] = pd.Categorical(titanic['embarked']).codes # Split the dataset into input features and the target variable
X = titanic.drop('survived', axis=1)
y = titanic['survived']

Melatih Model Pengklasifikasi LGBM

Untuk mulai melatih model LGBMClassifier, kita perlu membagi dataset menjadi fitur input dan variabel target, serta set pelatihan dan pengujian menggunakan fungsi train_test_split dari scikit-learn.

# Split the dataset into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

 

Mari beri label untuk menyandikan data kategori ("siapa") dan ordinal ("kelas") untuk memastikan bahwa model dilengkapi dengan data numerik, karena LGBM tidak menggunakan data non-numerik.

class_dict = { "Third": 3, "First": 1, "Second": 2
}
who_dict = { "child": 0, "woman": 1, "man": 2
}
X_train['class'] = X_train['class'].apply(lambda x: class_dict[x])
X_train['who'] = X_train['who'].apply(lambda x: who_dict[x])
X_test['class'] = X_test['class'].apply(lambda x: class_dict[x])
X_test['who'] = X_test['who'].apply(lambda x: who_dict[x])

 

Selanjutnya, kita menentukan hyperparameter model sebagai argumen untuk konstruktor, atau kita dapat meneruskannya sebagai kamus ke metode set_params.  

Langkah terakhir untuk memulai pelatihan model adalah memuat dataset dengan membuat instance kelas LGBMClassifier dan menyesuaikannya dengan data pelatihan. 

params = { 'objective': 'binary', 'boosting_type': 'gbdt', 'num_leaves': 31, 'learning_rate': 0.05, 'feature_fraction': 0.9
}
clf = lgb.LGBMClassifier(**params)
clf.fit(X_train, y_train)

 

Selanjutnya, mari kita evaluasi kinerja classifier yang dilatih pada dataset yang tidak terlihat atau yang diuji.

predictions = clf.predict(X_test)
print(classification_report(y_test, predictions))

 

 precision recall f1-score support 0 0.84 0.89 0.86 105 1 0.82 0.76 0.79 74 accuracy 0.83 179 macro avg 0.83 0.82 0.82 179
weighted avg 0.83 0.83 0.83 179

Penyesuaian Hyperparameter

LGBMClassifier memungkinkan banyak fleksibilitas melalui hyperparameter yang dapat Anda atur untuk kinerja optimal. Di sini, kami akan membahas secara singkat beberapa hyperparameter utama:

  • jumlah_daun: Ini adalah parameter utama untuk mengontrol kompleksitas model pohon. Idealnya, nilai num_leaves harus kurang dari atau sama dengan 2^(max_depth).
  • min_data_dalam_daun: Ini adalah parameter penting untuk mencegah overfitting pada pohon daun. Nilai optimalnya bergantung pada jumlah sampel pelatihan dan num_leaves.
  • max_kedalaman: Anda dapat menggunakan ini untuk membatasi kedalaman pohon secara eksplisit. Yang terbaik adalah menyetel parameter ini jika terjadi overfitting.

Mari sesuaikan hyperparameter ini dan latih model baru:

model = lgb.LGBMClassifier(num_leaves=31, min_data_in_leaf=20, max_depth=5)
model.fit(X_train, y_train)

 

predictions = model.predict(X_test)
print(classification_report(y_test, predictions))

 

 precision recall f1-score support 0 0.85 0.89 0.87 105 1 0.83 0.77 0.80 74 accuracy 0.84 179 macro avg 0.84 0.83 0.83 179
weighted avg 0.84 0.84 0.84 179

 

Perhatikan bahwa penyetelan hyperparameter yang sebenarnya adalah proses yang melibatkan coba-coba dan mungkin juga dipandu oleh pengalaman dan pemahaman yang lebih dalam tentang peningkatan algoritme dan keahlian materi pelajaran (pengetahuan domain) dari masalah bisnis yang sedang Anda kerjakan.

Dalam posting ini, Anda belajar tentang algoritma LightGBM dan implementasi Python-nya. Ini adalah teknik fleksibel yang berguna untuk berbagai jenis masalah klasifikasi dan harus menjadi bagian dari perangkat pembelajaran mesin Anda.
 
 
Vidhi Batuk adalah ahli strategi AI dan pemimpin transformasi digital yang bekerja di persimpangan produk, sains, dan teknik untuk membangun sistem pembelajaran mesin yang dapat diskalakan. Dia adalah pemimpin inovasi pemenang penghargaan, penulis, dan pembicara internasional. Dia sedang dalam misi untuk mendemokratisasi pembelajaran mesin dan memecahkan jargon agar semua orang menjadi bagian dari transformasi ini.
 

Stempel Waktu:

Lebih dari KDnugget