W przypadku problemu z klasyfikacją, jeśli zmienna klasy ma nierówny rozkład, jakiej techniki powinniśmy użyć?


10

na przykład jeśli mam ocenę punktową zmiennej klasy z dwiema klasami dobrą i złą, gdzie # (dobry) = 700 i # (zły) = 300. Nie chcę skracać danych. jakiej techniki powinienem użyć? Korzystałem z SVM, ale daje to wszystko co złe i dobre w przewidywaniach.


Ta asymetria nie wygląda tak źle; jesteś pewien, że nie masz błędu gdzie indziej? Czy możesz także podać więcej szczegółów na temat danych? Nie ma na to ogólnego rozwiązania.

mój zestaw danych ma 17 predyktorów (3 ciągłe i 14 kategorialnych), oczywiście 1 zmienną klasową i łącznie 1000 przesłonięć. Dist dist. dla klasy var. z pociągu i testu jest pociąg (zły) = 197, test (złe) = 103, trian (dobry) = 446, test (dobry) = 254
asad.taj

Odpowiedzi:


6

Wielkości próbek w klasie nie wydają się tak niezrównoważone, ponieważ masz 30% obserwacji w klasie mniejszości. Regresja logistyczna powinna być skuteczna w twoim przypadku. W zależności od liczby predyktorów, które wchodzą do twojego modelu, możesz rozważyć pewien rodzaj kary za oszacowanie parametrów, na przykład grzbiet (L2) lub lasso (L1). Przegląd problemów z bardzo niezrównoważoną klasą znajduje się w Cramer (1999), The Statistician, 48: 85-94 ( PDF ).

Nie znam technik punktacji kredytowej, ale znalazłem kilka dokumentów, które sugerują, że można używać SVM z ważonymi klasami, np. Maszyny wektorów wsparcia dla punktacji kredytowej: rozszerzenie na przypadki niestandardowe . Alternatywnie możesz spojrzeć na metody doładowania za pomocą CART lub Random Forests (w tym drugim przypadku możliwe jest dostosowanie strategii próbkowania, aby każda klasa była reprezentowana podczas konstruowania drzew klasyfikacyjnych). Artykuł Novaka i LaDue omawia zalety i wady GLM kontra partycjonowanie rekurencyjne . Znalazłem również ten artykuł, Konstrukcja karty wyników z niezrównoważonymi rozmiarami klas autorstwa Hand i Vinciotti.


Link do Cramera (1999) zmienił się na papers.tinbergen.nl/98085.pdf
germcd

10

Popularnym podejściem do rozwiązywania problemów z nierównowagą klas jest odchylenie klasyfikatora, tak aby zwracał większą uwagę na pozytywne przypadki. Można tego dokonać na przykład poprzez zwiększenie kary związanej z błędnym zaklasyfikowaniem klasy dodatniej w stosunku do klasy ujemnej. Innym podejściem jest wstępne przetwarzanie danych przez nadmierne próbkowanie klasy większości lub niepełne próbkowanie klasy mniejszości w celu stworzenia zrównoważonego zestawu danych.

Jednak w twoim przypadku nierównowaga klasowa nie wydaje się stanowić problemu. Być może jest to kwestia dostrajania parametrów, ponieważ znalezienie optymalnych parametrów dla klasyfikatora SVM może być dość żmudnym procesem. Istnieją dwa parametry np. W jądrze RBF:do i γ. Nie wiadomo z góry, któredo i γsą najlepsze dla danego problemu; w związku z tym należy dokonać pewnego wyboru modelu (wyszukiwanie parametrów).

Na etapie wstępnego przetwarzania danych pamiętaj, że SVM wymaga, aby każda instancja danych była reprezentowana jako wektor liczb rzeczywistych. Dlatego jeśli istnieją atrybuty kategoryczne, zaleca się ich konwersję na dane liczbowe, używając liczb m do reprezentowania atrybutu kategorii m (lub zastąpienia go nowymi m zmiennymi binarnymi).

Ponadto skalowanie zmiennych przed zastosowaniem SVM jest kluczowe, aby uniknąć atrybutów w większych zakresach liczbowych dominujących w mniejszych zakresach liczbowych.

Sprawdź ten artykuł .

Jeśli pracujesz w R, sprawdź funkcję dostrajania (pakiet e1071), aby dostroić hiperparametry za pomocą wyszukiwania siatki na podstawie podanych zakresów parametrów. Następnie za pomocą plot.tune możesz wizualnie zobaczyć, który zestaw wartości daje mniejszy poziom błędu.

Istnieje skrót wokół czasochłonnego wyszukiwania parametrów. Istnieje pakiet R o nazwie „svmpath”, który oblicza całą ścieżkę regularyzacji dla 2-klasowego klasyfikatora SVM za jednym razem. Oto link do artykułu, który opisuje, co robi.

PS Ten artykuł może Cię również zainteresować: Uzyskiwanie skalibrowanych oszacowań prawdopodobieństwa


2
+1; nadal ksvm z kernlab wydaje się być preferowaną implementacją R SVM. Na przykład samodzielnie skaluje zmienne i ma ładną (= działającą bardzo dobrze) heurystyczną procedurę wybierania dobraγdla RBF.

1

Radziłbym użyć innej wartości parametru regularyzacji C dla przykładów klasy dodatniej i przykładów klasy ujemnej (wiele pakietów SVM obsługuje to, a w każdym razie łatwo ją zaimplementować). Następnie użyj np. Weryfikacji krzyżowej, aby znaleźć dobre wartości dwóch parametrów regularyzacji.

Można wykazać, że jest to asypmatycznie równoważne ponowne próbkowanie danych w stosunku określonym przez C + i C- (więc nie ma przewagi w ponownym próbkowaniu zamiast ponownego ważenia, na końcu dochodzą do tego samego i wag może być ciągły, a nie dyskretny, więc daje lepszą kontrolę).

Nie wybieraj po prostu C + i C-, aby przypisać wagę 50-50 wzorcom dodatnim i ujemnym, ponieważ długość efektu problemu „klas nierównowagi” będzie się różnić w zależności od zestawu danych, więc siła optymalnego -wagi nie można ustalić a priori.

Pamiętaj również, że koszty fałszywie dodatnie i fałszywie ujemne mogą być różne, a problem może rozwiązać się sam, jeśli zostaną one uwzględnione przy określaniu C + i C-.

Warto również pamiętać, że w przypadku niektórych problemów reguła optymalnej decyzji Bayesa przypisuje wszystkie wzorce do jednej klasy i ignoruje drugą, więc niekoniecznie jest to zła rzecz - może to po prostu oznaczać, że gęstość wzorców jedna klasa jest wszędzie poniżej gęstości wzorców drugiej klasy.

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.