Dlaczego próbkowanie w dół?

42

Załóżmy, że chcę nauczyć się klasyfikatora, który przewiduje, czy wiadomość e-mail jest spamem. Załóżmy, że tylko 1% wiadomości e-mail to spam.

Najłatwiej jest nauczyć się trywialnego klasyfikatora, który mówi, że żaden z e-maili nie jest spamem. Ten klasyfikator dałby nam 99% dokładności, ale nie nauczyłby się niczego ciekawego i miałby 100% odsetek fałszywych negatywów.

Aby rozwiązać ten problem, ludzie kazali mi „próbkować” lub uczyć się na podzbiorze danych, w którym 50% przykładów to spam, a 50% to nie spam.

Ale martwię się o to podejście, ponieważ kiedy zbudujemy ten klasyfikator i zaczniemy go używać na prawdziwym zbiorze wiadomości e-mail (w przeciwieństwie do zestawu testowego 50/50), może przewidywać, że wiele e-maili jest spamem, gdy „ naprawdę nie. Tylko dlatego, że jest przyzwyczajony do zobaczenia znacznie większej ilości spamu niż faktycznie w zestawie danych.

Jak więc rozwiązać ten problem?

(„Upsampling” lub wielokrotne powtarzanie pozytywnych przykładów treningowych, więc 50% danych to pozytywne przykłady treningowe, wydaje się mieć podobne problemy).

Jessica
źródło

Odpowiedzi:

37

Większość modeli klasyfikacji w rzeczywistości nie daje decyzji binarnej, ale raczej ciągłą wartość decyzji (na przykład modele regresji logistycznej dają prawdopodobieństwo, SVM wysyłają podpisaną odległość do hiperpłaszczyzny ...). Korzystając z wartości decyzyjnych, możemy uszeregować próbki testowe, od „prawie na pewno pozytywnych” do „prawie na pewno negatywnych”.

Na podstawie wartości decyzji zawsze możesz przypisać wartość odcięcia, która konfiguruje klasyfikator w taki sposób, że pewna część danych jest oznaczona jako dodatnia. Określenie odpowiedniego progu można wykonać za pomocą krzywych ROC lub PR modelu . Możesz grać z progiem decyzyjnym, niezależnie od równowagi stosowanej w zestawie treningowym. Innymi słowy, techniki takie jak up-or downsampling są do tego ortogonalne.

Zakładając, że model jest lepszy niż losowy, można intuicyjnie zobaczyć, że zwiększenie progu dodatniej klasyfikacji (co prowadzi do mniej pozytywnych prognoz) zwiększa precyzję modelu kosztem niższego przywołania i odwrotnie.

Rozważ SVM jako intuicyjny przykład: głównym wyzwaniem jest poznanie orientacji oddzielającej hiperpłaszczyzny. Pomaga w tym upsampling lub upsampling (zalecam preferowanie upsamplingu niż downsampling). Kiedy orientacja hiperpłaszczyzny jest dobra, możemy grać z progiem decyzyjnym (np. Podpisana odległość do hiperpłaszczyzny), aby uzyskać pożądany ułamek pozytywnych prognoz.

Marc Claesen
źródło
Dzięki, to było bardzo pomocne. Skąd wiesz, jaki powinien być próg? Czy chcesz ustawić próg, aby odsetek pozytywnych prognoz był równy odsetkowi pozytywnych przykładów w populacji?
Jessica
2
@Jessica Jak wspomniałem, wygodnym sposobem wyboru progu są krzywe charakterystyki pracy odbiornika (ROC). Każdy próg odpowiada punktowi w przestrzeni ROC. Kiedy kreślisz krzywą, możesz wybrać próg na podstawie tego, co odpowiada twoim konkretnym potrzebom. (można również użyć krzywych przywoływania dokładności jako alternatywy)
Marc Claesen,
Nie zgadzam się, że odległość punktu testowego od hiperpłaszczyzny wyuczonej przez SVM jest jakąkolwiek miarą ufności prognozy. Podjęto wysiłki, aby uzyskać wiarygodne prognozy wyników SVM. Wyszukaj na przykład skalowanie Platta. Ale nie radzi sobie tak dobrze, jak klasyfikacja procesów Gaussa (pewność ufności prognozy).
Seeda
1
R[0,1]
@MarcClaesen Nie sugeruję używania skalowania Platta; jest to „próba” wygenerowania zaufania do prognoz, ale istnieją lepsze alternatywy. Mówię tylko, że użycie odległości do hiperpłaszczyzny nie ma znaczenia i przeglądanie literatury, nigdy jej nie spotkałem, mimo że jest to pierwsza rzecz, która przychodzi na myśl, gdy próbuje wygenerować zwierzenia z SVM.
Seeda
14

Prawdziwym problemem jest tutaj wybór metryki:% dokładności jest słabą miarą sukcesu modelu w niezrównoważonym zbiorze danych (z dokładnie tego powodu, o którym wspomniałeś: w tym przypadku osiągnięcie 99% dokładności jest trywialne).

Równoważenie zestawu danych przed dopasowaniem modelu jest złym rozwiązaniem, ponieważ wpływa na model i (jeszcze gorzej) wyrzuca potencjalnie przydatne dane.

