Classificatore per una sola classe


10

In una semplice classificazione, abbiamo due classi: classe 0 e classe 1. In alcuni dati ho solo valori per la classe 1, quindi nessuno per la classe 0. Ora sto pensando di creare un modello per modellare i dati per la classe 1. Quindi, quando arrivano nuovi dati, questo modello viene applicato ai nuovi dati e trova una probabilità che dice quanto sia probabile che i nuovi dati si adattino a questo modello. Quindi confrontandomi con una soglia, posso filtrare dati inappropriati.

Le mie domande sono:

  • È un buon modo di lavorare con tali problemi?
  • Un classificatore RandomForest può essere utilizzato per questo caso? Devo aggiungere dati artificiali per la classe 0 che spero che il classificatore consideri rumore?
  • Qualche altra idea può aiutare per questo problema?

Risposte:


9

Ciò è possibile utilizzando alcuni approcci ed è certamente un approccio valido. Tuttavia, non sono sicuro che foreste casuali possano farlo.

Generare dati artificiali significa fare ipotesi extra, non farlo se non è necessario.

Una tecnica che potresti voler esaminare è la cosiddetta SVM di una classe. Fa esattamente quello che stai cercando: cerca di costruire un modello che accetta i punti di addestramento e rifiuta i punti da altre distribuzioni.

Alcuni riferimenti riguardanti SVM di una classe:

  1. Schölkopf, Bernhard, et al. "Stimare il supporto di una distribuzione ad alta dimensione." Calcolo neurale 13.7 (2001): 1443-1471. Questo documento ha introdotto l'approccio.

  2. Tax, David MJ e Robert PW Duin. "Supporta la descrizione dei dati vettoriali." Apprendimento automatico 54.1 (2004): 45-66. Un modo diverso di fare la stessa cosa, probabilmente più intuitivo.

Entrambi questi approcci hanno dimostrato di essere equivalenti. Il primo stima un iperpiano che separa tutti i dati di allenamento dall'origine nello spazio delle caratteristiche con la distanza massima. Il secondo stima un'ipersfera con raggio minimo nello spazio delle caratteristiche contenente le istanze di addestramento.

SVM di una classe è disponibile in molti pacchetti SVM, inclusi libsvm , scikit-learn (Python) e kernlab (R).


3
È disponibile anche la tesi di dottorato Tax "Classificazione di una classe - Apprendimento di concetti in assenza di contro-esempi": homepage.tudelft.nl/n9d04/thesis.pdf
cbeleites insoddisfatti di SX il

Breve e preciso! (+1) "Entrambi questi approcci si sono dimostrati equivalenti." - puoi specificare un riferimento / una citazione per questo? È scholar.google.de/…
Boern il

6

Vorrei aggiungere alcune altre possibilità:

L'idea generale è che l'impostazione di una soglia per la distanza dalla classe consente di decidere se un campione appartiene o meno a quella classe e indipendentemente dal fatto che ci siano o meno altre classi.

  • Mahalanobis-Distance => QDA
  • SIMCA (Soft Independent Modeling of Class Analogies) utilizza le distanze nello spazio dei punteggi PCA.
    Il SIMCA è comune nella letteratura chemiometrica (sebbene raramente sia realmente impostato in un modo unico).
  • (Gli SVM sono già trattati nella risposta di @Marc Claesen)

Richard G. Brereton: Chemometrics for Pattern Recognition (Wiley, 2009) ha un intero capitolo sulla classificazione di una classe.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.