Classificateur pour une seule classe

10

Dans une classification simple, nous avons deux classes: classe 0 et classe 1. Dans certaines données, je n'ai que des valeurs pour la classe 1, donc aucune pour la classe 0. Maintenant, je pense à faire un modèle pour modéliser les données pour la classe 1. Ainsi, lorsque de nouvelles données arrivent, ce modèle est appliqué aux nouvelles données et trouve une probabilité indiquant la probabilité que de nouvelles données correspondent à ce modèle. Puis en comparant avec un seuil, je peux filtrer les données inappropriées.

Mes questions sont:

  • Est-ce une bonne façon de travailler avec de tels problèmes?
  • Un classificateur RandomForest peut-il être utilisé dans ce cas? Dois-je ajouter des données artificielles pour la classe 0 que j'espère que le classificateur considère comme du bruit?
  • Une autre idée peut-elle aider à résoudre ce problème?
Amateur de Big Data
la source

Réponses:

9

Ceci est possible en utilisant certaines approches et est certainement une approche valable. Cependant, je ne sais pas si des forêts aléatoires peuvent le faire.

Générer des données artificielles signifie faire des hypothèses supplémentaires, ne le faites pas si vous n'êtes pas obligé.

Une technique que vous voudrez peut-être étudier est ce que l'on appelle le SVM à une classe. Il fait exactement ce que vous recherchez: il essaie de construire un modèle qui accepte les points d'apprentissage et rejetterait les points d'autres distributions.

Quelques références concernant SVM à une classe:

  1. Schölkopf, Bernhard et al. "Estimer le support d'une distribution de grande dimension." Calcul neuronal 13.7 (2001): 1443-1471. Ce document a présenté l'approche.

  2. Tax, David MJ et Robert PW Duin. "Prise en charge de la description des données vectorielles." Apprentissage automatique 54.1 (2004): 45-66. Une manière différente de faire la même chose, probablement plus intuitive.

Ces deux approches se sont avérées équivalentes. Le premier estime un hyperplan qui sépare toutes les données d'apprentissage de l'origine dans l'espace d'entités à distance maximale. Le second estime une hypersphère avec un rayon minimal dans l'espace d'entités contenant les instances de formation.

SVM à une classe est disponible dans de nombreux packages SVM, y compris libsvm , scikit-learn (Python) et kernlab (R).

Marc Claesen
la source
3
La thèse de doctorat de Tax "Classification d'une classe - Apprentissage conceptuel en l'absence de contre-exemples" est également disponible: homepage.tudelft.nl/n9d04/thesis.pdf
cbeleites mécontents de SX
Court et précis! (+1) "Il a été démontré que ces deux approches sont équivalentes." - pouvez-vous spécifier une référence / citation pour cela? Est-ce scholar.google.de/…
Boern
6

Permettez-moi d'ajouter quelques possibilités supplémentaires:

L'idée générale est que la définition d'un seuil à la distance de la classe vous permet de décider si un échantillon appartient ou non à cette classe, qu'il existe ou non d'autres classes.

  • Mahalanobis-Distance => QDA
  • SIMCA (Soft Independent Modeling of Class Analogies) utilise les distances dans l'espace de score PCA.
    Le SIMCA est courant dans la littérature chimiométrique (bien qu'il soit rarement vraiment mis en place d'une manière unique).
  • (Les SVM sont déjà traités dans la réponse de @Marc Claesen)

Richard G. Brereton: Chemometrics for Pattern Recognition (Wiley, 2009) a un chapitre entier sur la classification à une classe.

cbeleites mécontents de SX
la source