Low-Code Makine Öğrenmesi Süreci — PyCaret

Ata Özarslan
İstanbul Data Science Academy
5 min readMar 18, 2024

--

Eğer veri bilimi, makine öğrenmesi, yapay zeka gibi konu başlıkları altında belirli bir zamandır çalışıyorsanız ya da proje geliştiriyorsanız, bazı işlem adımlarını sürekli olarak tekrarladığınızı muhtemelen fark etmişsinizdir. Bu konuda bazı şirketler kendi hazırlamış oldukları kod bloklarını kullanırken, bazı şirketler de bu işlemleri biraz daha hızlandırmak için çeşitli yazılımlar satın alırlar.

Bugün de sizlerle, işte tam olarak bu ihtiyaçlar doğrultusunda geliştirilen güzel bir aracı tanıyacağız. Eğer siz de merak ettiyseniz PyCaret ile sizleri tanıştırabiliriz :)

PyCaret’in geliştiricileri, bu aracın kimler için uygun olduğunu ise şu şekilde sıralıyor:

  • Üretkenliği Artırmak İsteyen Deneyimli Veri Bilimciler
  • Düşük Kodlu Bir Makine Öğrenmesi Çözümü Arayan Yeni Veri Bilimciler
  • Hızlı Prototipler Oluşturmak İsteyen Veri Bilimi Uzmanları
  • Veri Bilimi ve Makine Öğrenmesi Öğrencileri ve Meraklıları

Peki asıl önemli soru ise şu, PyCaret bize neler sunuyor?

https://pycaret.gitbook.io/docs

Yukarıdaki şekilde de görüldüğü üzere kendisi aslında bir model geliştirme sürecindeki birçok adımda aktif rol aldığını belirtiyor. O zaman şimdi gelin bu özellikleri daha detaylı bir şekilde inceleyelim.

1. Veri Hazırlama (Data Preparation)

Veri hazırlama aşamaları, veri analizi ya da makine öğrenmesi süreçlerinin ilk ve genellikle en ciddi zaman alan aşamasıdır. Bakalım PyCaret bize bu konuda nasıl yardımcı olabiliyor?

NOT: Çalışmalarımızda kullanmak için pycaret kütüphanesinin bizlere sağlamış olduğu basit bir veri setinden yararlanacağız. Bunun için aşağıdaki kod bloğunu yazmamız yeterli olacak.

from pycaret.datasets import get_data

data = get_data('insurance')

Bu işlem sonucunda aşağıdaki veri setiyle karşılaşacağız.

Insurance Veri Seti

Şimdi bu veri setindeki charges sütunundaki sayısal değerleri tahmin eden bir regresyon modeli geliştirmeye çalışalım. Eğer bu alanda daha önce çalışma yaptıysanız, bu basit veri setinden bile bir model oluşturmak istediğimizde yapmamız gereken bazı temel işlem adımları olduğunu zaten biliyorsunuzdur.

PyCaret, veri setinizi hiçbir işleme tabi tutmasanız bile bizim için bazı temel işlem adımlarını arka planda gerçekleştirir. Bunun detayına inmek tabiki bize kalmış :)

PyCaret’da bir regresyon modeli oluşturmak istediğimizde yalnızca hedef değişkenimizi (target) belirtmemiz yeterlidir! Bu işlem adımı için setup fonksiyonunu kullanacağız.

from pycaret.regression import setup

setup = setup(data, target='charges')

Yukarıdaki kod bloğunu çalıştırdığımızda karşımıza yapılan işlem hakkında bize bilgi veren uzunca bir tablo çıkacak. Bu tabloda yer alan değerlerin ne anlama geldiğini yanlarındaki açıklamalardan bakabilirsiniz.

Ön Tanımlı Model Ön İşleme Adımları

Yukarıdaki ekran görüntüsünde de görüldüğü üzere,

  • Eğitim ve test seti bölümlemesi
  • Veri setindeki boş değerlerin doldurulması
  • Kullanılan cross-validation methodu ve sayısı

gibi bir dizi işlemin bizim yerimize gerçekleştirildiğini görüyoruz. Ancak kendi bilgimizi kullanarak bu işlem adımlarını istediğimiz gibi modifiye edebiliriz. Örneğin aynı işlemi veri setimizdeki aykırı değerlerin kaldırılmasını istediğimizi belirterek gerçekleştirelim.

setup = setup(data, target='charges', remove_outliers='True')
Aykırı Değerlerin Kaldırılmasından Sonra Veri Boyutunun Değişimi

Yukarıdaki ekran görüntüsünde de görüldüğü üzere, veri setimizden toplamda 47 adet gözlemin içerisinde aykırı değer barındırdığından dolayı kaldırıldığını görüyoruz.

Örneğin, bu sefer de verilerimizi ölçeklendirmek için MinMaxScaler yöntemini kullanmak istediğimizi belirtelim.

