Syntetyczna technika nadpróbkowania mniejszości (SMOTE) to technika nadpróbkowania stosowana w przypadku problemu z niezrównoważonym zestawem danych. Do tej pory mam pomysł, jak zastosować go do ogólnych, ustrukturyzowanych danych. Ale czy można go zastosować do problemu klasyfikacji tekstu? Którą część danych potrzebujesz nadpróbkować? Jest już inne pytanie , ale nie ma na nie odpowiedzi. Gdzie mogę się nauczyć, jak zacząć?
W rzeczywistości NLP jest jednym z najczęstszych obszarów, w których konieczna jest ponowna próbkowanie danych, ponieważ istnieje wiele zadań klasyfikacji tekstu dotyczących niezrównoważonego problemu (pomyśl o filtrowaniu spamu, obraźliwym wykrywaniu komentarzy, klasyfikacji artykułów itp.). Ale SMOTE wydaje się być problematyczny z kilku powodów:
SMOTE działa w przestrzeni funkcji. Oznacza to, że dane wyjściowe SMOTE nie są danymi syntetycznymi, które są rzeczywistym reprezentantem tekstu w jego przestrzeni cech.
Z jednej strony SMOTE współpracuje z KNN, az drugiej strony przestrzeń funkcji dla problemu NLP jest ogromnie duża. KNN łatwo zawiedzie w tych ogromnych wymiarach.
Mogę więc zaproponować dwa podejścia:
Nie obchodzi mnie rzeczywista reprezentacja tekstowa nowych próbek syntetycznych, które, jak zakładam, powinny być w porządku. Musisz zrównoważyć rozkład dla klasyfikatora, a nie czytnika danych tekstowych. Zastosuj SMOTE w tradycyjny sposób (jednak zazwyczaj używam rozwiązania 2 poniżej, aby nie uzyskać wyniku!) Z pewnym krokiem redukcji wymiarów.
1) Załóżmy, że chcesz wykonać próbki danych z podrzędnej klasy podwójnej za pomocą 3-NN. Zignoruj główne klasy i przechowuj tylko niewielkie próbki klas.
2) Dla każdego punktu próbki w przestrzeni cech wybierz 5 najbliższych sąsiadów. Następnie wybierz 3 z nich losowo (czy nie jest to niepotrzebnie skomplikowane? Gdybym nie chciał wyjaśniać oryginalnego algorytmu, powiedziałbym, że wystarczy wybrać 3 sąsiadów!)
3) Dla każdego wymiaru obliczyć odległość między próbką a sąsiadami i pomnożyć ją w losowej liczbie od 0-1 i dodać do oryginalnej wartości próbki w tym wymiarze. (ten skomplikowany akapit oznacza po prostu, że dla każdego wymiaru wybierz losową wartość między oryginalną próbką a sąsiadem!)
Ale zwykle robię inne oversampling, które jest na tekście (więc bardziej intuicyjne) i jest trochę SMOTE.
1) Zignoruj główną klasę. Uzyskaj rozkład długości wszystkich dokumentów w mniejszej klasie, abyśmy mogli wygenerować nowe próbki zgodnie z rzeczywistą długością dokumentu (liczba słów / fraz). Zakładamy, że chcemy, aby rozmiar klasy był trzykrotnie (tak produkującyk=2 dokumenty syntetyczne na dokument oryginalny)
2) Wygeneruj sekwencję nlosowe liczby całkowite zgodnie z tym rozkładem. Służy do określania długości nowego syntetycznego dokumentu.
3) Dla każdego dokumentu: Wybierz jedną liczbę całkowitą z losowej sekwencji i mdokument losowy, którego długość jest zbliżona do liczby całkowitej. Umieść żetony wszystkichm dokumenty w zestawie i losowo wybierz n tokeny kczasy. to są twojek nowe dokumenty.
Dzięki za odpowiedź, ale czy można zastosować SMOTE do próbek, jeśli są one reprezentowane przy użyciu kodowania „na gorąco”? czy powinny być reprezentowane w inny sposób ?.
adnanmuttaleb
Cześć Kasra, czy możesz podzielić się wdrożeniem związanym ze wspomnianymi krokami
Payal Bhatia,
2
Jeśli chcesz dodać więcej danych dotyczących tłumaczenia tekstu / zdań, możesz użyć wstępnie wyszkolonego osadzania słów. Wstępnie przeszkolone modele, takie jak, reprezentują wektor słowa dla każdego słowa w słowniku. Zapewnia również słowa „najbardziej”.
Możesz po prostu użyć przykładowego zdania i wygenerować nowe próbki, wykonując permutacje każdego słowa z najbardziej podobnymi słowami TOP_N.
np. jeśli twoje zdanie zawiera 3 słowa i jeśli wybierzesz 3 najbardziej podobne dla każdego słowa, możesz zwiększyć próbkę 27 razy.
Jeśli chcesz dodać więcej danych dotyczących tłumaczenia tekstu / zdań, możesz użyć wstępnie wyszkolonego osadzania słów. Wstępnie przeszkolone modele, takie jak, reprezentują wektor słowa dla każdego słowa w słowniku. Zapewnia również słowa „najbardziej”.
Możesz po prostu użyć przykładowego zdania i wygenerować nowe próbki, wykonując permutacje każdego słowa z najbardziej podobnymi słowami TOP_N.
np. jeśli twoje zdanie zawiera 3 słowa i jeśli wybierzesz 3 najbardziej podobne dla każdego słowa, możesz zwiększyć próbkę 27 razy.
źródło