Ana içeriğe atla

Python - Light GBM (Regresyon)

LightGBM, Microsoft DMTK (Distributed Machine Learning Toolkit) projesi kapsamında Gradient Boosting algoritmasına alternatif olarak geliştirilmiştir. Bu algoritma ile daha hızlı eğitim ve daha yüksek doğruluk elde edilmesi amaçlanmıştır.



Light GBM, karar ağacı tabanlı bir öğrenme algoritmasıdır ve en önemli avantajları “yüksek hız”ı, büyük veri setlerini işleme kabiliyeti, kodu çalıştırmak için gereken belleğin daha düşük olması ve sonuçlardaki daha yüksek doğruluk oranları (accuracy) olarak sıralanabilir. Bunun yanında, küçük veri setlerinde, aşırı uyum gösterme veya veriyi ezberleme (overfitting) yatkınlığı olmasından dolayı belirli bir sayı olmasa da 9K-10K’dan daha az sayıdaki veri setleri için pek önerilmeyen bir algoritma.

Parametreler:

learning_rate: Her bir karar ağacının sonuç üzerindeki etkisini gösteriyor. GBM her bir çıktıyı göz önünde tutarak tahminlerini güncelliyor ve bu parametre bu güncellemenin ne büyüklükte olacağını belirliyor. Genelde kullanılan değerler 0.1, 0.001 veya benim de kullandığım gibi 0.003 kullanılıyor.

boosting_type: Hangi algoritmayı kullanacağınızı belirttiğiniz parametre, Default olarak gbdt yani gradient boosting decision tree. Diğer alabileceği değerler rf (random forest), dart (dropouts meet multiple additive regression trees) veya goss (gradient-based one-side sampling). İsterseniz kendi modelinizde bunları da deneyebilirsiniz.

objective: Binary sınıflandırma (müşteri kaybedilecek mi kaybedilmeyecek mi?) problemi olduğu için “binary” değerini seçiyoruz.

metric: Yukarıdaki parametre ile aynı sebepten dolayı “binary_logloss” seçmemiz gerekir.

num_leaves: Tüm karar ağacındaki toplam ayrım (leaves) sayısını gösterir.

min_data: Bir ayrım noktasında olabilecek minimum veri sayısı. Verinin ezberlenmesi (overfitting) konusunda önemli bir parametre. Ne kadar küçülürse modelin veriye aşırı uyum gösterme ihtimali artar.

max_depth: Karar ağacının maksimum derinliğini gösterir. Yukarıdakine benzer bir şekilde veriye aşırı uyum gösterme açısından önemli bir parametre, bunu düşürerek overfitting ihtimalini azaltabilirsiniz.

Modeli yine “Hitters” veri seti ile inceleyeceğim. Veriyi hazırladıktan sonra lightgbm kütüphanesini indiriyorum. Daha sonra LGBMRegressor modülünü indirdikten sonra modelimi kuruyorum.


Modelimi kurduktan sonra test setimi tahmin et dedikten sonra ilkel test hatamı hesaplıyorum.


Şimdi tuning kısmına geçebilirim. Modelimi tekrar çağırıyorum ve modelin argümanlarını inceliyorum. Daha sonra en önemli parametreler için manuel giriş yapıyorum ve bunun üzerinden 10 katlı cross validation yapıyorum.


Sonrasında modele en optimum parametreleri bul dedikten sonra bu değerlere göre modeli tune edip train setimi fit ediyorum. Son olarak, test setimi tahmin et dedikten sonra test hatamı hesaplıyorum.



Yorumlar