SVM dla niezrównoważonych danych


15

Chcę spróbować użyć maszyn wektorów wsparcia (SVM) w moim zestawie danych. Zanim jednak spróbowałem rozwiązać problem, zostałem ostrzeżony, że maszyny SVM nie radzą sobie dobrze z bardzo niezrównoważonymi danymi. W moim przypadku mogę mieć aż 95-98% zera i 2-5% 1.

Próbowałem znaleźć zasoby, które mówiły o używaniu SVM na rzadkich / niezrównoważonych danych, ale wszystko, co mogłem znaleźć, to „rzadkie SVM” (które używają niewielkiej liczby wektorów pomocniczych).

Miałem nadzieję, że ktoś może krótko wyjaśnić:

  1. Jak dobrze można oczekiwać, że SVM poradzi sobie z takim zestawem danych
  2. Które ewentualne modyfikacje należy wprowadzić w algorytmie SVM
  3. Jakie zasoby / dokumenty omawiają to

Odpowiedzi:


15

Wiele implementacji SVM rozwiązuje ten problem, przypisując różne wagi do wystąpień dodatnich i ujemnych. Zasadniczo ważymy próbki, aby suma wag dla dodatnich wartości była równa wartości ujemnej. Oczywiście, oceniając SVM, należy pamiętać, że jeśli 95% danych jest negatywnych, uzyskanie dokładności 95% zawsze jest banalne, zawsze przewidując negatywne. Musisz więc upewnić się, że wskaźniki oceny są również ważone, aby były zrównoważone.

W szczególności w libsvm, który został dodany jako tag, jest flaga, która pozwala ustawić wagi klas ( -wsądzę, ale sprawdź dokumenty ).

Wreszcie z własnego doświadczenia mogę powiedzieć, że często stwierdzam, że SVM przyniesie bardzo podobne wyniki z korekcją wagi lub bez niej.


Pobij mnie :-)
Marc Claesen

@ Bitwise mam ten sam problem niezrównoważonych danych i otrzymuję dokładność 99%. Użyłem ciężarków w libsvm. Wspomniał pan, że wskaźniki oceny również muszą być ważone. Chciałem wiedzieć, w jaki sposób możemy wyważyć wskaźniki wyceny.
Hani Goc

1
90/100=0,90,5(0/10+90/90)=0,5

7

SVM działają dobrze na rzadkich i niezrównoważonych danych. Klasa SVM ważona jest zaprojektowana do radzenia sobie z niezrównoważonymi danymi poprzez przypisywanie wyższych kar za błędne klasyfikacje do instancji szkoleniowych klasy mniejszościowej.


5

W przypadku tak rzadkich danych SVM będzie działał dobrze.

Jak stwierdził @Bitwise, nie należy używać dokładności do mierzenia wydajności algorytmu.

Zamiast tego należy obliczyć dokładność, przywołanie i wynik F algorytmu.


Czy możesz rozwinąć swoje rozumowanie? A jak poszedłbyś mierzyć wynik F po zakończeniu klasyfikacji (na zestawie testowym)? Dzięki
Spacey

Aby zmierzyć FScore na zestawie testowym, musisz ręcznie sklasyfikować go, a następnie obliczyć przywołanie i precyzję przy użyciu danych ręcznych w porównaniu z danymi przewidywanymi. Co chciałbyś, abym rozwinął, dlaczego SVM działa dobrze z rzadkimi danymi?
alexandrekow

Tak, dlaczego SVM działa również na rzadkich danych, byłoby również miło. Dzięki
Spacey,

„Zwykłe posiadanie rzadkich funkcji nie stanowi żadnego problemu dla SVM. Jednym ze sposobów na to jest to, że można wykonać losowy obrót osi współrzędnych, co pozostawiłoby problem bez zmian i dałoby to samo rozwiązanie, ale spowodowałoby dane całkowicie nieliczne (częściowo jest to działanie losowych prognoz ”( stats.stackexchange.com/questions/23470/... )
alexandrekow,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.