Ana içeriğe atla

Veri Biliminde Bayesçi Optimizasyonu Ustalaşmak

Makine Öğreniminde hiperparametre ayarı için Bayesçi Optimizasyonun gücünü açığa çıkarın. Kuramsal temelleri ve Python ile pratik uygulamaları öğrenerek model doğruluğunu artırın.
Güncel 3 Eki 2026  · 11 dk. oku

Yapay Zeka ile Keşfedin

ChatGPTClaudePerplexity

Makine Öğrenimi alanında, model eğitimi sırasında en iyi hiperparametreleri bulmak için geniş ve karmaşık veri kümelerinde gezinme zorluğu yaygın bir engeldir.

Rastgele ve ızgara aramaya dayanan geleneksel yöntemler, özellikle karmaşık model mimarileri veya büyük ölçekli verilerle uğraşırken zaman alıcı ve verimsiz olabilir.

İşte bu noktada, Bayesçi optimizasyon gibi daha akıllı ve uyarlamalı bir yaklaşımın hiperparametre optimizasyonu için önemi giderek artar.

Bu makalenin ilk amacı, okura sağlam bir kuramsal temel sunarak Bayesçi optimizasyonun ne olduğunu açıklamaktır. Ancak Bayesçi optimizasyon kavramına girmeden önce elimizdeki farklı hiperparametre optimizasyon yöntemlerini anlamak önemlidir.

Makalenin ikinci kısmı, Python programlama diliyle temel kavramların daha pratik bir uygulamasını kapsar. Son bölümde ise okuyucu, bir makine öğrenimi modelinin hiperparametre ayarı için Bayesçi optimizasyondan nasıl yararlanılacağını öğrenecektir.

Bayesçi Optimizasyon Nedir?

Bayesçi optimizasyonun tanımına geçmeden önce, basit örneklerle dört temel hiperparametre optimizasyon yöntemine genel bir bakış yapalım:

  • Manuel arama
  • Rastgele arama
  • Izgara arama ve
  • Bayesçi optimizasyon.

Manuel arama

Bu, deneyime, sezgiye veya deneme-yanılmaya dayanan en temel yöntemdir. Genellikle zaman alıcıdır ve uygulayıcının uzmanlığına büyük ölçüde bağımlıdır.

Örneğin, deneyimli bir aşçı fırın sıcaklığını ve pişirme süresini geçmiş deneyime ve sezgiye göre ayarlar.

Tipik bir başlangıç noktası, yaygın olarak başarılı olan ayarları yansıtan 350°F sıcaklık ve 30 dakikalık pişirme süresi olabilir. Her bir pişirme denemesinin sonucuna göre bu ayarlarda değişiklikler yapılır.

Rastgele arama

Bu yaklaşım, belirli bir aralık içinde sıcaklık ve süre kombinasyonlarının rastgele seçilmesini içerir. Örneğin, sıcaklıklar 325°F ile 375°F arasında, süreler ise 25 ile 35 dakika arasında değişebilir.

Seçim süreci 27 dakika için 330°F ile başlayabilir, ardından 31 dakika için 370°F ile devam edebilir ve en etkili kombinasyon belirlenene kadar rastgele sürer.

Izgara arama

Bu yöntem, hiperparametre değerlerinin çoklu kombinasyonlarını sistematik olarak keşfetmeyi içerir.

Aynı pişirme örneğiyle devam edelim. Aşçı duvara sıcaklık ve süre kombinasyonlarından oluşan yapılı bir ızgara (grid) oluşturur.

Izgara, 325°F ile 375°F arasında her 5°F artışını ve 25 ile 35 dakika arasında her 2 dakikayı içerebilir. Ardından en iyi kombinasyonu bulmak için bu ızgaradaki her bir kombinasyonda (25 dakika için 325°F, 27 dakika için 325°F, ... , 35 dakika için 375°F) kek pişirilir.

Bayesçi arama

Bayesçi Optimizasyon, rastgele aramaya kıyasla kek için en iyi pişirme sıcaklığını ve süresini bulmada daha akıllı bir yaklaşım olarak görülebilir.

Rastgele Arama, aşçının pek çoğu az pişmiş ya da fazla pişmiş keklere yol açabilecek çok çeşitli sıcaklık ve süre kombinasyonlarını rastgele denemesini içerebilir.

