Python ile Grid Search ile Model Optimizasyonu Örneği

Giriş: Grid Search Nedir?

Makine öğrenmesi, model geliştirme ve optimizasyon sürecinin önemli bir parçasıdır. Model performansını artırmak için farklı hiperparametrelerin belirlenmesi gerekir. İşte burada, Grid Search devreye girer. Grid Search, verilen bir modelin hiperparametreleri üzerinde sistematik bir şekilde arama yaparak en iyi sonuçları bulmayı hedefleyen bir tekniktir. Python’da bu işlemi gerçekleştirmek için genellikle Scikit-learn kütüphanesi kullanılır.

Bu yöntem, farklı hiperparametre kombinasyonlarını dener ve bu kombinasyonların her birinin model üzerindeki etkisini değerlendirir. Sonuç olarak, en iyi performans gösteren hiperparametre setini belirlemek için, modelin doğruluk, hata oranı gibi performans metriklerini kullanır. Böylece, modelin optimize edilmiş bir versiyonuna ulaşmak mümkün olur.

Bu yazıda, Python kullanarak Grid Search uygulamasının nasıl gerçekleştirileceğine dair adım adım bir rehber sunacağım. Kullanıcılara, örnek bir veri seti ile Grid Search yöntemi kullanarak sadece modelin doğru bir şekilde eğitilmesini değil, aynı zamanda en uygun hiperparametrelerin de belirlenmesini sağlayacak bir süreç sunacağım.

Adım 1: Gerekli Kütüphanelerin Yüklenmesi

Öncelikle, gerekli kütüphaneleri yüklememiz gerekiyor. Bu örnekte, Scikit-learn, Pandas ve NumPy kütüphanelerini kullanacağız. Scikit-learn, makine öğrenmesi için birçok araç sunan popüler bir kütüphanedir. Pandas, veri manipülasyonu için mükemmel bir kütüphanedir ve NumPy, sayısal işlemler için kullanılır.

Python ortamında bu kütüphaneleri yüklemek için şu komutları kullanabilirsiniz:

pip install numpy pandas scikit-learn

Bu komutlar, gerekli kütüphaneleri indirip projeye ekleyecektir. Yükleme tamamlandıktan sonra, kütüphaneleri projemizde kullanıma alabiliriz.

Adım 2: Veri Setinin Yüklenmesi ve Hazırlanması

Daha sonra, bir veri seti yükleyelim. Örneğin, Scikit-learn kütüphanesinin içindeki iris veri setini kullanabiliriz. Bu veri seti, çiçek türleri üzerindeki özellikleri içermektedir ve makine öğrenmesi modelimizi test etmek için güzel bir örnek sunmaktadır.

from sklearn.datasets import load_iris
import pandas as pd

# Iris veri setini yükleme
iris = load_iris()
X = iris.data
y = iris.target

# DataFrame oluşturma
df = pd.DataFrame(X, columns=iris.feature_names)
df['target'] = y
print(df.head())

Yukarıdaki kod, iris veri setini yükleyip bir DataFrame’e dönüştürecektir. Veri setinin özellikleri üzerine bir göz atmak için print(df.head()) komutu kullanıldı. Bu sayede verimizin ilk birkaç satırını görebiliyoruz.

Adım 3: Modelin Oluşturulması

Grid Search öncesinde, bir makine öğrenmesi modeli oluşturmamız gerekmektedir. Burada, Sklearn kütüphanesine ait, ‘RandomForestClassifier’ modelini kullanacağız. Random Forest, karar ağaçları kullanarak sınıflandırma yapan bir modeldir ve genellikle yüksek doğruluk oranlarına sahiptir.

from sklearn.ensemble import RandomForestClassifier

# Modeli oluşturma
model = RandomForestClassifier(random_state=42)

Yukarıdaki kod, bir RandomForestClassifier nesnesi oluşturarak modeli tanımlamaktadır. random_state=42 parametresi, sonuçların tekrar edilebilir olmasını sağlamak için kullanılır.

Adım 4: Hiperparametrelerin Tanımlanması

