Dengesiz veriler için SVM


15

Veri kümemde Destek Vektör Makineleri'ni (SVM'ler) kullanmayı denemek istiyorum. Sorunu denemeden önce, SVM'lerin son derece dengesiz veriler üzerinde iyi performans göstermedikleri konusunda uyarıldım. Benim durumumda,% 95-98 0 ve% 2-5 1'e kadar sahip olabilirim.

Seyrek / dengesiz verilerde SVM'lerin kullanımı hakkında konuşulan kaynakları bulmaya çalıştım, ancak bulabildiğim tek şey 'seyrekSVM'ler' (az miktarda destek vektörü kullanan) idi.

Birisinin kısaca açıklayabileceğini umuyordum:

  1. SVM'nin böyle bir veri kümesiyle ne kadar iyi olması bekleniyor?
  2. Hangi varsa, SVM algoritmasında değişiklikler yapılması gerekir
  3. Hangi kaynaklar / makaleler bunu tartışıyor

Yanıtlar:


15

Birçok SVM uygulaması, olumlu ve olumsuz örneklere farklı ağırlıklar atayarak bunu ele alır. Esasen numuneleri tartarsınız, böylece pozitifler için ağırlıkların toplamı negatiflerinkine eşit olur. Tabii ki, SVM'yi değerlendirirken, verilerin% 95'i negatifse, her zaman negatif tahmin ederek% 95 doğruluk elde etmenin önemsiz olduğunu hatırlamanız gerekir. Dolayısıyla, değerlendirme metriklerinizin de dengeli olacak şekilde ağırlıklandığından emin olmalısınız.

Özellikle libsvm, etiket olarak eklediğinizde, sınıf ağırlıklarını ayarlamanıza izin veren bir bayrak vardır ( -winanıyorum, ancak belgeleri kontrol edin ).

Son olarak, kişisel deneyimlerden, size bir SVM'nin ağırlık düzeltmesi olsun olmasın, çok benzer sonuçlar vereceğini bulduğumu söyleyebilirim.


Beat me to it :-)
Marc Claesen

@Aksi halde aynı dengesiz veri sorunum var ve% 99 Doğruluk elde ediyorum. Ağırlıkları libsvm'de kullandım. Değerlendirme metriklerinin de ağırlıklı olması gerektiğini belirttiniz. Değerleme metriklerini nasıl ağırlıklandırabileceğimizi bilmek istedim.
Hani Göç

1
90/100=0.90.5*(0/10+90/90)=0.5

7

SVM'ler seyrek ve dengesiz veriler üzerinde iyi çalışır. Sınıf ağırlıklı SVM, azınlık sınıfının eğitim örneklerine daha yüksek yanlış sınıflandırma cezaları atayarak dengesiz verilerle başa çıkmak için tasarlanmıştır.


5

Böyle seyrek veriler söz konusu olduğunda SVM iyi çalışır.

@Bitwise tarafından belirtildiği gibi, algoritmanın performansını ölçmek için doğruluk kullanmamalısınız.

Bunun yerine algoritmanın kesinliğini, geri çağrısını ve F-Skorunu hesaplamalısınız .


Gerekçenizi genişletebilir misiniz? Ayrıca, sınıflandırma (test setinde) tamamlandıktan sonra F-puanını nasıl ölçersiniz? Teşekkürler
Spacey

Test setindeki FScore'u ölçmek için manuel olarak sınıflandırmanız ve ardından manuel verileri tahmin edilen verilere göre hatırlama ve hassasiyet hesaplamanız gerekir. Neyi genişletmemi istersiniz, SVM neden seyrek verilerle iyi çalışıyor?
alexandrekow

Evet, neden SVM seyrek veriler üzerinde çalışıyor? Teşekkürler
Spacey

"Sadece seyrek özelliklere sahip olmak, SVM için herhangi bir sorun oluşturmaz. Bunu görmenin bir yolu, sorunu değiştirmeden aynı çözümü verecek koordinat eksenlerinin rastgele bir dönüşünü yapabilmenizdir. veriler tamamen seyrek değil (bu kısmen rastgele projeksiyonların nasıl çalıştığıdır "( stats.stackexchange.com/questions/23470/… )
alexandrekow
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.