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).
źródło
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ędzie50%
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.
źródło
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.
źródło
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ą.
źródło
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.
źródło
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.
źródło