Klassifikator für nur eine Klasse

10

In einer einfachen Klassifikation haben wir zwei Klassen: Klasse-0 und Klasse-1. In einigen Daten habe ich nur Werte für Klasse 1, also keine für Klasse 0. Jetzt denke ich darüber nach, ein Modell zu erstellen, um die Daten für Klasse 1 zu modellieren. Wenn also neue Daten kommen, wird dieses Modell auf die neuen Daten angewendet und findet eine Wahrscheinlichkeit, die angibt, wie wahrscheinlich es ist, dass neue Daten zu diesem Modell passen. Wenn ich dann mit einem Schwellenwert vergleiche, kann ich unangemessene Daten filtern.

Meine Fragen sind:

  • Ist dies ein guter Weg, um mit solchen Problemen zu arbeiten?
  • Kann für diesen Fall ein RandomForest-Klassifikator verwendet werden? Muss ich künstliche Daten für Klasse 0 hinzufügen, die der Klassifizierer hoffentlich als Rauschen betrachtet?
  • Irgendeine andere Idee könnte bei diesem Problem helfen?
Big Data-Liebhaber
quelle

Antworten:

9

Dies ist mit einigen Ansätzen möglich und sicherlich ein gültiger Ansatz. Ich bin mir jedoch nicht sicher, ob zufällige Wälder dies können.

Das Generieren künstlicher Daten bedeutet, zusätzliche Annahmen zu treffen. Tun Sie dies nicht, wenn Sie dies nicht müssen.

Eine Technik, die Sie vielleicht untersuchen möchten, ist die sogenannte Ein-Klassen-SVM. Es macht genau das, wonach Sie suchen: Es versucht, ein Modell zu erstellen, das die Trainingspunkte akzeptiert und Punkte aus anderen Verteilungen ablehnt.

Einige Referenzen zu SVM einer Klasse:

  1. Schölkopf, Bernhard et al. "Schätzung der Unterstützung einer hochdimensionalen Verteilung." Neural Computation 13.7 (2001): 1443 & ndash; 1471. Dieses Papier stellte den Ansatz vor.

  2. Tax, David MJ und Robert PW Duin. "Unterstützung der Beschreibung von Vektordaten." Maschinelles Lernen 54.1 (2004): 45-66. Eine andere Art, dasselbe zu tun, wahrscheinlich intuitiver.

Beide Ansätze haben sich als gleichwertig erwiesen. Die erste schätzt eine Hyperebene, die alle Trainingsdaten vom Ursprung im Merkmalsraum mit maximaler Entfernung trennt. Die zweite Methode schätzt eine Hypersphäre mit minimalem Radius im Merkmalsraum, die die Trainingsinstanzen enthält.

SVM einer Klasse ist in vielen SVM-Paketen verfügbar, einschließlich libsvm , scikit-learn (Python) und kernlab (R).

Marc Claesen
quelle
3
Tax 'Doktorarbeit "Ein-Klassen-Klassifikation - Konzept-Lernen ohne Gegenbeispiele" ist ebenfalls verfügbar: homepage.tudelft.nl/n9d04/thesis.pdf
cbeleites unzufrieden mit SX
Kurz und präzise! (+1) "Beide Ansätze haben sich als gleichwertig erwiesen." - Können Sie dafür eine Referenz / ein Zitat angeben? Ist es scholar.google.de/...
Boern
6

Lassen Sie mich noch einige Möglichkeiten hinzufügen:

Die allgemeine Idee ist, dass Sie durch Festlegen eines Schwellenwerts für den Abstand von der Klasse entscheiden können, ob eine Stichprobe zu dieser Klasse gehört oder nicht, und unabhängig davon, ob es andere Klassen gibt oder nicht.

  • Mahalanobis-Entfernung => QDA
  • SIMCA (Soft Independent Modeling of Class Analogies) verwendet Entfernungen im PCA-Score-Raum.
    SIMCA ist in der chemometrischen Literatur weit verbreitet (obwohl es selten wirklich in einer Klasse eingerichtet ist).
  • (SVMs werden bereits in der Antwort von @Marc Claesen behandelt.)

Richard G. Brereton: Chemometrie für die Mustererkennung (Wiley, 2009) enthält ein ganzes Kapitel über die Klassifizierung in einer Klasse.

cbeleites unzufrieden mit SX
quelle