CodeBlanks Logo Icon CodeBlanks

Kernel

Kernel, veriyi daha yüksek boyuta taşıyarak doğrusal ayrılabilirliği artırır.

Çekirdek hilesi

Doğrusal ayrılamayan veri, daha yüksek boyutlu bir uzaya taşınınca ayrılabilir hale gelebilir. Çekirdek fonksiyonu bu taşımayı açıkça yapmadan, noktalar arasındaki benzerliği doğrudan hesaplar:

SVC(kernel="linear")             # düz sınır
SVC(kernel="poly", degree=3)     # polinom sınır
SVC(kernel="rbf", gamma=0.5)     # varsayılan; esnek, yerel sınırlar

RBF çekirdeği exp(-γ‖x - x'‖²) iki noktanın ne kadar yakın olduğunu ölçer.

gamma

RBF'te gamma, bir noktanın etki alanının ne kadar dar olduğunu belirler. Küçük gamma geniş, düzgün sınırlar; büyük gamma her noktanın çevresine küçük adacıklar çizer (aşırı öğrenme):

for g in [0.1, 1, 100]:
    m = SVC(gamma=g).fit(X_train, y_train)
    print(g, m.score(X_train, y_train), m.score(X_test, y_test))

Varsayılan gamma="scale", 1 / (özellik_sayısı · X.var()) değerini kullanır ve ölçekli veride iyi bir başlangıçtır.

Uygulama Çekirdekleri karşılaştır

Ay verisinde linear, poly ve rbf çekirdekli SVC eğit. Her satırda çekirdek adını ve test doğruluğunu round(..., 3) ile yazdır.

Başlangıç kodu

model.py
from sklearn.datasets import make_moons
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC

X, y = make_moons(n_samples=300, noise=0.25, random_state=0)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)

# buraya yaz

Örnek çözüm

model.py
from sklearn.datasets import make_moons
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC

X, y = make_moons(n_samples=300, noise=0.25, random_state=0)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)

for k in ["linear", "poly", "rbf"]:
    m = SVC(kernel=k).fit(X_train, y_train)
    print(k, round(m.score(X_test, y_test), 3))

Beklenen çıktı

linear 0.856
poly 0.811
rbf 0.967

Soru ve cevaplar

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

1 Ay biçimli iki sınıf (make_moons) için hangi çekirdek en uygundur?

  • linear
  • Çekirdek fark etmez
  • Hiçbiri öğrenemez
  • rbf Doğru cevap

Açıklama: Kıvrımlı sınır doğrusal çekirdekle çizilemez; rbf yerel esneklik sağlar.

2 Polinom çekirdek kullan.

Soru
m = SVC(kernel=____, degree=3)
Cevap
m = SVC(kernel="poly", degree=3)

Açıklama: degree yalnızca poly çekirdekte kullanılır.

3 Çekirdekleri eşleştir.

Kavram Anlamı
linear Düz sınır
poly Polinom eğri
rbf Yerel benzerlik
gamma büyük Adacıklar, aşırı öğrenme

Orta seviye bölümündeki tüm dersler