Clasificador para solo una clase

10

En una clasificación simple, tenemos dos clases: clase-0 y clase-1. En algunos datos solo tengo valores para la clase 1, por lo que ninguno para la clase 0. Ahora estoy pensando en hacer un modelo para modelar los datos para la clase 1. Entonces, cuando llegan nuevos datos, este modelo se aplica a los nuevos datos y encuentra una probabilidad que dice cuán probable es que esos nuevos datos se ajusten a este modelo. Luego, comparando con un umbral, puedo filtrar datos inapropiados.

Mis preguntas son:

  • ¿Es esta una buena manera de trabajar con tales problemas?
  • ¿Se puede usar un clasificador RandomForest para este caso? ¿Necesito agregar datos artificiales para la clase 0, que espero que el clasificador considere como ruido?
  • ¿Alguna otra idea puede ayudar para este problema?
Big Data Lover
fuente

Respuestas:

9

Esto es posible utilizando algunos enfoques y sin duda es un enfoque válido. Sin embargo, no estoy seguro de si los bosques aleatorios pueden hacer esto.

Generar datos artificiales significa hacer suposiciones adicionales, no lo haga si no es necesario.

Una técnica que puede considerar es la llamada SVM de una clase. Hace exactamente lo que está buscando: intenta construir un modelo que acepte los puntos de entrenamiento y rechace los puntos de otras distribuciones.

Algunas referencias sobre SVM de una clase:

  1. Schölkopf, Bernhard y col. "Estimación del soporte de una distribución de alta dimensión". Cálculo neuronal 13.7 (2001): 1443-1471. Este documento introdujo el enfoque.

  2. Tax, David MJ y Robert PW Duin. "Descripción de datos vectoriales de soporte". Machine learning 54.1 (2004): 45-66. Una forma diferente de hacer lo mismo, probablemente más intuitiva.

Se ha demostrado que ambos enfoques son equivalentes. El primero estima un hiperplano que separa todos los datos de entrenamiento del origen en el espacio de características con una distancia máxima. El segundo estima una hiperesfera con un radio mínimo en el espacio de características que contiene las instancias de entrenamiento.

SVM de una clase está disponible en muchos paquetes de SVM, incluidos libsvm , scikit-learn (Python) y kernlab (R).

Marc Claesen
fuente
3
La tesis doctoral de Tax "Clasificación de una clase - Aprendizaje conceptual en ausencia de contraejemplos" también está disponible: homepage.tudelft.nl/n9d04/thesis.pdf
cbeleites descontento con SX
Corto y preciso! (+1) "Se ha demostrado que ambos enfoques son equivalentes". - ¿Puedes especificar una referencia / cita para eso? ¿Es scholar.google.de/…
Boern
6

Permítanme agregar algunas posibilidades más:

La idea general es que establecer un umbral a la distancia de la clase le permite decidir si una muestra pertenece a esa clase o no, e independientemente de si hay otras clases o no.

  • Mahalanobis-Distancia => QDA
  • SIMCA (Soft Independent Modeling of Class Analogies) utiliza distancias en el espacio de puntuación de PCA.
    SIMCA es común en la literatura quimiométrica (aunque rara vez se configura de una manera única).
  • (Los SVM ya se tratan en la respuesta de @Marc Claesen)

Richard G. Brereton: Chemometrics for Pattern Recognition (Wiley, 2009) tiene un capítulo completo sobre la clasificación de una clase.

cbeleites descontentos con SX
fuente