Bayesçi optimizasyonda aşçının en iyi pişirme koşullarını araması, önceki sonuçlar tarafından yönlendirilir ve bilgilendirilir.

Örneğin, aşçı yaklaşık 350°F ve 30 dakikada pişirilen keklerin daha başarılı olduğunu görürse, sonraki denemelerde bu değerlere yakın sıcaklık ve süre kombinasyonlarına daha çok odaklanacaktır.

Bu yöntem, önceki pişirme seanslarının sonuçlarına dayanarak hangi kombinasyonların mükemmel bir kek üretme olasılığının daha yüksek olduğunu "öğrendiği" için gerekli deneme sayısını azaltır.

Genel olarak Bayesçi optimizasyon, değerlendirilmesi pahalı olan amaç fonksiyonlarını eniyilemek için Bayes teoremine dayanır. Örnekleme maliyetli olduğunda ve amaç fonksiyonu bilinmediğinde ancak örneklenebildiğinde özellikle etkilidir.

Bayesçi optimizasyon genellikle amaç fonksiyonunu tahmin etmek için Gauss Süreci gibi olasılıksal bir model kullanır ve ardından bir sonraki örneklemenin nerede yapılacağına karar vermek için bir edinim (acquisition) fonksiyonundan yararlanır.

Bayesçi Optimizasyonun Zorlukları

Bu yöntem birçok alanda başarıyla uygulanmıştır. Ancak bazı zorluklar barındırdığını not etmek önemlidir; başlıcaları aşağıda sunulmuştur:

Yığın / Paralel Değerlendirme

Zorluklardan biri, yığın ya da paralel değerlendirmeleri verimli şekilde yürütmektir. Bayesçi optimizasyon geleneksel olarak bir seferde bir nokta seçip değerlendiren sıralı biçimde çalışır. Bunu, birden fazla noktanın aynı anda değerlendirildiği yığın ayarlarına genişletmek, seçilen noktaların çeşitliliğini ve verimliliğini sağlamak için dikkatli bir denge gerektirir ve hiç de önemsiz değildir.


Miyop Olmayan Optimizasyon

Bu, hangi noktaların değerlendirileceğine dair uzun vadeli, stratejik kararlar alma zorluğunu ifade eder. Miyop olmayan yöntemler, mevcut değerlendirmelerin gelecekteki etkisini dikkate alır; bu da hesaplama açısından yoğun ve modellenmesi karmaşık olabilir.


Uzayın Boyutluluğu

Arama uzayının boyutluluğu arttıkça Bayesçi optimizasyon daha az etkili hale gelebilir. Bunun nedeni, sınırlı sayıda değerlendirmeyle optimumları bulmayı zorlaştıran 'boyutsallık laneti'dir; uzayın hacmi üstel olarak artar.


Yapılandırılmış Arama Uzayı

Birçok gerçek dünya probleminde arama uzayı basit, sürekli n-boyutlu bir uzay değildir; değişkenler arasında bağımlılıklar veya kısıtlar gibi karmaşık bir yapıya sahiptir. Bu yapılandırılmış uzayları etkin şekilde ele almak önemli bir zorluktur.


Çoklu Görev/Amaç Arama, Çoklu Doğruluk (Fidelity) Araması

Bayesçi optimizasyonu aynı anda birden çok amacı ele alacak veya değişen doğruluk (hassasiyet) düzeylerindeki değerlendirmelerden bilgi bütünleyecek şekilde genişletmek karmaşıktır. Bu senaryolar, farklı amaçlar ya da farklı ayrıntı düzeyleri arasında denge kurmayı gerektirir.


Sıcak Başlangıç (Warm-start) Araması

Bu, ön bilgiyi veya veriyi kullanarak optimizasyon sürecini hızlandırmayı içerir. Bu bilgiyi sonuçları önyargılamadan Bayesçi çerçeveye etkili biçimde dahil etmek zorludur.


Çok Sayıda Değerlendirme

Bayesçi optimizasyon değerlendirmelerin pahalı olduğu senaryolar için tasarlanmış olsa da bazı durumlarda yine de çok sayıda değerlendirme gerekebilir. Bu büyük sayıda değerlendirmeyi yönetmek ve verimli biçimde yürütmek, özellikle hesaplama kaynakları ve zaman açısından zorlayıcı olabilir.


Zorlu Amaç Fonksiyonları

