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.