setup = setup(data, target='charges', remove_outliers='True',
normalize=True, normalize_method='minmax')

Aşağıda veri setimizin MinMaxScaler yöntemi kullanarak ölçeklendirmiş halini görebilirsiniz.

MinMaxScaler Uygulandıktan Sonra Veri Setindeki Değişim

İşte veri hazırlama işlemleriyle uğraşırken PyCaret’in bize sunmuş olduğu bu ve bunun gibi çok daha fazla özelliği kullanarak veri ile olan ön işleme aşamalarımızı hızlandırabiliriz.

Daha fazlası için: https://pycaret.gitbook.io/docs/get-started/preprocessing

2. Model Eğitme (Model Training)

Verilerimizi nasıl hazırlayacağımıza dair bazı seçenekleri incelediğimize göre sıra geldi kullanacağımız modele karar vermeye. Hadi bunun için de bazı denemeler yapalım…

PyCaret, bizim için birçok algoritmayı kullanarak bir dizi model ortaya çıkarır ve bu modellerin başarı metriklerini hesaplar. Bizim yapmamız gereken ise gerekli incelemeleri yaptıktan sonra hangisinin ana modelimiz olacağına karar vermek. Bunun için compare_models fonksiyonunu kullanacağız.

from pycaret.regression import compare_models

# Veri setinin %80'inin eğitimde kullanılmasını istiyorum
setup = setup(data, target='charges', train_size=0.8)

# Sonuç tablosunu R2 değerine göre sıralamasını istiyorum
compare = compare_models(sort='R2')
Regresyon Model Deney Sonuçları

Yukarıdaki deneyler sonucunda en yüksek başarıya sahip modelimiz Gradient Boosting Regressor (gbr) olduğuna göre artık ana modelimizi oluşturabiliriz. Bunun işlem adımı için create_model fonksiyonunu kullanacağız.

from pycaret.regression import create_model

# Eğitim veri setindeki başarıları da görmek istiyorum
gbr = create_model('gbr', return_train_score=True)
Model Eğitimi Sonucu Elde Edilen Cross-Validation Yapılmış Sonuçlar

Tüm bunlara ek olarak ayrıca, kolaylıkla seçmiş olduğunuz modelimizin parametrelerini de optimize edebiliriz. Bunun işlem adımı için tune_model fonksiyonunu kullanacağız.

from pycaret.regression import tune_model

# Scikit-Learn kütüphanesinin RandomizedSearch yöntemini kullanmak istiyorum
tune_model(gbr, search_library='scikit-learn', search_algorithm='random')
100 Eğitim Sonucundaki Hiperparametreler ile En İyi Model Sonuçları

Daha fazlası için: https://pycaret.gitbook.io/docs/get-started/functions/train

Daha fazlası için: https://pycaret.gitbook.io/docs/get-started/functions/optimize

3. Model Sonuçları (Model Results)

Şu ana kadar birçok inceleme yaptık, ancak sizde biliyorsunuz ki modelleri anlamak için sadece yukarıdaki tabloda bulunan değerlere bakmak çoğu durumda yeterli olmuyor. İşte bu noktada karşımıza çıkan 2 ana başlık,

  • Modeli Değerlendirme (Model Evaluation)
  • Modeli Açıklama (Model Interprelability)

İlk olarak modelimizi görseller üzerinden değerlendirme üzerine konuşalım. PyCaret’in evaluate_model fonksiyonunu kulladığımızda model davranışını değerlendirebileceğimiz interaktif grafikler bizi karşılayacak.

from pycaret.regression import evaluate_model

evaluate_model(gbr)

Burada kesinlikle incelemeye değer birçok grafik bulacaksınız.

Eğitim ve Test Verilerindeki Hata Dağılımı
Model Eğitiminde Kullanılan Gözlem Sayısının Model Üzerindeki Etkisi

Model açıklanabilirliği, birçok makine öğrenmesi problemindeki en temel ihtiyaçlardan biri. Neyseki bu konuda da elimiz oldukça güçlü. Bu konuda PyCaret model açıklanabilirliği konusunda kullanılan en popüler yöntemlerden biri olan SHAP değerlerinden yararlanır.

Yapmamız gereken tek şey interpret_model fonksiyonunu kullanmak.

from pycaret.regression import interpret_model

interpret_model(gbr)
SHAP Summary Plot

Ek olarak interpret_model fonksiyonunun parametrelerini değiştirerek değerlendirmelerinize farklı bakış açıları da katabilirsiniz.

from pycaret.regression import interpret_model

# Age değişkenini kullanarak korelasyon grafiğini görmek istiyorum
interpret_model(gbr, plot='correlation', feature='age')
SHAP Scatter Plot

Daha fazlası için: https://pycaret.gitbook.io/docs/get-started/functions/analyze

--

--