Birçok yerel optimuma, süreksizliklere veya durağan olmayan davranışa (fonksiyonun zaman içinde değişmesi) sahip amaç fonksiyonlarıyla başa çıkmak zordur. Bu tür fonksiyonlar optimizasyon sürecini yanıltabilir ve küresel optimumu bulmayı güçleştirir.


Dolaylı Gözlem

Bazı senaryolarda amaç fonksiyonu doğrudan gözlemlenemez; yalnızca dolaylı ölçümlerle görülebilir. Bu, optimizasyon algoritmasının gerçek amaç fonksiyonunu bu dolaylı gözlemlerden çıkarması gerektiği için ek bir karmaşıklık katmanı ekler.


Edinim Fonksiyonları ve Karar Verme

Bayesçi optimizasyonda, edinim fonksiyonları en iyi değerlere yönelik aramayı yönlendirmek için kullanılır.

Edinim fonksiyonları ve vekil (surrogate) modeller Bayesçi optimizasyonda karşılıklı bağımlıdır.

Vekil model, amaç fonksiyonuna ilişkin olasılıksal bir tahmin sağlar; edinim fonksiyonu da ardından bir sonraki değerlendirilecek en umut verici noktaları belirlemek için bunu kullanır. Ayrıca Gauss Süreci Regresyonu gibi vekil modeller, amaç fonksiyonunun doğrudan değerlendirilmesinin karmaşık veya pahalı olduğu durumlarda özellikle kullanışlıdır.

Ayrıca, vekil modeli yeni veri noktalarıyla sürekli güncelleyerek, edinim fonksiyonu arama uzayında en iyi sonuçları verme olasılığı en yüksek alanlara daha isabetli şekilde yönlendirilebilir.

Bayesçi optimizasyonda kullanılabilecek birkaç edinim fonksiyonu vardır, bunlar arasında:

  • Thompson Örnekleme: bu fonksiyon, noktaları amaç fonksiyonunun olasılıksal tahminine göre seçer.
  • Üst Güven Sınırı (UCB): bu fonksiyon, gözlemlenen en iyi değeri iyileştirme olasılığı en yüksek noktayı seçmek için kullanılır. Olası yeni çözümün sonucu ile mevcut en iyinin farkını kullanarak iyileşme olasılığını hesaplar.
  • İyileşme Olasılığı (PI): şu ana kadarki en iyi gözlemlenen değeri elde etme olasılığı en yüksek noktayı seçmek için kullanılır.
  • Beklenen İyileşme (EI): mevcut en iyi gözlemlenen değer üzerindeki beklenen iyileşmesi en yüksek olan noktayı seçmek için kullanılır.

En iyi ya da en kötü fonksiyon diye bir şey yoktur. Bu edinim fonksiyonlarının her birinin güçlü yönleri vardır ve eldeki optimizasyon probleminin özel gereksinimlerine göre seçilir.

Bayesçi Optimizasyonun Uygulamaları

Bayesçi optimizasyon birçok sektörde başarıyla uygulanmıştır ve bu bölümde dört kullanım örneği üzerinden gösterilmektedir:

  • Doğal Dil İşleme
  • Makine Öğrenimi ve hiperparametre ayarı
  • A/B testleri ve
  • Pekiştirmeli öğrenme ve robotik

Bu örnekler Veri Bilimciler için özellikle ilgili ve bilgilendiricidir.

Doğal Dil İşleme

Doğal Dil İşleme problemlerine Makine Öğrenimi uygularken, girdi metinlerinin temsiline dair verilecek birçok karar vardır ve bu seçimler alttaki modelin nihai sonucunu etkileyebilir.

Bayesçi optimizasyon, NLP modellerinde metni temsil etmenin en iyi yolunu seçme sürecini otomatikleştirmek için kullanılır; böylece model geliştirme sürecini basitleştirir ve daha verimli hale getirir; üstelik bu modellerin genel performansını koruyarak hatta artırarak.

Gömme temsiller (embedding) hakkında daha fazla bilgi edinmek için, OpenAI API ile Gömme Temsillere Giriş kursumuz, OpenAI API kullanarak gömme temsiller oluşturma konusunda eksiksiz bir rehber sunar.

Makine Öğrenimi ve hiperparametre ayarı

Otomatik makine öğreniminde (AutoML) Bayesçi optimizasyon, belirli bir veri kümesinde belirli bir problem için en iyi modeli ve hiperparametrelerini seçmeyi otomatikleştirir.

