2012-08-31 14 views
5

Libsvm için Python arabirimini kullanıyorum ve fark ettiğim şey, ızgara aramayı kullanarak en iyi C ve gamma parametrelerini (RBF çekirdeği) seçtikten sonra modeli eğitin ve çapraz doğrulayın (5 kat, eğer uygunsa), aldığım doğruluk, eğitim veri setimdeki etiketlerin oranıyla aynıdır.libsvm - Çapraz doğrulama doğruluğu etiketlerin oranı ile aynı

3947 örneğim var ve bunların 2898'i -1 etiketine, geri kalanı da etiket 1'e sahip. Yani bu, örneklerin% 73.4229'udur.

optimization finished, #iter = 1529 
nu = 0.531517 obj = -209.738688, 
rho = 0.997250 nSV = 1847, nBSV = 1534 
Total nSV = 1847 
Cross Validation Accuracy = 73.4229% 

bu SVM dikkate özellikleri almayan anlamına mı - Ben modelini eğitmek ve çapraz 5 kat doğrulamak zaman

Ve bu ne alıyorum? Yoksa buradaki hata mı? İkisi de bağlantılı mı? Sadece 73.4229 numarasını geçemiyorum. Ayrıca, destek vektörlerinin sayısının veri kümesinin boyutundan çok daha az olması gerekir, ancak bu durumda, öyle görünmüyor.

Genel olarak, çapraz doğrulama doğruluğu veri kümesindeki etiketlerin oranıyla aynı olduğunda ne anlama gelir?

cevap

6

Veri kümeniz dengesizdir, bu da büyük bir yüzdesinin aynı sınıf olduğu anlamına gelir. Bu, çoğunluk sınıfının bir parçası olarak her şeyi sınıflandırarak yüksek bir doğruluk elde edildiği varsayılan veya çoğunluk sınıfı bir sınıflandırıcı olarak adlandırılır. Dolayısıyla, veriler nedeniyle özellikleri dikkate almadığı konusunda haklısınız.

Libsvm README, bununla başa çıkmak için penaltı ağırlıklarını değiştirmeyi önerir. Ve ilgili bir soru: https://stats.stackexchange.com/questions/20948/best-way-to-handle-unbalanced-multiclass-dataset-with-svm

Dengesiz veriler hakkında daha fazla bilgi için, A User's Guide to Support Vector Machines bölüm 7'ye bakın.