Lineer çekirdeğe sahip SVM'lerde C'nin etkisi nedir?


134

Şu anda verilerimi sınıflandırmak için doğrusal bir çekirdeğe sahip bir SVM kullanıyorum. Eğitim setinde hata yoktur. parametresi için birkaç değer denedim ( ). Bu, test setindeki hatayı değiştirmedi.10 - 5 , , 10 2C105,,102

Şimdi merak: Bunun bir hata olduğunu yakut bağlamaları nedeniyle için libsvmI (kullanıyorum rb-LIBSVM ) ya da bu teorik açıklanabilir ?

parametresi her zaman sınıflandırıcının performansını değiştirmeli mi?C


Sadece bir yorum, bir cevap değil: gibi iki terimin toplamını en aza indiren herhangi bir program , iki terimin sonunda ne olduğunu size söylemelidir. Onların nasıl dengelendiğini görebilirsiniz. (İki SVM terimini kendiniz hesaplama konusunda yardım almak için ayrı bir soru sormayı deneyin. En kötü sınıflandırılmış noktalardan birkaçına baktınız mı? Sizinkine benzer bir sorun gönderebilir misiniz?)|w|2+Cξi,
denis

Yanıtlar:


136

C parametresi SVM optimizasyonuna, her bir eğitim örneğinin yanlış sınıflandırılmasını önlemek istediğinizi söyler. Büyük C değerleri için, eğer hiper uçak tüm eğitim noktalarını doğru şekilde sınıflandırmak için daha iyi bir iş çıkarsa, optimizasyon daha küçük kenarlı bir hiper düzlem seçecektir. Tersine, çok küçük bir C değeri, bu hiper düzlem daha fazla nokta yanlış sınıflandırsa bile, optimize edicinin daha geniş bir kenar boşluğuna sahip hiper düzlem aramasına neden olur. C'nin çok küçük değerleri için, antrenman verileriniz doğrusal olarak ayrılabilir olsa bile, yanlış sınıflandırılmış örnekler almalısınız.


1
Tamam, C'nin yanlış sınıflamanın objektif işlev üzerindeki etkisini belirlediğini anlıyorum. Amaç, bir düzenlileştirme teriminin ve yanlış sınıflandırma oranının toplamıdır (bkz. En.wikipedia.org/wiki/Support_vector_machine#Soft_margin ). C'yi değiştirdiğimde bunun objektif fonksiyonumun asgari düzeyde bir etkisi yoktur. Bu normalleşme teriminin her zaman çok küçük olduğu anlamına gelebilir mi?
alfa

3
Optimizasyon veri kümenizde hızlıysa, daha makul görünen bir şey alıp almadığınızı görmek için daha geniş bir C değeri aralığı, belki de 10 ^ [- 5, ..., 5] veya daha fazlasını denemeyi öneririm. Hem eğitim hatası hem de asgari maliyetin değeri, C değiştikçe değişmelidir. Ayrıca, verilerinizin ölçeği aşırı mı? Genel olarak, verilerinizi küçültürken en uygun C parametresi daha büyük olmalı ve bunun tersi de geçerlidir; bu nedenle, özellikler için çok küçük değerleriniz varsa, olası C değerleri için çok büyük değerler eklediğinizden emin olun. Yukarıdakilerin hiçbiri yardımcı olmazsa , sorunun yakut bağlarında olduğunu tahmin ediyorum
Marc Shivers

3
Dengeli doğruluğu 0,5'ten (sadece tahmin etmekten) 0,86'ya değiştirmek bana marjinal bir etki gibi gelmiyor. Marc'ın önerdiği gibi C için daha ince bir değerler ızgarasını araştırmak iyi bir fikir olabilir, ancak verdiğiniz sonuçların oldukça normal davrandığı görülüyor. C, fazla uydurma nedeniyle sonsuzluğa eğilim gösterdiğinden, hatanın tekrar geri gelmesini bekleyebilir, ancak bu durumda bu çok fazla bir sorun gibi görünmemektedir. Dengeli bir hatayla gerçekten ilgileniyorsanız ve eğitim setinizde 50:50'lik bir bölünme yoksa, daha iyi sonuçlar almanız mümkün olabilir ...
Dikran Marsupial

