Doğrusal ayrılabilirlik testi


20

İki sınıflı bir veri kümesinin doğrusal ayrılabilirliğini yüksek boyutlarda test etmenin bir yolu var mı? Özellik vektörlerim 40 uzun.

Her zaman lojistik regresyon deneylerini çalıştırabildiğimi ve iki sınıfın doğrusal olarak ayrılabilir olup olmadığını belirlemek için hitrate vs false alarm oranını belirleyebileceğimi biliyorum, ancak bunu yapmak için zaten standart bir prosedür olup olmadığını bilmek iyi olurdu.


2
burada bir göz atın :
user603

Farklılığı çizmek yararlıdır: x = yanlış sınıflandırılmış noktalar normalden ayırma düzlemine, y = kümülatif kayıp (x). (Örnek bir çizim için, svm ve veri görselleştirme etiketleriyle yeni bir soru deneyin.)
denis

3 sınıf problemine ne dersiniz? Tüm 3+ sınıf problemleri doğrusal değil mi?
Rosy

Yanıtlar:


3

Eh, destek vektör makineleri (SVM) muhtemelen aradığınız şeydir. Örneğin, doğrusal bir RBF çekirdeği olan SVM, daha yüksek bir boyutsal alana eşler ve sınıfları doğrusal bir hiper düzlemle ayırmaya çalışır. Bu fikri gösteren güzel bir kısa SVM videosudur .

SVM'yi özellik seçimi (sarmalayıcı modeli) için bir arama yöntemiyle sarabilir ve özelliklerinizden herhangi birinin sahip olduğunuz sınıfları doğrusal olarak yedekleyip yükleyemeyeceğini görmeye çalışabilirsiniz.

LIBSVM , MSVMPack ve Scikit-learn SVM de dahil olmak üzere SVM'yi kullanmak için birçok ilginç araç vardır .


1
+1. Sanki Nik, SVM'leri tanımlamış, onları duymamış gibi. R'de, (gizemli olarak adlandırılmış) e1071paketin svmile kullanılabilir kernel="linear"ve öngörüye karşı fiili bakabilirsiniz.
Wayne

1
SVM'leri biliyorum. Sadece her örneği sınıflandırmadan doğrusal ayrılabilirliği test etmek için kullanabileceğimi bilmiyordum .
Nik

4
@Wayne: Nik aslında SVM istemiyor. Cevabımda bunun neden sorununun çözümü olmadığını açıklıyorum.
Raffael

2
Bir " doğrusal RBF çekirdeği " mevcut değildir.
Marc Claesen

Elbette ! Bu, verileri doğrusal olarak ayrılabilir bir alana eşleyen bir RBF çekirdeğidir.
soufanom

17

İki nokta kümesinin doğrusal olarak ayrılabilir olup olmadığına karar vermenin en etkili yolu doğrusal programlama uygulamaktır . GLTK bu amaç için mükemmeldir ve hemen hemen her yüksek seviye dil bunun için bir arayüz sunar - R , Python, Octave, Julia, vb.

SVM'lerin kullanımını öneren cevapla ilgili olarak :

SVM'leri kullanmak, iki nedenden dolayı doğrusal ayrılabilirliği doğrulamak için en uygun çözümdür:

  1. SVM'ler yumuşak marj sınıflandırıcılarıdır. Bu, doğrusal bir çekirdek SVM'nin gerçekten mümkün olsa bile mükemmel şekilde ayrılmayan bir ayırma düzlemine yerleşebileceği anlamına gelir. Daha sonra hata oranını kontrol ederseniz, 0 olmayacaktır ve yanlış olarak iki setin doğrusal olarak ayrılamayacağı sonucuna varacaksınız. Bu sorun çok yüksek bir maliyet katsayısı C seçilerek zayıflatılabilir - ancak bu çok yüksek bir hesaplama maliyetiyle ortaya çıkar.

  2. SVM'ler maksimum marj sınıflandırıcılarıdır. Bu, algoritmanın her ikisinden mümkün olduğunca uzak durmaya çalışırken iki sınıfı ayıran bir ayırma düzlemi bulmaya çalışacağı anlamına gelir. Yine bu, lineer ayrılabilirlik sorusunu cevaplamakla ilgili olmayan bir şeyi hesapladığı için hesaplama çabalarını gereksiz yere artıran bir özelliktir.


Diyelim ki bir dizi A ve B noktanız var:

resim açıklamasını buraya girin

Ardından, aşağıdaki koşullar için 0 değerini en aza indirmeniz gerekir:

(Aşağıdaki A bir matristir, yukarıdan nokta kümesi değil)

resim açıklamasını buraya girin

"0'ı en aza indirgemek" etkili bir şekilde objektif bir işlevi optimize etmeniz gerekmediği anlamına gelir, çünkü bu setlerin doğrusal olarak ayrılabilir olup olmadığını öğrenmek için gerekli değildir.

Sonunda ( resim açıklamasını buraya girin) ayırma düzlemi tanımlanmaktadır.


resim açıklamasını buraya girin

Eğer R veya matematik ayrıntılarda bir çalışma örneği ilgilenen edilir, daha sonra kontrol bu dışarı.


3
SVM'ler, sabit kenar boşluklu SVM kullandığınız durumlar dışında , yumuşak kenar boşluğu sınıflandırıcılarıdır . Bununla birlikte, SVM'leri kullanmak bir topla bir sinek atmak gibi olacak.
Marc Claesen

bu doğru - SVM kütüphanelerinin birçoğu (veya belki de çok çoğunluğu) bu seçeneği sunmuyor
Raffael

2
C

0

Varsa, Lineer Perceptron'un bir çözüm bulması garanti edilir. Bu yaklaşım büyük boyutlar için verimli değildir. İki nokta kümesinin doğrusal olarak ayrılabilir olup olmadığına karar vermenin en etkili yolu, @Raffael tarafından belirtildiği gibi doğrusal programlama uygulamaktır.

Hızlı bir çözüm bir algıyı çözmek olacaktır. Matlab'da Perceptron kullanarak çözülecek bir örneği olan bir kod burada

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.