Hyperparameter Tuning

Table of Contents

Makine öğrenimi projelerinde, modelin performansını etkileyen birçok faktör vardır. Bunlardan biri de hyperparameter’lerdir. Hyperparameter’ler, modelin yapılandırılmasını ve davranışını kontrol eden parametrelerdir. Ancak, bu parametrelerin doğru değerlerini bulmak genellikle deneme yanılma yöntemiyle mümkün olur. İşte bu noktada, hyperparameter tuning (hiperparametre ayarlama) devreye girer.

Hyperparameter tuning, makine öğrenimi modellerinde kullanılan hyperparameter’lerin en iyi değerlerini bulmayı amaçlayan bir süreçtir. Bu süreç, genellikle deneme yanılma yöntemiyle gerçekleştirilir. Yani, farklı hyperparameter değerleri deneyerek en iyi performansı sağlayan kombinasyonu bulmaya çalışır. Hyperparameter tuning, modelin doğruluğunu artırabilir, overfitting’i önleyebilir ve genelleme yeteneğini iyileştirebilir.

Grid Search, parametrelerin bir ızgara gibi düzenlendiği ve her hiperparametre kombinasyonunun denendiği bir arama sürecini içerir. Bu yöntem, belirli bir hiperparametre uzayında tüm olası kombinasyonları deneyerek en iyi hiperparametre setini bulmayı amaçlar. Avantajları;

  • Tüm hiperparametre kombinasyonlarını denediği için en iyi sonuçları elde etme olasılığı yüksektir.
  • Basit ve anlaşılır bir yaklaşım, hiperparametrelerin aralığını ve adım büyüklüğünü belirlemek kolaydır.
  • Küçük veri setleri için etkili olabilir.

Dezavantajları;

  • Hesaplama maliyeti yüksektir, çünkü tüm kombinasyonlar denendiğinden, büyük veri setlerinde veya çok sayıda hiperparametrele sahip modellerde kullanmak zaman alabilir.
  • Izgara araması, hiperparametreler arasındaki etkileşimleri dikkate almaz.
  • Optimum hiperparametrelerin belirlenmesi için birçok deneme gerekebilir.
from sklearn.model_selection import GridSearchCV
from sklearn.svm import SVC

# Hiperparametreler ve deger araliklari
param_grid = {'C': [0.1, 1, 10], 'kernel': ['linear', 'rbf']}

# Model
svm_model = SVC()

# Grid Search
grid_search = GridSearchCV(estimator=svm_model, param_grid=param_grid, cv=5, scoring='accuracy')
grid_search.fit(X_train, y_train)

# En iyi hiperparametre kombinasyonu ve sonuc
best_params = grid_search.best_params_
best_score = grid_search.best_score_

print("En iyi hiperparametreler:", best_params)
print("En iyi dogruluk:", best_score)

Random Search, Grid Search gibi tüm hiperparametre kombinasyonlarını denemek yerine rastgele seçilen hiperparametre kombinasyonlarını kullanarak modelin performansını değerlendirir. Bu yöntem daha verimli olabilir ve daha iyi sonuçlar elde etme olasılığı yüksektir. Avantajları;

  • Hesaplama maliyeti, Grid Search’e göre genellikle daha düşüktür, çünkü rastgele kombinasyonlar denendiğinden daha az model eğitilir.
  • Optimum hiperparametreleri belirleme olasılığı Grid Search’e göre daha hızlıdır, özellikle büyük hiperparametre uzaylarında.

Dezavantajları;

  • En iyi sonuçları elde etmek için daha fazla denemeye ihtiyaç duyabilir, çünkü rastgele kombinasyonlar şansa bağlıdır.
  • Hiperparametreler arasındaki etkileşimleri yakalamak zor olabilir, çünkü rastgele seçilen kombinasyonlar arasında bu etkileşimler olmayabilir.
from sklearn.model_selection import RandomizedSearchCV
from sklearn.svm import SVC

# Hiperparametreler ve deger araliklari
param_dist = {
    'C': np.arange(1, 10, 1),
    'kernel': ['linear', 'rbf']
}

# Model
svm_model = SVC()

# Random Search
random_search = RandomizedSearchCV(estimator=svm_model, param_distributions=param_dist, n_iter=10, cv=5, scoring='accuracy')
random_search.fit(X_train, y_train)

# En iyi hiperparametre kombinasyonu ve sonuc
best_params = random_search.best_params_
best_score = random_search.best_score_

print("En iyi hiperparametreler:", best_params)
print("En iyi dogruluk:", best_score)