Lepiej zbalansuj swoją dokładność niż zbalansuj swoje dane. Na przykład można użyć zrównoważonego dokładność przy ocenie ty modelu (error for the positive class + error for the negative class)/2. Jeśli przewidujesz wszystkie pozytywne lub wszystkie negatywne, ta metryka będzie 50%przyjemną właściwością.

Moim zdaniem jedynym powodem, dla którego próbkowanie w dół jest zbyt małe, jest zbyt duża ilość danych i brak możliwości dopasowania do modelu. Wiele klasyfikatorów (na przykład regresja logistyczna) poradzi sobie z danymi niezrównoważonymi.

Zach
źródło
Czy mogę zapytać, jak klasyfikatorzy mogą sobie poradzić w przypadku niezrównoważonych danych? Być może to tylko moje dane, ale próbowałem trenować regresję logistyczną, losowe lasy i modele C5.0 na moich danych treningowych, zarówno niezrównoważonych, jak i zrównoważonych przy użyciu mieszanego over / undersampling. Modele wytrenowane na niezrównoważonych danych działają znacznie gorzej na moim zestawie testowym niż modele wyszkolone na zrównoważonych danych.
Seanosapien
13

Jak zawsze @Marc Claesenświetna odpowiedź.

Dodam tylko, że kluczową koncepcją, której wydaje się brakować, jest koncepcja funkcji kosztów . W każdym modelu masz ukryty lub jawny koszt fałszywie ujemnych wyników fałszywie dodatnich (FN / FP). W przypadku opisanych niezrównoważonych danych często chce się mieć stosunek 5: 1 lub 10: 1. Istnieje wiele sposobów wprowadzania funkcji kosztów do modeli. Tradycyjną metodą jest nałożenie odcięcia prawdopodobieństwa na prawdopodobieństwa wytwarzane przez model - działa to dobrze w przypadku regresji logistycznej.

Metodą stosowaną w przypadku ścisłych klasyfikatorów, które nie przedstawiają naturalnie oszacowań prawdopodobieństwa, jest niepełne próbkowanie klasy większościowej w stosunku, który wywoła interesującą cię funkcję kosztów. Zauważ, że jeśli próbkujesz przy 50/50, wywołujesz dowolną funkcję kosztu. Funkcja kosztu jest inna, ale równie arbitralna, jak w przypadku próbkowania z częstością występowania. Często można przewidzieć odpowiedni współczynnik próbkowania, który odpowiada funkcji kosztu (zwykle nie jest to 50/50), ale większość praktyków, z którymi rozmawiałem, po prostu wypróbowała kilka współczynników próbkowania i wybrała ten najbliższy ich funkcji kosztu.

Charles
źródło
2
Dzięki, że o tym wspomniałeś, to ciekawy pomysł, którego nie rozważałem. Jak rozpoznać, który współczynnik próbkowania odpowiada funkcji kosztów?
Jessica
8

Bezpośrednia odpowiedź na pytanie Jessiki - jednym z powodów próbkowania w dół jest praca z dużym zestawem danych i napotkanie ograniczeń pamięci na komputerze lub po prostu skrócenie czasu przetwarzania. Próbkowanie w dół (tj. Pobieranie losowej próbki bez zamiany) z przypadków ujemnych zmniejsza zestaw danych do łatwiejszego do zarządzania rozmiaru.

Wspomniałeś o użyciu „klasyfikatora” w swoim pytaniu, ale nie określiłeś, który z nich. Jednym z klasyfikatorów, którego możesz chcieć uniknąć, są drzewa decyzyjne. Podczas uruchamiania prostego drzewa decyzyjnego dotyczącego rzadkich danych o zdarzeniach często stwierdzam, że drzewo to buduje tylko jeden katalog główny, ponieważ ma trudności z podzieleniem tak niewielkiej liczby pozytywnych przypadków na kategorie. Mogą istnieć bardziej wyrafinowane metody poprawiania wydajności drzew w rzadkich przypadkach - nie znam niczego poza moją głową.

β0

βc=β0log(p+1p+)

p+

nnnNn

RobertF
źródło
3

Oczywiście sklasyfikowanie wszystkiego jako „nie spam” pozwala powiedzieć, że biorąc pod uwagę 100 e-maili, klasyfikuje poprawnie 99 z nich, ale klasyfikuje również jako „nie spam” jako jedyny oznaczony jako spam (100% fałszywy alarm). Okazuje się, że metryka wybrana do oceny algorytmu nie jest dostosowywana. Ten film jest przykładem tej koncepcji.

Z grubsza mówiąc, równoważenie zestawu danych pozwala na ważenie błędów błędnej klasyfikacji. Algorytm wykorzystujący niezrównoważony zestaw treningowy prawdopodobnie nie nauczy się odróżniać funkcji, ponieważ nie przywiązuje dużej wagi do faktu, że błędnie klasyfikuje dane skąpej klasy.

Giuseppe
źródło
0

Nie wybrałbym ani próbkowania w dół, ani w górę, ponieważ obie sztuczki algorytm uczenia się, jednak jeśli dane były niezrównoważone, miara dokładności staje się nieważna lub nieinformacyjna, dlatego lepiej jest używać środków precyzji i wycofywania, oba zależą głównie od TP ( poprawnie sklasyfikowane spamy w twoim przypadku) daje to dobry pogląd na temat rzeczywistej wydajności twojego systemu pod względem wykrywania spamu bez względu na liczbę negatywnych przykładów.

Ahmad Hassanat
źródło