Makine öğrenmesi algoritma optimizasyonu

GridSearchCV

Hiperparametre Optimizasyonu için Kapsamlı Bir Kılavuz

Scikit-learn Makine Öğrenmesi Model Optimizasyonu

Temel Özellikler

  • Kapsamlı hiperparametre arama
  • Çapraz doğrulama entegrasyonu
  • Paralel işlem desteği
"GridSearchCV, makine öğrenmesi modellerinin hiperparametrelerini otomatik olarak optimize etmek için kullanılan güçlü bir araçtır."

1. GridSearchCV'ye Giriş

1.1. GridSearchCV Nedir?

GridSearchCV, Python'un Scikit-learn kütüphanesinin model_selection modülünde bulunan ve makine öğrenmesi modellerinin hiperparametrelerini otomatik olarak ayarlamak (tuning) için kullanılan bir fonksiyondur [19], [5]. Hiperparametreler, model eğitilmeden önce belirlenen ve modelin öğrenme sürecini yöneten parametrelerdir.

GridSearchCV, kullanıcı tarafından tanımlanan bir hiperparametre ızgarası üzerinde sistematik bir şekilde arama yapar ve her bir kombinasyonun performansını çapraz doğrulama (cross-validation) kullanarak değerlendirir.

1.2. GridSearchCV'nin Amacı ve Temel Çalışma Prensibi

GridSearchCV'nin temel amacı, bir makine öğrenmesi modelinin hiperparametrelerini optimize ederek modelin genelleme performansını en üst düzeye çıkarmaktır [1], [19].

Temel Çalışma Adımları:

  1. Kullanıcının belirlediği bir hiperparametre ızgarası tanımlanır
  2. Tüm olası kombinasyonlar sırayla denenir
  3. Her kombinasyon için çapraz doğrulama yapılır
  4. En iyi performans metriğine göre optimal kombinasyon seçilir

2. GridSearchCV'nin Çalışma Mekanizması

2.1. Hiperparametre Uzayının Tanımlanması

param_grid = {
    'C': [0.1, 1, 10, 100],          # SVM ceza parametresi
    'gamma': ['scale', 'auto', 0.1, 1],  # RBF çekirdek katsayısı
    'kernel': ['linear', 'rbf']       # Çekirdek fonksiyonu türü
}

param_grid, genellikle bir sözlük (dictionary) veya sözlüklerden oluşan bir listedir. Anahtarlar hiperparametre isimlerini, değerler ise denenmesi istenen değerlerin listesini içerir [5], [12].

2.2. Çapraz Doğrulama ile Model Değerlendirme

graph TD A["Veri Kümesi"] --> B["Kat 1: Eğitim"] A --> C["Kat 1: Test"] A --> D["Kat 2: Eğitim"] A --> E["Kat 2: Test"] A --> F["Kat 3: Eğitim"] A --> G["Kat 3: Test"] A --> H["Kat 4: Eğitim"] A --> I["Kat 4: Test"] A --> J["Kat 5: Eğitim"] A --> K["Kat 5: Test"] B --> L["Model Eğitimi"] D --> L F --> L H --> L J --> L C --> M["Performans Değerlendirme"] E --> M G --> M I --> M K --> M L --> N["Ortalama Skor Hesaplama"] M --> N N --> O["En İyi Model Seçimi"]

GridSearchCV, her bir hiperparametre kombinasyonunun performansını değerlendirmek için çapraz doğrulama (cross-validation) yöntemini kullanır [1]. Çapraz doğrulama, veri kümesini k adet eşit parçaya böler ve modeli k-1 kat üzerinde eğitip kalan 1 kat üzerinde test eder.

2.3. En İyi Modelin Seçimi

Önemli Öznitelikler:

  • best_params_: En iyi hiperparametre kombinasyonu
  • best_score_: En yüksek ortalama çapraz doğrulama skoru
  • best_estimator_: En iyi parametrelerle eğitilmiş model

3. Scikit-learn'de GridSearchCV Kullanımı ve Parametreleri

3.1. GridSearchCV Sınıfının Temel Parametreleri

Parametre Açıklama Varsayılan Değer Örnekler
estimator Hiperparametreleri optimize edilecek model Zorunlu SVC(), RandomForestClassifier()
param_grid Denenecek hiperparametre değerlerinin tanımlandığı sözlük Zorunlu {'C': [1, 10]}, {'kernel': ['linear', 'rbf']}
scoring Model performansını değerlendirmek için kullanılacak metrik None 'accuracy', 'f1_macro'
cv Çapraz doğrulama stratejisi 5 5, StratifiedKFold(n_splits=5)
n_jobs Paralel olarak çalıştırılacak iş sayısı None -1 (tüm çekirdekler), 2
refit En iyi parametrelerle modeli yeniden eğitme True True, False

