Cuma, Mart 29, 2024
Ana SayfaMakine ÖğrenmesiHer Veri Bilimcisinin Bilmesi Gereken 7 Hiperparametre Optimizasyon Tekniği

Her Veri Bilimcisinin Bilmesi Gereken 7 Hiperparametre Optimizasyon Tekniği

Sağlam bir makine öğrenimi modeli eğitmek için doğru makine öğrenimi modelini ve karşılık gelen doğru hiperparametre setini seçmek çok önemlidir. Makine öğrenimi modelinin performansı, hiperparametre ayarlamasıyla artar.

Hiperparametreler, modelin öğrenemediği ve eğitimden önce sağlanması gereken parametreleri ifade eder. Hiperparametre ayarlaması temel olarak, temelde uzun bir süreç olan modelin parametrelerinin ayarlanmasını ifade eder.

Bu yazıda, uygulamalı örneklerle birlikte Hiperparametre Optimizasyonu için 7 tekniği ele alacağız.

Hiperparametre Optimizasyonu Kontrol Listesi:

1) Manual Search
2) Grid Search
3) Randomized Search
4) Halving Grid Search
5) Halving Randomized Search
6) HyperOpt-Sklearn
7) Bayes Search

 

Kredi Kartı Dolandırıcılık Tespiti veri seti, temel bir lojistik regresyon modeli eğitmek için kullanılacaktır. Lojistik regresyon modelinin diğer hiperparametreleri, performansı iyileştirmek için çeşitli teknikler kullanılarak ayarlanacaktır.

 

import pandas as pd

from sklearn.model_selection import train_test_split

 # Read CSV

 datasetdf = pd.read_csv(“data/creditcard.csv”)

df = df.drop([‘Time’], axis=1)

# Train Test Split

y = df[‘Class’]

X = df.drop(‘Class’, axis=1)

X_train, y_train, X_test, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

Manual Search

Hiperparametrelerin manuel olarak ayarlanması için özel bir kitaplığa ihtiyaç yoktur, bunun yerine geliştiricinin model için farklı hiperparametre kombinasyonunu denemesi ve en iyi performansı gösteren modeli seçmesi gerekir. max_depth, gamma, reg_lambda, scale_pos_weight, bir XBGClassifer modeli için ayarlanabilen hiperparametrelerden bazılarıdır.

Tüm hiperparametre değerleri kombinasyonlarını deneyebilir ve her biri için modeller eğitebilir ve en iyi performansa sahip modeli seçebiliriz. Farklı hiperparametre değerleri arasında döngü yapmak ve her kombinasyon için değerlendirme yapmak, hiperparametre optimizasyonu için başka bir manuel arama yaklaşımı olabilir.

 

# 3 sets of hyperparameters

params_1 = {‘criterion’: ‘gini’, ‘splitter’: ‘best’, ‘max_depth’: 10}

params_2 = {‘criterion’: ‘entropy’, ‘splitter’: ‘random’, ‘max_depth’: 1000}

params_3 = {‘criterion’: ‘gini’, ‘splitter’: ‘random’, ‘max_depth’: 100} 

# Model 1

model.set_params(**param_1).fit(X_train, y_train)

print(f’Accuracy on Model 1 = {round(accuracy_score(y_test, model.predict(X_test)), 5)}’)

# Model 2

model.set_params(**param_2).fit(X_train, y_train)

print(f’Accuracy on Model 1 = {round(accuracy_score(y_test, model.predict(X_test)), 5)}’)

# Model 3

model.set_params(**param_3).fit(X_train, y_train)

print(f’Accuracy on Model 1 = {round(accuracy_score(y_test, model.predict(X_test)), 5)}’)

 

Grid Search

Grid Seach, manuel arama hiperparametre optimizasyonunun otomatikleştirilmiş bir versiyonu olarak adlandırılabilir. Scikit-Learn kütüphanesi, bir GridSearchCV uygulamasıyla birlikte gelir. GridSearch, optimize etmesi çok zaman aldığı için hesaplama dostu değildir, ancak birden fazla kod satırı yazmaktan kurtulabilir.

Eğitim modeli ve hiperparametreler listesi bir sözlük biçiminde GridSeachCV işlevine ve geri dönüşleri performans modeli ve puanlama metriğiyle beslenebilir.

from sklearn.model_selection import GridSearchCV

grid_cv = GridSearchCV(clf, param_grid, scoring=”accuracy”, n_jobs=-1, cv=3)

grid_cv.fit(X_train, y_train)

print(“Best Params”, grid_cv.best_params_)

print(“Best CV Score”, grid_cv.best_score_)

