Testowanie klasyfikacji danych o nadmiernie próbkowanych zakłóceniach

19

Pracuję nad bardzo niezrównoważonymi danymi. W literaturze stosuje się kilka metod ponownego równoważenia danych za pomocą ponownego próbkowania (nadmiernego lub niepełnego próbkowania). Dwa dobre podejścia to:

  • SMOTE: TECHnique over-sampling syntetycznej mniejszości ( SMOTE )

  • ADASYN: Adaptacyjne syntetyczne podejście do próbkowania dla niezrównoważonego uczenia się ( ADASYN )

Wdrożyłem ADASYN, ponieważ ma charakter adaptacyjny i łatwość rozszerzenia na problemy wielu klas.

Moje pytanie brzmi: jak przetestować nadpróbkowane dane wygenerowane przez ADASYN (lub inne metody nadpróbkowania). We wspomnianych dwóch artykułach nie jest jasne, w jaki sposób przeprowadzili swoje eksperymenty. Istnieją dwa scenariusze:

1- Przekopiuj cały zestaw danych, a następnie podziel go na zestawy szkoleniowe i testowe (lub weryfikację krzyżową).

2- Po podzieleniu oryginalnego zestawu danych należy wykonać nadpróbkowanie tylko na zestawie szkoleniowym i przetestować na oryginalnym zestawie testowym danych (można to przeprowadzić z walidacją krzyżową).

W pierwszym przypadku wyniki są znacznie lepsze niż bez oversamplingu, ale martwię się, czy nie ma zbyt dużego dopasowania. Podczas gdy w drugim przypadku wyniki są nieco lepsze niż bez oversamplingu i znacznie gorsze niż w pierwszym przypadku. Drugi przypadek dotyczy jednak sytuacji, w której wszystkie próbki klasy mniejszościowe trafią do zestawu testowego, a nadpróbkowanie nie przyniesie żadnych korzyści.

Nie jestem pewien, czy istnieją jakieś inne ustawienia do testowania takich danych.

Taryfy
źródło

Odpowiedzi:

18

Kilka komentarzy:

Opcja (1) to bardzo zły pomysł. Kopie tego samego punktu mogą znajdować się zarówno w zestawach szkoleniowych, jak i testowych. To pozwala klasyfikatorowi oszukiwać, ponieważ podczas próby przewidywania na zestawie testowym klasyfikator będzie już widział identyczne punkty w zestawie pociągów. Cały sens posiadania zestawu testowego i zestawu pociągów polega na tym, że zestaw testowy powinien być niezależny od zestawu pociągów.

Opcja (2) jest uczciwa. Jeśli nie masz wystarczającej ilości danych, możesz spróbować zastosować -fold cross validation. Na przykład możesz podzielić swoje dane na 10 części. Następnie, dla każdego złożenia osobno, użyj tego złożenia jako zestawu testowego, a pozostałe 9 fałdów jako zestawu pociągu. Następnie możesz uśrednić dokładność treningu w 10 biegach. Chodzi o to, że ponieważ tylko 1/10 danych znajduje się w zestawie testowym, jest mało prawdopodobne, aby wszystkie próbki klasy mniejszości znalazły się w zestawie testowym.k

Stefan Wager
źródło
Dziękuję Stefanowi za odpowiedź. Chciałbym jednak wyjaśnić pewną kwestię: metody, o których wspomniałem, tworzą „syntetyczne” wystąpienia danych, niezupełnie takie same jak oryginalne. Nie jest tak dokładnie, jakbym testował na tych samych danych treningowych. Ale nadal nie jestem pewien, czy opcja 1 jest właściwym podejściem.
Ceny biletów
Dobra, widzę! Problem z (1) nadal jednak występuje, nawet jeśli tworzysz dane „syntetyczne”, ponieważ dane syntetyczne są zwykle bardzo podobne do pierwotnych danych, które naśladują.
Stefan Wager
@StefanWager co z dystrybucją zestawu testowego? Czy powinien być taki sam jak oryginalny zestaw danych?
wannik
2
jakieś odniesienia do artykułów na poparcie tego roszczenia?
girl101
Podejście @ stefan jest poprawne, nigdy nie rozszerzaj ani nie syntetyzuj swojego zestawu walidacyjnego, ponieważ to jest twój dowód (test) uczenia się twojego modelu, potrzebujesz do tego oryginalnych danych
M090009,
9

Druga (2) opcja to właściwy sposób na zrobienie tego. Próbki syntetyczne tworzone za pomocą technik nadpróbkowania nie są prawdziwymi przykładami, ale raczej syntetyczne. Nie są one ważne do celów testowych, podczas gdy nadal są odpowiednie do szkolenia. Mają one na celu zmianę zachowania klasyfikatora bez modyfikowania algorytmu.

użytkownik53909
źródło