CodeBlanks Logo Icon CodeBlanks

C parametresi

C, marj genişliği ile sınıflandırma hatası arasındaki dengeyi ayarlar.

C parametresi

C, marj ihlallerinin cezasıdır. Büyük C eğitim hatalarını çok pahalı sayar: model her noktayı doğru sınıflamaya çalışır, sınır kıvrılır. Küçük C bazı hataları kabul eder, sınır daha düzgün olur:

for C in [0.01, 1, 100]:
    m = SVC(C=C).fit(X_train, y_train)
    print(C, len(m.support_), m.score(X_test, y_test))

Küçük C'de çok daha fazla nokta destek vektörü olur, çünkü geniş marj içinde kalan her nokta sınırı etkiler.

C ve gamma birlikte

RBF SVM'de C ve gamma birlikte karmaşıklığı belirler; biri tek başına ayarlanamaz. Tipik yaklaşım ikisini logaritmik ızgarada birlikte aramaktır:

izgara = {"svc__C": np.logspace(-2, 3, 6), "svc__gamma": np.logspace(-3, 1, 5)}
gs = GridSearchCV(make_pipeline(StandardScaler(), SVC()), izgara, cv=5)

Yüksek C ile yüksek gamma birleşimi en esnek, en çok aşırı öğrenen modeldir.

Uygulama C'nin etkisi

Ay verisinde C = 0.01, 1, 100 için RBF SVC eğit. Her satırda C'yi, destek vektörü sayısını (len(m.support_)) 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 C in [0.01, 1, 100]:
    m = SVC(C=C).fit(X_train, y_train)
    print(C, len(m.support_), round(m.score(X_test, y_test), 3))

Beklenen çıktı

0.01 195 0.411
1 62 0.967
100 34 0.967

Soru ve cevaplar

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

1 C artınca destek vektörü sayısı genellikle nasıl değişir?

  • Değişmez
  • Sıfır olur
  • Azalır Doğru cevap
  • Artar

Açıklama: Marj daraldıkça içinde kalan nokta sayısı azalır.

2 Destek vektörlerinin indekslerini al.

Soru
idx = m.____
Cevap
idx = m.support_

Açıklama: support_ destek vektörlerinin eğitim kümesindeki indeksleridir.

3 Ayarları davranışla eşleştir.

Kavram Anlamı
C küçük Geniş marj, çok destek vektörü
C büyük Dar marj, sıkı uyum
gamma küçük Düzgün sınır
C ve gamma büyük En çok aşırı öğrenme

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