Bayesçi optimizasyonun yakın dönem uygulamaları, derin inanç ağları, evrişimli sinir ağları ve Markov zinciri Monte Carlo yöntemleri gibi karmaşık modellerin ayarında etkinliğini göstermiştir.

Ayrıca, WEKA ve scikit-learn gibi popüler makine öğrenimi kütüphaneleri tarafından sunulan modeller arasında seçim sürecini otomatikleştirmede de faydalı olmuştur.

A/B Testleri

A/B Testlerinde, Bayesçi Optimizasyon, reklamlar, uygulamalar, oyunlar veya web siteleri gibi farklı ürün yapılandırmalarını test etmenin verimliliğini artırmak için kullanılır.

Geliştiriciler iki seçeneği (A ve B) küçük bir kullanıcı alt kümesine sunarak kullanıcı etkileşimi veya tıklama oranları gibi çeşitli ölçütleri iyileştirmek için geri bildirim toplar; temel zorluk, kullanıcı sorguları için sınırlı bir bütçe varken en iyi ürün yapılandırmasını belirlemektir.

Bayesçi Optimizasyon, önceki testlerden gelen geri bildirimi kullanarak bir sonraki aşamada hangi kullanıcı alt kümelerinin sorgulanacağına dair bilinçli kararlar vermeyi kolaylaştırır; böylece fırsat maliyetlerini en aza indirirken ürünün genel performansını eniyilemeyi hedefler.

Pekiştirmeli Öğrenme ve Robotik

Bayesçi Optimizasyon hem Robotikte hem de Pekiştirmeli Öğrenmede etkili şekilde uygulanmıştır.

Robotikte, Sony AIBO ERS-7 robotunda gösterildiği gibi, hız veya akıcılık gibi belirli hedefler için bir robotun adım düzenini (gait) eniyilemekte kullanılmıştır. Ayrıca, robotların ortamlarda hareket ederken konumları ve harita tahminleriyle ilgili belirsizliği en aza indirmesine yardımcı olan seyrüsefer görevlerinde de kullanılmıştır.

Bayesçi optimizasyon, hiyerarşik pekiştirmeli öğrenmede sinir ağı politikalarının parametrelerini otomatik olarak ayarlamak ve bir hiyerarşik sistemin çeşitli düzeylerinde değer fonksiyonları öğrenmek için uygulanmıştır.

Ek olarak, derin ağlar kullanarak görüntü izleme alanında dikkat politikaları geliştirmeye uygulanmış, böylece karmaşık ortamlarda öğrenme ve karar vermenin farklı yönlerine uyum sağlama yeteneğini sergilemiştir.

Bayesçi Optimizasyonu Uygulama: Adım Adım Rehber

Önceki bölümler Bayesçi optimizasyonun kapsamlı bir anlayışını sundu. Bu bölümde, GPyOpt kütüphanesini kullanarak bir XGBRegressor'ın hiperparametrelerinin nasıl optimize edileceği gösterilmektedir.

PyMC3, Bayesçi optimizasyon için kullanılan bir diğer güçlü kütüphanedir ve Python ile Bayesçi Veri Analizi kursumuz gerçek dünya örnekleriyle birlikte eksiksiz bir rehber sunar.

Bayesçi optimizasyonu R programlama diliyle uygulamak isteyenler için R ile Bayesçi Veri Analizinin Temelleri kursumuz uygundur.

İki yöntem uygulanacaktır: Izgara arama ve Bayesçi optimizasyon. Amaç, hangisinin daha iyi bir modele götüren en uygun hiperparametreleri sağladığını belirlemektir. Tam kaynak kodu bu DataLab çalışma defterinde mevcuttur; tarayıcıda düzenleyip çalıştırmak için kendi kopyanızı oluşturabilir, bilgisayarınıza hiçbir şey kurmadan kodu çalıştırabilirsiniz.

Önkoşullar

Her iki tekniği de başarıyla yürütmek için aşağıdaki kütüphaneler gereklidir.

  • numpy: Python'da sayısal hesaplama için bir kütüphane.
  • scipy: Python'da bilimsel hesaplama için bir kütüphane.
  • sklearn: Python'da makine öğrenimi için bir kütüphane.
  • GPyOpt: Python'da Bayesçi optimizasyon için bir kütüphane.
  • Xgboost: XGBoost modeli için

Bu kütüphaneler Jupyter defterinden aşağıdaki pip komutuyla kurulabilir:

!pip -q install xgboost scikit-learn GPyOpt numpy

Önceki kod başarıyla çalıştırıldıktan sonra, import ifadesi kullanılarak içe aktarmalar yapılır:

import xgboost as xgb
from sklearn.datasets import fetch_california_housing as fch
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
from sklearn.model_selection import RandomizedSearchCV
from GPyOpt.methods import BayesianOptimization
from sklearn.model_selection import cross_val_score
import numpy as np

Veri kümesinin hazırlanması

Karşılaştırma analizi California konut veri kümesine dayanmaktadır.

  • Verilerin %70'i XGBoost modelini eğitmek için kullanılır
  • Kalan %30'u test için kullanılır

Eğitim ve test ayrımı aşağıda açıklanmıştır:

# Load dataset
california_housing = fch()

X = california_housing.data
y = california_housing.target

# Split the dataset into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y,
                                                	test_size=0.3,
                                                	random_state=2024)

Eğitim ve test verileri yüklendikten sonra, .shape fonksiyonunu kullanarak boyutlarını kontrol edebiliriz.

print(f"Training Shape: {X_train.shape}")
print(f"Testing Shape: {X_test.shape}")

Rastgele Arama ile Hiperparametre Ayarı

Bu bölümde, scikit-learn modülündeki RandomizedSearchCV sınıfını kullanarak bir XGBoost regresyonu için Izgara arama yaklaşımıyla hiperparametre ayarının nasıl kurulup yürütüleceği açıklanmaktadır.

Parametre ızgarasını kurun

param_dist adlı bir sözlük, anahtar olarak farklı hiperparametreler ve karşılık gelen değer olarak olası değerlerinin listeleriyle oluşturulur. Bu hiperparametreler şunları içerir:

  • max_depth: Bir ağacın maksimum derinliği. Değerler: 3, 10, 5, 15.
  • min_child_weight: Bir çocuk düğümde gereken asgari örnek ağırlığı (hessian) toplamı. Değerler: 1, 5, 10.
  • subsample: Eğitim örneklerinin alt örnekleme oranı. Değerler: 0.5, 0.7, 1.0.
  • colsample_bytree: Her bir ağaç oluşturulurken sütunların alt örnekleme oranı. Değerler: 0.5, 0.7, 1.0.
  • n_estimators: Artımlı (boosted) ağaç sayısı. Artırma turlarının sayısına denktir. Değerler: 100, 200, 300, 400.
param_dist = {
	'max_depth': [3, 10, 5, 15],
	'min_child_weight': [1, 5, 10],
	'subsample': [0.5, 0.7, 1.0],
	'colsample_bytree': [0.5, 0.7, 1.0],
	'n_estimators': [100, 200, 300, 400],
	'learning_rate': [0.01, 0.05, 0.1, 0.15, 0.2]
}

XGBoost Regresörü'nü başlatın

XGBoost kütüphanesindeki XGBRegressor sınıfının bir örneği oluşturulur:

xgb_reg = xgb.XGBRegressor()

RandomizedSearchCV'yi yapılandırın

RandomizedSearchCV aşağıdaki parametrelerle kurulmuştur:

  • Estimator (xgb_reg), XGBoost regresörüdür.
  • param_distributions=param_dist, örneklenecek parametre sözlüğünü belirtir.
  • n_iter=25, 25 farklı kombinasyonun deneneceğini belirtir.
  • scoring='neg_mean_squared_error', puanlama ölçütünü negatif ortalama karesel hata olarak ayarlar.
  • cv=3, çapraz doğrulama bölme stratejisini 3 kat (fold) olarak ayarlar.
  • verbose=1, ayrıntılı çıktıyı etkinleştirir.
  • random_state=42, tekrarlanabilirlik sağlar.
random_search = RandomizedSearchCV(
	xgb_reg, param_distributions=param_dist, n_iter=25,
	scoring='neg_mean_squared_error', cv=3, verbose=1, random_state=2024
)

Modeli eğitme ve parametrelere erişme

fit yöntemi, sağlanan eğitim verileri (X_train ve y_train) üzerinde rastgele aramayı çalıştırmak için kullanılır:

random_search.fit(X_train, y_train)

Eğitilmiş modeldeki best_params özniteliği, daha iyi performansa sahip modele götüren en iyi hiperparametreler hakkındaki bilgileri içerir.