2
... pozitif ve negatif sınıflara ait modeller için farklı C değerleri kullanarak (her sınıfa ait modellerin oranını değiştirmek için verilerin yeniden örneklendirilmesine eşdeğer olan).
Dikran Marsupial

2
C = 10 ^ 0 değerine ulaştığınızda, SVM zaten tüm eğitim verilerini doğru şekilde sınıflandırıyor ve destek vektörlerinin hiçbiri bağlı değil (alfa C'ye eşittir), bu durumda C'yi daha büyük yapıyor. çözüm üzerinde etkisi yoktur.
Dikran Marsupial

152

Bir SVM'de iki şey ararsınız: en büyük minimum kenar boşluğuna sahip bir hiper düzlem ve mümkün olduğunca çok sayıda örneği doğru şekilde ayıran bir hiper düzlem. Sorun şu ki, her iki şeyi de her zaman elde edemeyeceksiniz. C parametresi, ikincisi için arzunuzun ne kadar büyük olduğunu belirler. Bunu göstermek için aşağıya küçük bir örnek çizdim. Sola doğru düşük bir c elde edersiniz, bu size oldukça büyük bir minimum marj (mor) verir. Ancak bu, doğru şekilde sınıflandırmada başarısız olduğumuzu açıklayan mavi daireyi ihmal etmemizi gerektirir. Sağ tarafta yüksek bir c var. Şimdi dışlayıcıyı ihmal etmeyeceksiniz ve bu nedenle daha küçük bir farkla sonuçlanacak.

görüntü tanımını buraya girin

Peki bu sınıflandırıcılardan hangisi en iyisidir? Bu, tahmin edeceğiniz gelecekteki verilerin neye benzeyeceğine bağlıdır ve çoğu zaman elbette ki bunu bilmiyorsunuzdur. Gelecekteki veriler şöyle görünürse:

büyük c en iyisi daha sonra sınıflandırıcı büyük bir c değeri kullanarak öğrendi en iyisidir.

Öte yandan, gelecekteki veriler şöyle gözüküyorsa:

Düşük c en iyisidir o zaman sınıflandırıcı düşük bir c değeri kullanarak öğrendi, en iyisidir.

Veri kümenize bağlı olarak, c'yi değiştirmek farklı bir hiper düzlem üretebilir veya üretmeyebilir. O takdirde yapar farklı altdüzlem üretmek, bu senin sınıflandırıcı çıkış farklı sınıflar belirli veriler için size sınıflandırmak için kullanmış olduğu anlamına gelmez. Weka, verileri görselleştirmek ve bir SVM için farklı ayarlarla oynamak için iyi bir araçtır. Verilerinizin nasıl göründüğü ve c değerini değiştirmenin neden sınıflandırma hatasını değiştirmediği hakkında daha iyi bir fikir edinmenize yardımcı olabilir. Genel olarak, az sayıda eğitim örneğine ve birçok özelliğe sahip olmak, verilerin doğrusal olarak ayrılmasını kolaylaştırır. Ayrıca, eğitim verilerinizi değerlendiriyorsunuz ve yeni görünmeyen veriler değil, ayrımı kolaylaştırıyor.

Bir modelden ne tür veriler öğrenmeye çalışıyorsunuz? Ne kadar veri? Görebilir miyiz?


4
Verilere 3 yıldan fazla bir süredir dokunmadım. Çok yüksek boyutlu ve gürültülü ve yayınlamama izin verilmiyor. Soru çoktan cevaplandı, ancak görselleştirmenizin çok iyi ve sezgisel olduğunu düşünüyorum.
alfa

müthiş. Gama değeri için böyle bir açıklamanız var mı?
MonsterMMORPG

2
Gamma parametresi Gaussian çekirdek işlevi için kullanılır. Çekirdek işlevleri, orijinal özelliklerinizi başka bir alana dönüştürmenin etkili bir yolu olarak görülebilir, burada yeni özellik alanındaki ayrı bir hiper düzlem, orijinal özellik alanındaki doğrusal olmak zorunda değildir. Örneğin, orijinal özellik alanındaki bir veri noktasının iki boyutlu konumu, haritadaki bazı işaretleyicilere olan mesafeyi temsil eden yeni bir özelliği hesaplamak için kullanılabilir. Bu yeni özellik ile karar sınırının belirteç etrafında bir daire oluşturduğu doğrusal olmayan bir sınıflandırıcı (orijinal alanda) yapılabilir
Kent Munthe Caspersen 23:15

@KentMuntheCaspersen sizin C açıklamanız yanlış değil mi? “İstatistiksel Öğrenmeye Giriş” kitabında söylediklerinin tam tersi.
diugalde

2
@diugalde, kitaptan tam olarak neye benzediğini açıklar mısın? Her zaman c'yi yanlış sınıflandırma maliyeti olarak düşünüyorum (sınıflandırmada c ile hatırlaması kolay). Bu şekilde daha yüksek c yüksek yanlış sınıflandırma maliyeti anlamına gelir ve bu da algoritmanın tüm veri noktalarını mükemmel şekilde ayırmaya çalışmasına yol açar. Aykırıcılar ile bu her zaman mümkün değildir veya her zaman iyi bir genel sonuca yol açmaz, bu c'nin düşürülmesi / getirilmesi için iyi bir nedendir.
Kent Munthe Caspersen

26

C, esas olarak, eğitim verilerinde düşük bir hataya ulaşmak ile ağırlıkların normunu en aza indirmek arasındaki dengeyi kontrol eden bir düzenleme parametresidir. Sırt regresyonundaki sırt parametresine benzerdir (aslında uygulamada doğrusal SVM'ler ve sırt regresyonu arasında performans ya da teoride çok az fark vardır, bu nedenle gözlemlerden daha fazla nitelik varsa, genellikle ikinci ya da çekirdek sırt regresyonunu kullanırım).

C'nin doğru olarak ayarlanması, SVM'lerin kullanımında en iyi uygulamada hayati bir adımdır, çünkü yapısal risk minimizasyonu (temel yaklaşımın arkasındaki temel prensip) C'nin ayarlanması yoluyla uygulanan partidir. C parametresi, C bu, C tarafından indekslenen iç içe geçmiş hipotez sınıflarının olduğu anlamına gelir. C'yi artırdıkça, hipotez sınıfının karmaşıklığını arttırırız (C'yi biraz arttırırsak, daha önce yapabileceğimiz tüm lineer modelleri oluşturabiliriz. ve ayrıca bazı ağırlıkların izin verilen normlarına göre üst sınırı arttırmadık. Bu nedenle, SRM'yi maksimum marj sınıflaması yoluyla uygulamanın yanı sıra, hipotez sınıfının karmaşıklığını C kontrolü ile sınırlandırarak da uygulanır.

Ne yazık ki, C'nin nasıl ayarlanacağını belirleme teorisi şu anda pek iyi gelişmemiş, bu yüzden çoğu insan (eğer bir şey yaparlarsa) çapraz onaylama kullanma eğilimindedir.


Tamam, sanırım şimdi C'nin anlamını anlıyorum. :)
alfa

2
Fakat eğer C bir normalleştirme parametresiyse, neden genel bir konuşma yapıyorsa, yani daha genel bir model oluşturarak, neden genel anlamda normalleştirme yapıldığında, yüksek C donma donanımını arttırıyor?
user1603472

2
C, bir regülasyon parametresidir, fakat normal olarak regülasyon teriminden (marj bit) değil, veri uyumsuzluk terimine (gevşek değişkenlerin toplamı) eklenir, dolayısıyla daha büyük bir C değeri daha az regülasyon anlamına gelir. Alternatif olarak, rgularisation parametresinin normal gösterimini 1 / C olarak görüntüleyebilirsiniz.
Dikran Marsupial

8

C, düşük bir eğitim hatası ile düşük bir test hatası arasındaki değiş tokuşun, sınıflandırıcınızı görünmeyen verilere genelleştirmesini sağlayan bir regülasyon parametresidir.

Doğrusal bir SVM'nin nesnel işlevini düşünün: min | w | ^ 2 + C∑ξ. C'niz çok büyükse, optimizasyon algoritması | w | Her eğitim örneğini doğru şekilde sınıflandırmaya çalışan bir hiper uçağa giden mümkün. Bunu yapmak, sınıflandırıcının genelleme özelliklerinde kayba yol açacaktır. Öte yandan, eğer C'niz çok küçükse, objektif fonksiyonunuza arttırma özgürlüğü verirsiniz | w | Çok fazla eğitim hatasıyla sonuçlanacaktır.

Aşağıdaki resimler bunu görselleştirmenize yardımcı olabilir. C = 10000000 olan Doğrusal SVM SınıflandırıcısıC = 0.001 ile doğrusal SVM Sınıflandırıcısı


Arsalarını gerçekten anlamıyorum. Bunu açıklayabilir misin?
alfa

1
@alfa: Grafikleri gösterme niyetim şuydu: 1) Eğer C çok büyükse (arsa 1), sınıflandırıcınız tam olarak sığacak, yani her bir antrenman veri noktasını doğru şekilde sınıflandırmaya çalışacaktır. Grafik 1, neredeyse tüm eğitim noktalarının doğru şekilde sınıflandırıldığını göstermektedir. 2) Öte yandan, eğer C çok az ise (parsel 2), sınıflandırıcınız uygun olacaktır. Grafik 2, uygun uyum sınıflandırıcısını göstermektedir. Noktaları kendi sınıflarına ayırmaz. Bu yardımcı olur umarım.
geyik

Bu, x ve y eksenlerinin iki farklı özellik gösterdiği anlamına gelir. "Veri setinin uzunluğu" ve "Araçların toplamı" etiketleri biraz kafa karıştırıcı mı?
alfa

Her iki durumda da C için doğru seçimin nasıl yardımcı olacağını görmek ilginç olurdu.
alfa

2
C = 10000000’in kötü bir seçim olduğunu görmenin açık olmadığını ve bence bunu gösteren veri setinin doğru olmadığını düşünüyorum. Belki de ayırıcı hiper uçağın yanlış tarafında sadece birkaç aykırı olan bir veri kümesi daha iyi olurdu?
alfa

4

Yukarıdaki cevaplar mükemmel. Sorularınızı dikkatlice okuduktan sonra göz ardı edebileceğimiz 2 önemli gerçek var.

  1. Doğrusal çekirdek kullanıyorsunuz
  2. Antrenman verileriniz doğrusaldır çünkü "Antrenman setinde hata yoktur".

2 gerçek göz önüne alındığında, eğer C değerleri makul bir aralık içinde değişirse, optimal hiper düzlem, sınır içindeki küçük bir miktar tarafından rasgele değişecektir (destek vektörlerinin oluşturduğu boşluk).

Sezgisel olarak, eğitim verilerindeki kenar boşluğunun küçük olduğunu ve / veya kenar boşluğunda test veri noktalarının olmadığını varsayalım, kenar boşluğundaki optimal hiper düzlemin kayması test setinin sınıflandırma hatasını etkilemeyecektir.

Bununla birlikte, C = 0 olarak ayarlarsanız, SVM hataları yok sayar ve sadece ağırlıkların karelerinin toplamını (w) en aza indirmeye çalışır, belki de test setinde farklı sonuçlar alabilirsiniz.


2

C Parametre aykırı değerlerin kontrolünde kullanılır - düşük C, daha fazla aykırı değere izin verdiğimizi, yüksek C daha az aykırı değere izin verdiğimizi belirtir.


1

Yüksek C (maliyet), yanlış sınıflandırma maliyetinin arttırıldığı anlamına gelir. Bu, eğitim setinde yanlış sınıflandırma gözlemlerini önlemek için esnek bir çekirdeğin daha keskin olacağı anlamına gelir.

Eğer çekirdek dalgalı olacaksa, model yeni verileri öngörürken genelleme yapmaz.

Eğer çekirdeğin düz olması gerekiyorsa , model yeni verileri öngörürken genelleme yapmaz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.