LGBM, Microsoft tarafından 2017 yılında geliştirilmiştir. Modelin tanıtıldığı “LightGBM: A Highly Efficient Gradient Boosting Decision Tree” makalesinde diğer modellere göre 20 kat daha hızlı çalıştığı yazmaktadır. Diğer makine öğrenmesi modellerinden farklı olarak paralel öğrenme ve GPU kullanımını destekler. Light Gradient Boosting Machine, histogram tabanlıdır. Kategorik değişkenler içn histogramı sıralar ve en iyi bölünmeyi seçer. Gradient boosting yöntemini kullanır. Ağaçları düşey olarak büyütür. Bu, her ağacın yalnızca veri kümesinin belirli bir alt kümesinde odaklanmasını sağlar böylece hesaplama süresi azalır. Genelde karar ağacı algoritmaları seviye odaklı (level-wise – BFS) büyüme stratejisi kullanırken LGBM yaprak odaklı (leaf-wise – DFS) büyüme stratejisi kullanır. Yaprak odaklı büyümede bölme işlemi kaybı azalan yapraklardan devam eder. Böylece model daha az hata oranı ile daha hızlı öğrenir.
Eğitim aşamasında 2 farklı yöntem barındırır.
- Gradient-based One-Side Sampling (GOSS): Eğitim sürecinde kullanılan bir örnekleme tekniğidir. GOSS, büyük gradyanlara sahip örnekleri korurken, küçük gradyanlara sahip örnekleri filtreleyerek veri setinin boyutunu azaltır. Böylece gradient boost algoritması daha hızlı çalışır.
- Exclusive Feature Bundling (EFB): Özellik mühendisliği sırasında kullanılan bir tekniktir. EFB, benzer davranış gösteren özellikleri gruplayarak bellek kullanımını azaltır ve modelin karmaşıklığını azaltır. Yani seyrek özellikleri birleştirip daha yoğun özellikler oluşturur. Bu sayede, eğitim süresi kısaltılır ve modelin genelleştirme yeteneği artar.
Hiperparametreler
Parametre | Type | Default | Açıklama |
num_leaves | int | 31 | Bir ağaçtaki her seviyedeki maksimum yaprak sayısı. Overfitting olmaması için 2^(max_depth) den küçük olmalıdır. |
max_depth | int | -1 | Bir ağacın maksimum derinliği. |
learning_rate | int | 0.1 | Gradient güncellemeleri sırasında kullanılan öğrenme oranı. |
n_estimators | int | 100 | Oluşturulacak ağaç sayısı. |
min_child_samples | int | 20 | Bir yaprağın altındaki minimum örnek sayısı. |
subsample | int | 1 | Her ağaç için kullanılacak alt örnekleme oranı. |
colsample_bytree | int | 1 | Her ağaç için kullanılan özelliklerin yüzdesi. |
reg_alpha | int | 0 | L1 düzenleme. |
reg_lambda | int | 0 | L2 düzenleme. |