Bu parametreler aşağıdaki şekilde alınabilir:

print("Random Search Best Parameters:", random_search.best_params_)

image2.png

Rastgele aramanın en iyi parametreleri

Tüm olası parametreler arasından, Rastgele arama kullanılarak XGBoost modeli için en iyileri aşağıda verilmiştir:

'subsample': 0.5,
'n_estimators': 400,
'min_child_weight': 5,
'max_depth': 10,
'learning_rate': 0.05,
'colsample_bytree': 1.0
}

Modeli değerlendirin

Bu değerleri kullanarak modeli değerlendirebilir ve performansını aşağıdaki gibi elde edebiliriz:

Önce, eğitmeden önce modeli en iyi hiperparametrelerle başlatıyoruz.

# Initialize and train the model
model_random_search = xgb.XGBRegressor(**params_random_search)
model_random_search.fit(X_train, y_train)

Ardından, model test verileri üzerinde değerlendirilir

predictions_random_search = model_random_search.predict(X_test)
mse_random_search = mean_squared_error(y_test, predictions_random_search)
print("MSE for Random Search: ", mse_random_search)

Yukarıdaki kodların başarıyla yürütülmesi, aşağıdaki ortalama karesel hata değerini üretir:

Rastgele arama hiperparametreleriyle XGBoosT için MSE

Bayesçi Optimizasyon ile Hiperparametre Ayarı

Rastgele aramaya benzer şekilde, en iyi hiperparametreleri Bayesçi optimizasyon kullanarak üretmek için adım adım bir süreç uygularız.

Parametre sınırlarını belirleyin

Hiperparametreler için sınırlar baysian_opt_bounds adlı bir listede tanımlanır. Her hiperparametre, ad, tür ve alan (domain) anahtarlarına sahip bir sözlük olarak temsil edilir.

  • max_depth, min_child_weight, n_estimators ayrık değişkenlerdir.
  • subsample, colsample_bytree, learning_rate sürekli değişkenlerdir.
  • domain, her hiperparametre için değer aralığını belirtir.
baysian_opt_bounds = [
	{'name': 'max_depth', 'type': 'discrete', 'domain': (3, 10, 5, 15)},
	{'name': 'min_child_weight', 'type': 'discrete', 'domain': (1, 5, 10)},
	{'name': 'subsample', 'type': 'continuous', 'domain': (0.5, 1.0)},
	{'name': 'colsample_bytree', 'type': 'continuous', 'domain': (0.5, 1.0)},
	{'name': 'n_estimators', 'type': 'discrete', 'domain': (100, 200, 300, 400)},
	{'name': 'learning_rate', 'type': 'continuous', 'domain': (0.01, 0.2)}
]

Amaç fonksiyonunu tanımlayın

xgb_cv_score adlı bir amaç fonksiyonu, bir XGBoost modelinin çapraz doğrulamalı negatif ortalama karesel hatasını hesaplamak üzere tanımlanır.

  • Fonksiyon bir dizi parametre alır ve bunları gerekli biçime dönüştürür.
  • cross_val_score, belirtilen parametreler kullanılarak XGBoost modelini değerlendirmek için kullanılır.
  • Çapraz doğrulamadan gelen puanların negatif ortalaması, en aza indirilecek amaç olarak döndürülür.
def xgb_cv_score(parameters):
	parameters = parameters[0]
	score = -cross_val_score(
            	xgb.XGBRegressor(
                	max_depth=int(parameters[0]),
                	min_child_weight=int(parameters[1]),
                	subsample=parameters[2],
                	colsample_bytree=parameters[3],
                	n_estimators=int(parameters[4]),
                	learning_rate=parameters[5]),
            	X_train, y_train, scoring='neg_mean_squared_error', cv=3).mean()
	return score

Bayesçi modeli başlatın ve çalıştırın

Bayesçi optimizasyon aşağıdaki parametrelerle oluşturulur:

  • f=xgb_cv_score: En aza indirilecek amaç fonksiyonu.
  • domain=baysian_opt_bounds: Hiperparametre sınırları.
  • model_type='GP': Gauss Süreçlerinin kullanılacağını belirtir.
  • acquisition_type='EI': Edinim fonksiyonu olarak Beklenen İyileşmeyi kullanır.
  • max_iter=25: Optimizasyon süreci için iterasyon sayısı.

Optimizasyon süreci optimizer.run_optimization() ile başlatılır

