Bilişim dünyasına kaliteli, özgün ve Türkçe içerikler kazandırmayı hedefleyen bir platform..

friends friends friends

Kernel Fonksiyonları

Kernel Fonksiyonları

Kernel fonksiyonları, doğrusal olarak ayrılamayan verileri daha yüksek boyutlu bir uzaya dönüştürerek doğrusal ayrılabilir hale getirir.

Aşağıda tam da bu mantığı simüle eden, 100 veri noktasından oluşan, verileri liste/dizi halinde ekrana yazdıran ve hem 2D (orijinal) hem de 3D (kernel ile dönüştürülmüş) hallerini görselleştiren Python kodunu bulabilirsiniz.

import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_circles
from sklearn.svm import SVC

# 1. Toplam 100 veriden oluşan dairesel (doğrusal ayrılamayan) veri kümesi üretme
X, y = make_circles(n_samples=100, factor=0.3, noise=0.05, random_state=42)

# Verileri dizi halinde görmen için basıyoruz:
print("--- İLK 10 VERİ NOKTASI (X koordinatları) ---")
print(X[:10])
print("\n--- İLK 10 SINIF ETİKETİ (0: Dış Halka, 1: İç Halka) ---")
print(y[:10])
print(f"\nToplam Veri Sayısı: {len(X)}")

# 2. Görseldeki yüksekliği (Z-ekseni) temsil eden RBF Kernel Fonksiyonu
# RBF mantığı: Merkeze yakın olan verilerin Z değeri yüksek olur, uzaklaşınca 0'a yaklaşır.
gamma = 1.0
z = np.exp(-gamma * np.sum(X**2, axis=1))

# 3. SVM Modeli (RBF Kernel kullanarak eğitiyoruz)
model = SVC(kernel='rbf', C=1.0)
model.fit(X, y)

# 4. Görselleştirme (2D vs 3D)
fig = plt.figure(figsize=(14, 6))

# --- Sol Grafik: 2D Orijinal Veri ---
ax1 = fig.add_subplot(121)
ax1.scatter(X[y == 0, 0], X[y == 0, 1], color='green', label='Sınıf 0 (Yeşil Daire)', s=50)
ax1.scatter(X[y == 1, 0], X[y == 1, 1], color='red', marker='s', label='Sınıf 1 (Kırmızı Kare)', s=50)
ax1.set_title("2D Orijinal Alan (Doğrusal Ayrılamaz)")
ax1.set_xlabel("X1")
ax1.set_ylabel("X2")
ax1.legend()
ax1.grid(True)

# --- Sağ Grafik: 3D Kernel Dönüşümü (Görseldeki Gibi) ---
ax2 = fig.add_subplot(122, projection='3d')
ax2.scatter(X[y == 0, 0], X[y == 0, 1], z[y == 0], color='green', label='Sınıf 0', s=50)
ax2.scatter(X[y == 1, 0], X[y == 1, 1], z[y == 1], color='red', marker='s', label='Sınıf 1', s=50)

# Ayırıcı Düzlemi (Decision Surface) Görselleştirme
xx, yy = np.meshgrid(np.linspace(-1.2, 1.2, 30), np.linspace(-1.2, 1.2, 30))
zz = np.full_like(xx, fill_value=0.5)  # 0.5 yüksekliğine yatay bir düzlem çiziyoruz
ax2.plot_surface(xx, yy, zz, alpha=0.3, color='black')

ax2.set_title("3D Yüksek Boyutlu Alan (Karar Düzlemi ile Ayrılmış)")
ax2.set_xlabel("X1")
ax2.set_ylabel("X2")
ax2.set_zlabel("Kernel Dönüşümü (Z)")

plt.tight_layout()
plt.show()

Kodun Mantığı Özetle:

  • 2D Uzayda: Veriler X1 ve X2 koordinatlarına sahiptir. İçteki kırmızı kareler ile dıştaki yeşil daireleri düz bir çizgi ile ayırmak imkansızdır.
  • RBF Kernel Dönüşümü (Z): Verilerin merkeze olan uzaklığı hesaplanır ve z = e-γ · (x12 + x22) formülü uygulanır. Bu formül içteki kırmızı noktaları yukarı kaldırarak Z ekseninde tepe noktasına taşır.
  • 3D Uzayda: Artık araya siyah transparan bir düzlem (Decision Surface) koyarak yeşil ve kırmızı noktaları birbirinden %100 doğrulukla ayırabiliriz.

Kaynaklar

  1. https://link.springer.com/article/10.1007/s42979-025-03886-6#Sec3
  2. kaynak2
kernel RBF RBF (Radial Basis Function / Gaussian)
1 Beğeni
Makine Öğrenmesi
Önceki Yazı

Delaunay Triangulation

30 Eyl. 2025 tarihinde yayınlandı.
Sonraki Yazı

Transformer Ağları

30 Eyl. 2025 tarihinde yayınlandı.
arrow