La clasificación de una clase (OCC) se refiere a una situación en la que solo tiene datos de entrenamiento para una clase (o clase positiva) pero durante la prueba puede encontrar muestras positivas y negativas. En principio, esto es similar a la anomalía o detección atípica.
La mayoría de las arquitecturas de aprendizaje profundo son discriminatorias, por ejemplo, CNN, DeepNets, etc., porque necesitan datos de dos o más clases para aprender el clasificador. En la situación de OCC, su mejor opción son los Autoencoders (AE), porque puede entrenar un AE en un tipo de datos (o positivo) y, según un umbral, puede identificar una muestra de prueba como perteneciente a una clase positiva o no. El principal desafío aquí es cómo ajustar el umbral. La mayoría de las veces, el máximo de error de reconstrucción en el conjunto de entrenamiento se toma como un umbral. Sin embargo, si los datos de entrenamiento son ruidosos, esto puede resultar en aceptar una muestra negativa como miembro de la clase positiva. Por lo tanto, este umbral debe ser ajustado.
Ahora, si desea usar AE para la clasificación de una clase, hay varias bibliotecas que puede usar.
- ¿Es posible que una computadora aprenda a distinguir gatos de perros de solo un conjunto de imágenes sin que le digamos qué imágenes son gatos y cuáles son perros, o incluso si hay cosas como gatos y perros, y si es así, cómo es exactamente esto? ¿hecho?
- ¿Cuáles son todas las formas en que Quora usa el procesamiento del lenguaje natural (PNL)?
- Organización de la computadora: ¿Cuál es la aceleración de una versión de 5 etapas de la máquina en tubería sobre la versión sin tubería?
- Cómo decidir el tema de mi interés de investigación para obtener un doctorado en visión artificial y aprendizaje automático
- ¿Cómo debo proceder para implementar un analizador probabilístico de lenguaje natural?
- En R, puede usar el paquete H2O: un pequeño experimento de profundización de H2O en el conjunto de datos MNIST
- En python, puede usar Theano – Denoising Autoencoders (dA)
- En MATLAB, hay una función para entrenar AE – Entrenar un autoencoder – MATLAB trainAutoencoder
- En Java, puede usar Deeplearning4j – Deep Autoencoders
Hay una nueva variante generativa de AE que puede usarse para este propósito: AE variacional – cdoersch / vae_tutorial (código en github).
Otras lecturas
- En mi artículo de revisión sobre OCC, discutí varias técnicas que usan redes neuronales, lea la Sección 4.2.2.2 en la Página 12 [1].
- Los AE son buenos cuando aprendes de datos en bruto. Si sus datos ya tienen características de ingeniería, puede que no sea una buena idea entrenar un AE en ellos. Sin embargo, aún puede usar AE.
- ¿Hay alguna razón particular por la que desea utilizar redes neuronales para OCC? Si no tiene una razón suficientemente buena, recomendaría probar primero métodos más estándar, como SVM de una clase, vecinos más cercanos de una clase, etc. También puede leer esta respuesta: cómo hacer una clasificación de una clase usando SVM?
- Aplicar árboles de decisión no es tan sencillo para resolver problemas de OCC; sin embargo, puede encontrar varias de estas y otras técnicas en el documento de revisión mencionado anteriormente.
Buena suerte.
Notas al pie
[1] https://cs.uwaterloo.ca/~s255kha…