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ı:
- Kullanıcının belirlediği bir hiperparametre ızgarası tanımlanır
- Tüm olası kombinasyonlar sırayla denenir
- Her kombinasyon için çapraz doğrulama yapılır
- 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
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ı
5. GridSearchCV ile Hiperparametre Optimizasyonu Süreci
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ğrulukf1_macro- F1 skoru (makro ort.)precision- Kesinlikrecall- Duyarlılıkroc_auc- ROC eğrisi altında kalan alan
Regresyon Metrikleri
r2- R-kareneg_mean_squared_error- Negatif MSEneg_mean_absolute_error- Negatif MAEneg_root_mean_squared_error- Negatif RMSEexplained_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.