optimizer = BayesianOptimization(
	f=xgb_cv_score, domain=baysian_opt_bounds, model_type='GP',
	acquisition_type='EI', max_iter=25
)
optimizer.run_optimization()

En iyi parametrelere erişin

Optimizasyondan sonra en iyi parametreler çıkarılır ve biçimlendirilir:

  • Parametreler optimizer.x_opt'tan alınır.
  • Ayrık parametreler (max_depth, min_child_weight, n_estimators) tamsayıya döndürülür.

En iyi parametreler yazdırılır:

print("Bayesian Optimization Best Parameters:", best_params_bayesian)

Bayesian optimization best parameters

Bayesçi optimizasyonun en iyi parametreleri

Modeli değerlendirin

Başlatma ve eğitme süreci öncekiyle aynıdır. Ancak bu kez, Bayesçi optimizasyondan gelen parametreleri kullanıyoruz:

params_bayesian_opt = {
	'max_depth': 10,
	'min_child_weight': 10,
	'subsample': 0.820222997732141,
	'colsample_bytree': 0.6710357796023916,
	'n_estimators': 300,
	'learning_rate': 0.04797554348030097
}

# Initialize and train the model
model_bayesian_opt = xgb.XGBRegressor(**params_bayesian_opt)
model_bayesian_opt.fit(X_train, y_train)

# Make predictions and evaluate
predictions_bayesian_opt = model_bayesian_opt.predict(X_test)
mse_bayesian_opt = mean_squared_error(y_test, predictions_bayesian_opt)
print("MSE for Bayesian Optimization: ", mse_bayesian_opt)

Yukarıdaki kod başarıyla çalıştırıldıktan sonra model performansı elde edilir ve sonuç aşağıda verilmiştir:

MSE for XGBosst using Random search hyperparameters

Bayesçi optimizasyon hiperparametreleriyle XGBoosT için MSE

Sonuçların yorumlanması

İki denemeden şunları gözlemliyoruz:

  • Bayesçi Optimizasyonda Daha Düşük MSE: Bayesçi Optimizasyondan gelen hiperparametrelerle eğitilen modelin MSE değeri (0,204), Rastgele Aramadan gelen modelinkinden (0,219) daha düşüktür. Bu daha düşük değer, modelin ortalama olarak gerçek veri noktalarına daha yakın olduğunu gösterir.
  • Model Performansı: Daha düşük MSE, XGBoost modeli için hiperparametreleri ayarlamada Bayesçi Optimizasyon yönteminin daha etkili olduğunu gösterir. Bu sonuç, Bayesçi Optimizasyonla ayarlanan modelin eğitim verilerinden görülmeyen verilere (bu durumda test seti) daha iyi genelleme yaptığını düşündürür.
  • Bayesçi optimizasyonun verimliliği: Bayesçi optimizasyon, en iyi parametreleri aramayı yönlendirmek için olasılıksal bir model kullandığından hiperparametre ayarında genellikle daha iyi performansa yol açar. Önceki değerlendirmelerden öğrenir ve aramayı en umut verici hiperparametrelere yönlendirir; bu da çoğu zaman Rastgele Aramadan daha iyi değerler bulunmasını sağlar.

Bu özel durumda, daha düşük MSE ile kanıtlandığı üzere Bayesçi Optimizasyon yöntemi daha iyi sonuçlar sağlamıştır. Bu da, bu özel veri kümesi ve model (XGBoost) için, test setindeki tahmin hatasını en aza indiren hiperparametre kümesini belirlemede Bayesçi Optimizasyonun daha etkili olduğunu gösterir.

Bayesçi Optimizasyon bu örnekte daha iyi performans göstermiş olsa da Rastgele Arama ile Bayesçi Optimizasyon arasında seçim; modelin karmaşıklığı, verinin doğası ve hesaplama kaynakları gibi çeşitli faktörlere bağlı olabilir.

Bununla birlikte, hiperparametre ayarındaki hassasiyetin kritik olduğu ve hesaplama kaynaklarının elverdiği durumlarda, Bayesçi Optimizasyon çoğu zaman üstün bir seçimdir.

Sonuç

Bu makale, karmaşık fonksiyonların optimizasyonunda kilit bir teknik olan Bayesçi Optimizasyonu ayrıntılı biçimde inceledi.

