Matematiği ve Python Uygulamasıyla LightGBM

Kübra Kurt
KaVe
Published in
4 min readMar 18, 2020

--

Microsoft tarafından oluşturulmuş ve geliştirilmiştir. Kullanımı her geçen gün artmaktadır. Yarışmalarda en başarılı modeller arasında yer edinmiştir. Kaggle platformu yarışmalarında da en çok tercih edilen modellerden birisidir. Bunun sebebi ise diğerlerine göre oldukça hızlıdır ve en başarımlı sonuçlar elde edilen modeller arasındadır. Bu da tercih oranının olumlu yönde artmasını sağlar. LightGBM(LGB); Bir GBM türüdür. Gradyan artırıcı bir çerçevedir. Birçok model gibi ağaç tabanlı öğrenme algoritmalarını kullanır.

Veriler gün geçtikçe büyüyor. Geleneksel modellerin de bu sebeple hızlı sonuç vermesi zorlaşıyor. LGB ise daha iyi çalışması için histogram tabanlı algoritmalar kullanır. Kategorik değişkenler için histogramı biriken değerlerine göre sıralar. Sıralanan histogramda en iyi bölünmeyi seçer. Bu sayede eğitim hızlanır ve bellek kullanımı azalır. Sonuçların doğruluğuna odaklıdır.

Veri büyük olduğu zaman hızlanamadığı için değişiklik yapar ve tüm verileri elinde tutar. Dikey olarak bölme yapmaz.

Çeşitli deneyimlerde bulunanlar tarafından 10.000 fazla satır içeren veriler için kullanımı önerilirken küçük veri setlerinde kullanımı önerilmemektedir.

Genel olarak da diğerlerinden ayırıcı özelliklerini burada toplarsak;

  • Daha hızlı ve daha yüksek verimlilik sağlar.
  • Daha az bellek kullanımı ile daha iyi performans gösterir.
  • Daha iyi doğruluğa odaklıdır.
  • Büyük veriler işleyebilir.
  • Paralel ve GPU öğrenimini destekler.

LightGBM Algoritması

Veriler gün geçtikçe büyüyor ve daha hızlı, doğruluğa odaklı ve yüksek başarımlı sonuç elde edilmesi gereken yeni yöntemlere ihtiyaç artmıştır. LGB algoritması Microsoft tarafından bu amaçlara yönelik geliştirilmiştir. LGB algoritması karar ağaçları tabanlı topluluk öğrenme algoritmasıdır.

Çoğu karar ağacı algoritmaları aşağıdaki gibi seviye odaklı (level-wise) bölünme kullanır.

LGB ise aşağıdaki gibi yaprak odaklı (leaf-wise) bölünme kullanır.

Leaf-wise, level-wise’a göre kaybı en çok azaltacak olan yaprakları bulur ve seçer. Sadece o yaprağı böler.

Breadth - First Search (BFS) yerine Depth-First Search (DFS) kullanır.

BFS, en yakın komşuları ziyaret eder. DFS ise gidebildiği yere kadar gitmeyi, daha sonra geri dönerek grafı dolaşmayı hedefler.

Gradient-Based One-Side Sampling & Exclusive Feature Bundling

Algoritmanın başarısında etkili olan iki farklı teknik daha vardır. Gradyan tabanlı tek yönlü örnekleme (Gradient-Based One-Side Sampling, GOSS) ve ayrıcalıklı özellik desteleme (Exclusive Feature Bundling, EFB) algoritmalarıdır.

GOSS

GOSS, örnek veri sayısını azaltır. Verinin tümü yerine alt örneklem kümesi kullanılır.

EFB

EFB ise seyrek özellikleri birleştirip daha yoğun özellikler oluşturur. Bu da öğrenme sırasında karmaşıklığı azaltır. Bu işlemler de LGB’nin daha hızlı çalışmasını sağlamaktadır.

Genel Formül:

GBM = Desicion Tree + Boosting + Gradient Descent
LightGBM = GBM + GOSS + EFB

LightGBM Uygulama

Veri seti Besin Değerlerini ve hangi sınıfta olduğunu içermektedir.

İlk önce kütüphaneleri import ediyoruz.

Verileri yüklüyoruz. ID değişkenini de kullanmayacağımız için veriden çıkarıyoruz.

Eksik değer var mı diye kontrol ediyoruz.

Class değişkenini encod ediyoruz.

Class değişkeni dışındaki bütün değişkenleri numeric değişkene dönüştürüyoruz. Aykırı değerler oluştuğu için errors = “coerce” aldık.

Aykırı değerler NaN olarak dönüştü ve eksik değerler oluştu. Onları ortalama ile dolduruyoruz.

Son olarak modellemeye geçmek için gerekli değişkenleri oluşturuyoruz.

Şimdi de sıra model kurmaya geldi. Modelimizi kurup test verisi üzerinde test ettikten sonra modelin doğruluğuna bakıyoruz.

GridSearchCV ile model parametrelerini optimize etmeye çalışıyoruz.

Bu parametreler arasından en iyi sonucu verecek parametlere göz atıyoruz.

Elde ettiğimiz parametreleri alarak tekrar modeli kuruyoruz. Ardından tekrar test verisi üzerinde tahmin ederek doğruluğa bakıyoruz.

GridSearchCV uygulamamız modelin doğruluk oranını çok küçük bir miktar düşürdü. Şimdi de değişken önem düzeylerini kontrol edelim.

--

--