Klasyfikator tylko dla jednej klasy

10

W prostej klasyfikacji mamy dwie klasy: klasa-0 i klasa-1. W niektórych danych mam tylko wartości dla klasy-1, więc żadnej dla klasy-0. Teraz myślę o stworzeniu modelu do modelowania danych dla klasy 1. Tak więc, kiedy pojawiają się nowe dane, model ten jest stosowany do nowych danych i znajduje prawdopodobieństwo określające prawdopodobieństwo, że nowe dane pasują do tego modelu. Następnie porównując z progiem, mogę filtrować nieodpowiednie dane.

Moje pytania to:

  • Czy to dobry sposób na pracę z takimi problemami?
  • Czy w tym przypadku można zastosować klasyfikator RandomForest? Czy muszę dodawać sztuczne dane dla klasy 0, które, mam nadzieję, klasyfikator uważa za hałas?
  • Jakiś inny pomysł może pomóc w rozwiązaniu tego problemu?
Miłośnik Big Data
źródło

Odpowiedzi:

9

Jest to możliwe przy użyciu niektórych podejść i jest to z pewnością prawidłowe podejście. Nie jestem jednak pewien, czy losowe lasy to potrafią.

Generowanie sztucznych danych oznacza przyjmowanie dodatkowych założeń, nie rób tego, jeśli nie musisz.

Jedną z technik, które możesz chcieć przyjrzeć się, jest tak zwany jednoklasowy SVM. Robi dokładnie to, czego szukasz: próbuje zbudować model, który akceptuje punkty treningowe i odrzuca punkty z innych dystrybucji.

Niektóre odniesienia dotyczące SVM jednej klasy:

  1. Schölkopf, Bernhard i in. „Szacowanie wsparcia dla rozkładu wielowymiarowego”. Obliczenia neuronowe 13.7 (2001): 1443-1471. W tym dokumencie przedstawiono takie podejście.

  2. Tax, David MJ i Robert PW Duin. „Opis danych wektorowych wsparcia.” Uczenie maszynowe 54.1 (2004): 45–66. Inny sposób na zrobienie tego samego, prawdopodobnie bardziej intuicyjny.

Oba te podejścia okazały się równoważne. Pierwszy szacuje hiperpłaszczyznę, która oddziela wszystkie dane treningowe od początku w przestrzeni elementów z maksymalną odległością. Drugi ocenia hipersferę o minimalnym promieniu w przestrzeni cech zawierającej instancje treningowe.

Jednej klasy SVM jest dostępny w wielu pakietach SVM, w tym libsvm , scikit-learn (Python) i kernlab (R).

Marc Claesen
źródło
3
Dostępna jest również rozprawa doktorska „Klasyfikacja jednej klasy - Uczenie się koncepcji w nieobecności kontrprzykładów”: homepage.tudelft.nl/n9d04/thesis.pdf
cbeleites niezadowolony z SX
Krótko i precyzyjnie! (+1) „Oba te podejścia okazały się równoważne”. - czy możesz podać odniesienie / cytat? Czy to scholar.google.de/…
Boern 24.04.17
6

Pozwól, że dodam jeszcze kilka możliwości:

Ogólna idea polega na tym, że ustawienie progu odległości od klasy pozwala zdecydować, czy próbka należy do tej klasy, czy nie, i niezależnie od tego, czy istnieją inne klasy, czy nie.

  • Mahalanobis-Distance => QDA
  • SIMCA (miękkie niezależne modelowanie analogii klas) wykorzystuje odległości w przestrzeni wyników PCA.
    SIMCA jest powszechna w literaturze chemometrycznej (choć rzadko tak naprawdę jest skonfigurowana w sposób jednoklasowy).
  • (SVM są już traktowane w odpowiedzi @Marc Claesen)

Richard G. Brereton: Chemometrics for Pattern Recognition (Wiley, 2009) ma cały rozdział na temat klasyfikacji jednej klasy.

cbeleites niezadowoleni z SX
źródło