Kernel
- Makine Öğrenmesi kursu
- Orta seviye
- Ders 27/112
- 5 dk
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ırlarRBF ç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
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
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.
m = SVC(kernel=____, degree=3)
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 |