İkili sınıflandırma sorunu için hangi SVM çekirdeği kullanılır?


9

Vektör makinelerini destekleme konusunda yeni başlayan biriyim. Belirli bir soruna hangi çekirdeğin (örn. Doğrusal, polinom) en uygun olduğunu söyleyen bazı yönergeler var mı? Benim durumumda, web sayfalarını belirli bilgiler içerip içermediklerine göre sınıflandırmak zorundayım, yani ikili bir sınıflandırma sorunum var.

Genel olarak bu göreve hangi çekirdeğin en uygun olduğunu söyleyebilir misiniz? Yoksa en iyisini bulmak için belirli veri kümemde birkaçını denemek zorunda mıyım? Bu arada, libytvm kütüphanesini kullanan scytit-learn Python kütüphanesini kullanıyorum .


web sayfalarınızı nasıl temsil ediyorsunuz? kelimelerin çantası? Çekirdek seçimi, giriş alanınızda istediğiniz benzerlik ölçüsüne bağlıdır.
Memming

@ Hatırlama Evet, bir kelime torbası temsili kullanıyorum. Benzerlik ölçüsü ile tam olarak ne demek istiyorsun? Bir web sayfasının belirli bir tür bilgi içerip içermediğini araştırıyorum.
pemistahl

Henüz kontrol etmediyseniz bu öğreticiyi yararlı bulabilirsiniz ( csie.ntu.edu.tw/~cjlin/papers/guide/guide.pdf ). Libsvm, modeller ve model parametreleri arasında seçim yapmak için yerleşik bir k-katlı çapraz doğrulama şemasına sahiptir.
Zoran

@PeterStahl Ayrıca, ne tür bir sınıf sınırını beklediğinize bağlıdır. Kelimelerin torba alanı konusunda deneyimim yok, bu yüzden sana çok yardımcı olamıyorum.
Memming

Yanıtlar:


10

Aslında literatürde açık bir soruya çarptınız. Dediğiniz gibi, çeşitli çekirdekler vardır (örneğin, doğrusal, radyal temel işlevi, sigmoid, polinom) ve sınıflandırma görevinizi ilgili denklemlerle tanımlanan bir alanda gerçekleştirecektir. Bildiğim kadarıyla, hiç kimse bir çekirdeğin her zaman bir metin sınıflandırma görevinde diğerine karşı en iyi performansı gösterdiğini kesin olarak göstermedi.

Dikkate alınması gereken bir şey, her çekirdek fonksiyonunun veri kümeniz için optimize edilmesi gereken 1 veya daha fazla parametreye sahip olmasıdır, yani, düzgün bir şekilde yapıyorsanız, üzerinde yapabileceğiniz ikinci bir tutma eğitim koleksiyonuna sahip olmanız gerekir. bu parametreler için en iyi değerleri araştırır. (İkinci bir tutma koleksiyonu söylüyorum, çünkü zaten sınıflandırıcı için en iyi giriş özelliklerini bulmak için kullandığınız bir koleksiyona sahip olmalısınız.) Bir süre önce her birinin büyük ölçekli optimizasyonunu yaptığım bir deney yaptım. Bu parametreler basit bir metinsel sınıflandırma görevi için ve her çekirdeğin makul derecede iyi performans gösterdiğini, ancak farklı yapılandırmalarda yaptığını buldu. Sonuçlarımı doğru hatırlarsam, sigmoid en iyisini yaptı, ancak bunu çok özel parametre ayarlamalarında yaptı - makinelerimin bulması için bir aydan fazla sürenler.


Düşünceleriniz için çok teşekkür ederim. Geç reaksiyonum için özür dilerim. Yüksek lisans tezimi sadece SVM için değil, birkaç sınıflandırıcı için sonuçları değerlendirmem gereken anda yazıyorum. Ne yazık ki, birçok parametre kombinasyonunu test etmek için zamanım yok. Bu yüzden muhtemelen doğrusal çekirdeğe bağlı kalacağım.
pemistahl

İyi şanslar! Bence bu iyi bir çağrı.
Kyle.

7

Gauss çekirdeğini deneyin.

Gauss çekirdeği genellikle ilk önce denenir ve birçok uygulamada (kelime çantası özelliklerinizle) en iyi çekirdek olarak ortaya çıkar. Doğrusal çekirdeği de denemelisiniz. İyi sonuçlar vermesini beklemeyin, metin sınıflandırma problemleri doğrusal olmayabilir. Ancak verileriniz için bir his verir ve doğrusal olmamanın sonuçlarınızı ne kadar geliştirdiği konusunda mutlu olabilirsiniz.

Çekirdek genişliğinizi doğru bir şekilde çapraz doğruladığınızdan emin olun ve özelliklerinizi nasıl normalleştirmek istediğinizi (tf-idf vb.) Düşünün.

Sonuçlarınızı farklı bir çekirdek (Gauss değil) seçmekten daha iyi bir özellik normalizasyonu ile geliştirebileceğinizi söyleyebilirim.

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.