3.2. GridSearchCV'nin Uygulanması

from sklearn.model_selection import GridSearchCV
from sklearn.svm import SVC
from sklearn.datasets import load_iris

# Veri yükleme
iris = load_iris()
X, y = iris.data, iris.target

# Parametre grid'i tanımlama
param_grid = {
    'C': [0.1, 1, 10, 100],
    'gamma': ['scale', 'auto', 0.1, 1],
    'kernel': ['linear', 'rbf']
}

# GridSearchCV nesnesi oluşturma
grid_search = GridSearchCV(
    estimator=SVC(),
    param_grid=param_grid,
    scoring='accuracy',
    cv=5,
    n_jobs=-1,
    verbose=2
)

# Grid aramasını çalıştırma
grid_search.fit(X, y)

# Sonuçları görüntüleme
print("En iyi parametreler:", grid_search.best_params_)
print("En iyi skor:", grid_search.best_score_)
print("En iyi model:", grid_search.best_estimator_)

4. GridSearchCV'nin Avantajları ve Dezavantajları

Avantajları

  • Kapsamlı Arama: Tüm olası kombinasyonları sistematik olarak dener [5]
  • Çapraz Doğrulama Entegrasyonu: Modelin genelleme yeteneğini güvenilir şekilde ölçer [1]
  • En İyi Parametre Garantisi: Grid içinde mutlak en iyi kombinasyonu bulur [9]

Dezavantajları

  • Hesaplama Maliyeti: Büyük gridlerde çok sayıda kombinasyon denemesi gerekir [1]
  • Zaman Alıcılık: Büyük veri kümelerinde optimizasyon saatler sürebilir [21]

5. GridSearchCV ile Hiperparametre Optimizasyonu Süreci

flowchart TD A["Model Seçimi"] --> B["Hiperparametre Uzayı Tanımlama"] B --> C["GridSearchCV Nesnesi Oluşturma"] C --> D["fit Metodu ile Eğitim"] D --> E["Sonuçların İncelenmesi"] E --> F["En İyi Modelin Seçimi"] F --> G["Test Setinde Değerlendirme"] B --> B1["param_grid tanımlama"] C --> C1["estimator, scoring, cv ayarlama"] E --> E1["best_params_"] E --> E2["best_score_"] E --> E3["best_estimator_"]

1. Model ve Grid Tanımlama

Uygun model seçimi ve hiperparametre uzayının dikkatlice tanımlanması

2. GridSearchCV Çalıştırma

Tüm kombinasyonların çapraz doğrulama ile değerlendirilmesi

3. Sonuç Analizi

En iyi parametrelerin ve modelin elde edilmesi

6. GridSearchCV ve Performans Değerlendirme Metrikleri

6.1. scoring Parametresinin Rolü

scoring parametresi, GridSearchCV'nin hangi performans metriğine göre en iyi hiperparametre kombinasyonunu seçeceğini belirler [5], [12].

Sınıflandırma Metrikleri

  • accuracy - Genel doğruluk
  • f1_macro - F1 skoru (makro ort.)
  • precision - Kesinlik
  • recall - Duyarlılık
  • roc_auc - ROC eğrisi altında kalan alan

Regresyon Metrikleri

  • r2 - R-kare
  • neg_mean_squared_error - Negatif MSE
  • neg_mean_absolute_error - Negatif MAE
  • neg_root_mean_squared_error - Negatif RMSE
  • explained_variance - Açıklanan varyans

6.2. Çoklu Metriklerle Değerlendirme

# Çoklu metrik tanımlama
scoring = {
    'accuracy': 'accuracy',
    'f1_macro': 'f1_macro',
    'precision': 'precision',
    'recall': 'recall'
}

# GridSearchCV'yi çoklu metrikle oluşturma
grid_search = GridSearchCV(
    estimator=SVC(),
    param_grid=param_grid,
    scoring=scoring,
    cv=5,
    n_jobs=-1,
    refit='f1_macro',  # En iyi model seçiminde kullanılacak metrik
    verbose=2
)

Sonuç

GridSearchCV, makine öğrenmesi modellerinin hiperparametre optimizasyonu için güçlü ve kapsamlı bir araçtır. Sistematik arama yaklaşımı ve çapraz doğrulama entegrasyonu sayesinde, modellerin genelleme performansını önemli ölçüde artırabilir. Ancak, hesaplama maliyeti ve zaman gereksinimleri dikkate alınmalı, büyük ölçekli problemlerde RandomizedSearchCV veya HalvingGridSearchCV gibi alternatif yöntemler de değerlendirilmelidir.