Dla uproszczenia załóżmy, że pracuję nad klasycznym przykładem wiadomości e-mail ze spamem / bez spamu.
Mam zestaw 20000 e-maili. Wiem, że 2000 to spam, ale nie mam żadnego przykładu wiadomości nie będących spamem. Chciałbym przewidzieć, czy pozostałe 18000 to spam, czy nie. Idealnie, wynik, którego szukam, to prawdopodobieństwo (lub wartość p), że wiadomość e-mail jest spamem.
Jakiego algorytmu (algorytmów) mogę użyć, aby dokonać rozsądnej prognozy w tej sytuacji?
W tej chwili myślę o metodzie opartej na odległości, która powiedziałaby mi, jak podobny jest mój e-mail do znanego spamu. Jakie mam opcje?
Mówiąc bardziej ogólnie, czy mogę zastosować nadzorowaną metodę uczenia się, czy też koniecznie muszę mieć negatywne przypadki w moim zestawie szkoleniowym, aby to zrobić? Czy ograniczam się do metod uczenia się bez nadzoru? Co z metodami częściowo nadzorowanymi?
źródło
Odpowiedzi:
Nazywa się to uczeniem się na podstawie danych pozytywnych i nieznakowanych lub w skrócie uczeniem się PU i jest aktywną niszą częściowo nadzorowanego uczenia się.
W skrócie, ważne jest wykorzystywanie nieznakowanych danych w procesie uczenia się, ponieważ daje to znacznie ulepszone modele w porównaniu z tak zwanymi klasyfikatorami jednoklasowymi, które są szkolone wyłącznie na znanych pozytywach. Dane nieoznakowane można włączyć na kilka sposobów, przy czym dominują następujące podejścia:
Aktywnie działam w tej dziedzinie i zamiast podsumowywać ją tutaj, polecam przeczytać dwa moje artykuły i zawarte w nich odniesienia, aby uzyskać przegląd domeny:
źródło
kernlab
lube1071
. Zauważ, że zarówno spakowanie SVM, jak i RESVM ma wiele hiperparametrów, które musisz zoptymalizować, dla których polecam bibliotekę Optunity (ma interfejs R).Zakładam, że w twoich 18000 przypadkach nie ma tylu przypadków spamu. Aby zastosować podejście nadzorowanego uczenia się, musisz mieć więcej niż jedną kategorię / klasę w swoich danych. Ponieważ wiesz, że 2000 przypadków to spam, możesz oznaczyć pozostałe 18000 przypadków jako „nieznaną kategorię” i wyszkolić każdy nadzorowany model uczenia się, aby przewidzieć, czy przypadek znajduje się w spamie, czy w nieznanej kategorii. Następnie sprawdź dokładność modelu przykładowego, aby zobaczyć, jak dobrze model działa, aby rozróżnić 2 kategorie. Jeśli działa dobrze, moje założenie o kilku przypadkach spamu w kategorii „nieznane” jest uzasadnione. Jeśli nie działa dobrze, musisz użyć ucznia bez nadzoru (np. Kmeans itp.), Aby utworzyć klaster i zidentyfikować oddzielne jednorodne grupy w swoich danych. Następnie określ, które klastry zawierają najwięcej 2000 wiadomości e-mail ze spamem, a które nie, i oznacz je odpowiednio jako spam i nie spam. Następnie możesz przystąpić do modelowania za pomocą nadzorowanego ucznia, jak opisałem wcześniej.
źródło
To, o czym mówi OP, jest jednoklasowym zadaniem klasyfikacyjnym, które jest bardzo trudne.
Istnieje wiele prac na temat tego zadania z różnych dziedzin badawczych. Napisałem również jeden „Schemat skutecznej weryfikacji autorstwa wewnętrznego w oparciu o uczenie się zespołu” . Bardzo łatwo jest go dostosować, aby klasyfikować spam / nie spam, a nie autorów. Spróbuj i daj mi znać, jeśli potrzebujesz dodatkowych informacji ...
źródło