C parametresi
- Makine Öğrenmesi kursu
- Orta seviye
- Ders 28/112
- 5 dk
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
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 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.
idx = m.____
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 |