print(f’Accuracy on Model 1 = {round(accuracy_score(y_test, grid_cv.predict(X_test)), 5)}’)

Randomized Search

Grid Search, tüm hiperparametre kombinasyonlarını dener, dolayısıyla hesaplamanın zaman karmaşıklığını arttırır. Randomized Search, modeli rastgele hiperparametre kombinasyonuna göre eğitir. Birkaç modelin eğitildiği toplam kombinasyon sayısı, Grid aramasına kıyasla rastgele arama için daha azdır.

Scikit-Learn paketi ayrıca RandomSearchCV uygulamasıyla birlikte gelir.

from sklearn.model_selection import RandomizedSearchCV

grid_cv = RandomizedSearchCV(clf, param_grid, scoring=”accuracy”, n_jobs=-1, cv=3)

grid_cv.fit(X_train, y_train) 

print(“Best Params”, grid_cv.best_params_)

print(“Best CV Score”, grid_cv.best_score_)

print(f’Accuracy on Model 1 = {round(accuracy_score(y_test, grid_cv.predict(X_test)), 5)}’)

Halving Grid Search

Halving Grid Search, Grid Search hiperparametre optimizasyonunun optimize edilmiş bir sürümüdür. Halving Grid Search, ardışık bir ikiye bölme yaklaşımı kullanarak belirli bir hiperparametre listesi üzerinde arama yapar. Arama stratejisi, tüm adayları küçük bir veri örneklemi üzerinde değerlendirmeye başlar ve giderek daha fazla sayıda örnek kullanarak en iyi adayları yinelemeli olarak seçer.

Grid Search’ü yarıya indirmek, Grid Search yaklaşımına göre hesaplama açısından daha ucuzdur. Scikit-Learn kitaplığı, HalvingGridSearch uygulamasıyla birlikte gelir.

from sklearn.model_selection import HalvingGridSearchCV 

halving_cv = HalvingGridSearchCV(clf, param_grid, scoring=”accuracy”, factor=3)

halving_cv.fit(X_train, y_train) 

print(“Best Params”, halving_cv.best_params_)

print(“Best CV Score”, halving_cv.best_score_)

print(f’Accuracy on Model 1 = {round(accuracy_score(y_test, halving_cv.predict(X_test)), 5)}’)

Halving Randomized Search

Randomized Search’ü yarıya indirmek, aynı ardışık yarıya bölme yaklaşımını kullanır ve Grid Search’e göre daha da optimize edilmiştir. Halving Grid Search’ten farklı olarak, tüm hiperparametre kombinasyonları üzerinde eğitilmez, bunun yerine rastgele bir dizi hiperparametre kombinasyonu seçer. Scikit-Learn kitaplığı ayrıca HalvingRandomizedSeachCV ile birlikte gelir.

from sklearn.model_selection import HalvingRandomSearchCV 

halving_cv = HalvingRandomSearchCV(clf, param_grid, scoring=”accuracy”, factor=3)

halving_cv.fit(X_train, y_train) 

print(“Best Params”, halving_cv.best_params_)

print(“Best CV Score”, halving_cv.best_score_)

print(f’Accuracy on Model 1 = {round(accuracy_score(y_test, halving_cv.predict(X_test)), 5)}’)

Hyperopt-Sklearn

Hyperopt, yüzlerce parametreye sahip modellerin büyük ölçekli optimizasyonları için tasarlanmış, Bayesian Optimizasyonu için açık kaynaklı bir Python kitaplığıdır. Hiperparametre optimizasyonunun CPU’nun birden çok çekirdeği arasında ölçeklenmesini sağlar.

Hyperopt-Sklearn, makine öğrenimi algoritmalarının otomatik olarak aranmasına ve sınıflandırma ve regresyon görevleri için model hiperparametrelerine izin veren, Hyperopt kitaplığının bir uzantısıdır.

Bayes Grid Search

Bayes Grid Search, optimize edilmiş parametre değerlerine mümkün olan en kısa sürede ulaşmak için arama alanını modellemek için Bayes optimizasyon tekniğini kullanır. Arama süresini optimize etmek için arama uzayının yapısını kullanır. Bayes Search yaklaşımı, daha iyi sonuçlar verme olasılığı en yüksek olan yeni adayları örneklemek için geçmiş değerlendirme sonuçlarını kullanır.

RELATED ARTICLES

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz

Bizi Takip Edin

4,200BeğenenlerBeğen
10,000TakipçilerTakip Et
296TakipçilerTakip Et
1,400AboneAbone Ol

BÜLTENİMİZE ABONE OLUN

Popüler