Bayesçi optimizasyonun ne olduğunu tanımlayarak başladık; ardından fonksiyon optimizasyonundaki zorlukları ele alıp Bayesçi Optimizasyonun önemine değindik.

Uygulamalı bir rehber üzerinden, Gauss Süreci Regresyonu ve edinim fonksiyonlarına odaklanarak uygulama boyutlarına daldık. Tartışmanın önemli bir kısmı, Bayesçi Optimizasyonun makine öğrenimi modellerinde hiperparametre ayarı için uygulanmasına odaklanarak gerçek dünyadaki faydasını ortaya koydu.

Genel olarak bu makale, hem giriş niteliğinde bir genel bakış hem de pratik bir rehber işlevi görerek Bayesçi Optimizasyonun makine öğrenimi ve hesaplamalı optimizasyondaki kritik rolünü öne çıkarır.

Bu alanlardaki uygulayıcılar, araştırmacılar ve meraklılar için değerli içgörüler sunar; yöntemin modern hesaplamalı zorluklardaki uygulanabilirliğini ve etkisini vurgular.

Bayesçi optimizasyon ve Python'daki uygulamasına daha derinlemesine dalmak isteyenler için Python'da Hiperparametre Ayarı kursumuz, Scikit Learn kütüphanesini kullanarak otomatik hiperparametre ayarı için yaygın yöntemlerde pratik deneyim sağlar. Gelişmiş yöntemler arasında Bayesçi ve Genetik algoritmalar bulunur.


Zoumana Keita 's photo
Author
Zoumana Keita
LinkedIn
Twitter

Bilgisini paylaşmaktan ve başkalarına katkı sunmaktan keyif alan, çok yönlü bir veri bilimci olan Zoumana, YouTube’da içerik üretiyor ve Medium’da önde gelen teknoloji yazarları arasında yer alıyor. Konuşmaktan, kod yazmaktan ve öğretmekten büyük zevk alıyor. Zoumana’nın iki yüksek lisans derecesi bulunuyor: İlki Fransa, Paris’te Makine Öğrenmesi odaklı Bilgisayar Bilimleri; ikincisi ise ABD’de Texas Tech University’den Veri Bilimi. Kariyerine Fransa’da Groupe OPEN’da Yazılım Geliştirici olarak başladı; ardından IBM’de Makine Öğrenmesi Danışmanı olarak çalıştı ve sigorta şirketleri için uçtan uca yapay zeka çözümleri geliştirdi. Paris ve Montreal merkezli ilk Sürdürülebilir YZ girişimi olan Axionable’a katıldı. Burada Veri Bilimci olarak görev yaptı ve çoğunlukla NLP kullanım örnekleri olmak üzere, Fransa, Montreal, Singapur ve İsviçre’den müşteriler için YZ ürünleri hayata geçirdi. Ayrıca zamanının %5’ini Araştırma ve Geliştirme’ye ayırdı. Hâlihazırda IFC – Dünya Bankası Grubu’nda Kıdemli Veri Bilimci olarak çalışmaktadır.

Konular
Veri Analizi
Makine Öğrenimi

Bayesçi Optimizasyonu Öğrenmeye Devam Edin!

Kurs

Python'da Hiperparametre Ayarlama

4 sa
25.5K
Python'da Grid, Random ve Informed Search dahil olmak üzere otomatik hiperparametre ayarlama tekniklerini öğrenin.
Ayrıntıları GörüntüleRight Arrow
Kursa Başla
Devamını GörRight Arrow
İlgili

blog

2026’da En Popüler 40 Yazılım Mühendisi Mülakat Sorusu

Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Dario Radečić's photo

Dario Radečić

15 dk.

blog

Hızlı Sevkiyat İçin Pratik Vibe Kodlama Teknoloji Yığını

Ön uç, arka uç, veritabanları, kimlik doğrulama, depolama, e-posta, test, dağıtım ve izleme için en iyi araçları keşfedin.
Abid Ali Awan's photo

Abid Ali Awan

14 dk.

Eğitim

Python'da Listeyi String'e Nasıl Dönüştürürsünüz

Bu hızlı eğitimde, Python'da bir listeyi string'e nasıl dönüştüreceğinizi öğrenin.
Adel Nehme's photo

Adel Nehme

Eğitim

.gitignore Nasıl Kullanılır: Örneklerle Pratik Bir Giriş

Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
Kurtis Pykes 's photo

Kurtis Pykes

8 dk.

Devamını GörDevamını Gör