Hiperparametreleri tanımlamak için bir parametre ızgarası oluşturmalıyız. Örneğin, n_estimators ve max_depth hiperparametrelerinin belirli değer aralıkları üzerinde araştırma yapacağız. n_estimators, orman içerisindeki ağaç sayısını ifade ederken, max_depth, ağaçların maksimum derinliğini belirtir.

parametreler = {
    'n_estimators': [10, 50, 100],
    'max_depth': [None, 5, 10, 20]
}

Yukarıdaki kodda, parametreler adlı bir sözlükte, denenecek hiperparametrelerin değerleri tanımlanmıştır. Bu aşamada, daha fazla hiperparametre de ekleyerek ızgarayı genişletebiliriz.

Adım 5: Grid Search Uygulaması

Şimdi, Grid Search uygulamasına geçiyoruz. GridSearchCV sınıfını kullanarak modelimizi ve hiperparametreleri atayabiliriz. Modelimizi değerlendirirken 5 katmanlı çapraz doğrulama kullanacağız; böylece modelin genellenebilirliğini artırmış olacağız.

from sklearn.model_selection import GridSearchCV

# Grid Search nesnesi oluşturma
grid_search = GridSearchCV(estimator=model, param_grid=parametreler, cv=5)

# Modeli eğitme
grid_search.fit(X, y)

Yukarıdaki kodda, GridSearchCV sınıfı model ve hiperparametreler ile birlikte tanımlandı, daha sonra eğitim verileri ile fit() metodu kullanılarak model eğitildi.

Adım 6: Sonuçların Analizi

Grid Search işlemini tamamladıktan sonra en iyi hiperparametrelerimizi alabiliriz. Bunun için best_params_ ve best_score_ özelliklerini kullanacağız. Bu değerler, iterasyon sırasında ulaşılan en iyi parametre setini ve bu konfigürasyon ile elde edilen en yüksek doğruluk oranını gösterir.

print("En iyi hiperparametreler:", grid_search.best_params_)
print("En yüksek doğruluk oranı:", grid_search.best_score_)

Bu çıktılar, Grid Search süreci sırasında hangi parametrelerin en iyi performansı gösterdiğini ve modelin başarımını değerlendirir. Öğrenilen bu bilgiler, modelinizi geliştirmenin yanı sıra, gelecekteki projeler için de referans niteliğindedir.

Adım 7: Modelin Test Edilmesi

Son olarak, elde edilen en iyi model kullanılabilir. Bunun için best_estimator_ özelliğinden faydalanarak en iyi modeli aldık ve test verileri üzerinde değerlendirmeler yapabiliriz. Eğitim seti dışındaki verilerde modelin performansını ölçmek, genel geçerli sonuçlar elde etmek bakımından gereklidir.

en_iyi_model = grid_search.best_estimator_
sonuc = en_iyi_model.score(X, y)
print("Test verileri ile elde edilen doğruluk oranı:", sonuc)

Yukarıdaki kod, en iyi modelin eğitim verileri dışında ne kadar iyi performans gösterdiğini ölçmektedir. Böylece modelin genelleme kabiliyeti hakkında fikir sahibi olabilirsiniz.

Sonuç

Grid Search yöntemi, makine öğrenmesi projelerinde hiperparametre optimizasyonu için oldukça faydalı bir araçtır. Python kullanarak gerçekleştirdiğimiz bu örnek sayesinde, modelin performansını artırmak için nasıl bir süreç izlemeniz gerektiğini öğrendiniz. Geliştirdiğiniz modellerde Grid Search uygulayarak, en uygun parametreleri belirleyebilir ve doğru sonuçlara ulaşabilirsiniz.

Unutmayın, farklı hiperparametre kombinasyonlarının sonuçlarını görmek, modelin öğrenme sürecini ve geçerliliğini artırmada oldukça yararlı olacaktır. Makine öğrenmesi alanındaki yeni gelişmeleri takip ederek, sürekli olarak kendinizi geliştirebilir, projelerinizde daha iyi sonuçlar elde edebilirsiniz.

Bu yazıda öğrendiğiniz bilgileri kendi projelerinize uygulamaktan çekinmeyin. Hem teorik hem de pratik bilgi edinmek, makine öğrenmesine olan ilginizi daha da pekiştirecektir. Şimdi harekete geçme zamanı!

Scroll to Top