CodeBlanks Logo Icon CodeBlanks

Model seçimi nedir?

Model seçimi, en iyi performans veren modeli ve parametreleri bulma sürecidir.

Model seçimi nedir?

Aynı problem için birçok model (KNN, ağaç, lojistik regresyon) ve her modelin birçok ayarı vardır. Model seçimi, yeni veride en iyi çalışacak kombinasyonu adil biçimde bulma işidir.

adaylar = {
    "knn": KNeighborsClassifier(),
    "agac": DecisionTreeClassifier(random_state=0),
    "lojistik": LogisticRegression(max_iter=1000),
}

Adil karşılaştırmanın koşulu: tüm adaylar aynı veriyle, aynı yöntemle ölçülür ve test kümesi seçime karışmaz.

Sapma ve varyans

Model seçimi bir denge arayışıdır:

  • Yüksek sapma: model çok basit, deseni yakalayamaz (eksik öğrenme). Eğitim ve test skoru birlikte düşük.
  • Yüksek varyans: model çok esnek, gürültüyü öğrenir (aşırı öğrenme). Eğitim yüksek, test düşük.

Karmaşıklık arttıkça sapma azalır, varyans artar; en iyi nokta ikisinin toplam hatasının en küçük olduğu yerdir.

Uygulama Adayları karşılaştır

Üç adayı aynı eğitim/test bölmesiyle eğit. Her satırda adı ve test doğruluğunu round(..., 3) ile yazdır.

Başlangıç kodu

model.py
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.linear_model import LogisticRegression

X, y = load_iris(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0, stratify=y)
adaylar = {"knn": KNeighborsClassifier(), "agac": DecisionTreeClassifier(random_state=0), "lojistik": LogisticRegression(max_iter=1000)}

# buraya yaz

Örnek çözüm

model.py
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.linear_model import LogisticRegression

X, y = load_iris(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0, stratify=y)
adaylar = {"knn": KNeighborsClassifier(), "agac": DecisionTreeClassifier(random_state=0), "lojistik": LogisticRegression(max_iter=1000)}

for ad, model in adaylar.items():
    model.fit(X_train, y_train)
    print(ad, round(model.score(X_test, y_test), 3))

Beklenen çıktı

knn 1.0
agac 0.978
lojistik 1.0

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Model seçerken test kümesine bakmak neden yanlıştır?

  • Kod hata verir
  • Yanlış değildir
  • Test skoru iyimser olur; gerçek başarı bilinmez Doğru cevap
  • Test kümesi çok küçüktür

Açıklama: Test kümesine göre seçilen model ona uyarlanmış olur; bağımsız ölçüm kalmaz.

2 Adayları sözlükte gez.

Soru
for ad, model in adaylar.____():
Cevap
for ad, model in adaylar.items():

Açıklama: items() hem anahtarı hem değeri verir.

3 Belirtileri eşleştir.

Kavram Anlamı
Eğitim ve test düşük Yüksek sapma
Eğitim yüksek, test düşük Yüksek varyans
İkisi yüksek ve yakın İyi denge
Test ile seçim İyimser skor

Başlangıç bölümündeki tüm dersler