Saltar al contenido

Clasificación de múltiples etiquetas con aprendizaje profundo

30 de agosto de 2020

Última actualización el 31 de agosto de 2020

La clasificación de etiquetas múltiples implica la predicción de cero o más etiquetas de clase.

A diferencia de las tareas de clasificación normales en las que las etiquetas de clase se excluyen mutuamente, la clasificación multi-etiqueta requiere algoritmos especializados de aprendizaje automático que permitan predecir múltiples clases o «etiquetas» mutuamente no exclusivas.

Las redes neuronales de aprendizaje profundo son un ejemplo de un algoritmo que soporta de forma nativa los problemas de clasificación de múltiples etiquetas. Los modelos de redes neuronales para tareas de clasificación multi-etiqueta pueden ser fácilmente definidos y evaluados usando la biblioteca de aprendizaje profundo de Keras.

En este tutorial, descubrirá cómo desarrollar modelos de aprendizaje profundo para la clasificación de múltiples etiquetas.

Después de completar este tutorial, lo sabrás:

  • La clasificación de etiquetas múltiples es una tarea de modelado predictivo que implica la predicción de cero o más etiquetas de clase mutuamente no exclusivas.
  • Los modelos de redes neuronales pueden ser configurados para tareas de clasificación de múltiples etiquetas.
  • Cómo evaluar una red neuronal para la clasificación de múltiples etiquetas y hacer una predicción para nuevos datos.

Empecemos.

Clasificación de múltiples etiquetas con aprendizaje profundo

Clasificación de múltiples etiquetas con aprendizaje profundo
Foto de Trevor Marron, algunos derechos reservados.

Resumen del Tutorial

Este tutorial está dividido en tres partes; son:

  • Clasificación de Multi-Etiquetas
  • Redes neuronales para etiquetas múltiples
  • Red neuronal para la clasificación multi-etiqueta

Clasificación de Multi-Etiquetas

La clasificación es un problema de modelado predictivo que implica la salida de una etiqueta de clase dada alguna entrada

Es diferente de las tareas de regresión que implican la predicción de un valor numérico.

Típicamente, una tarea de clasificación implica predecir una sola etiqueta. Alternativamente, puede implicar la predicción de la probabilidad a través de dos o más etiquetas de clase. En estos casos, las clases se excluyen mutuamente, lo que significa que la tarea de clasificación asume que la entrada pertenece a una sola clase.

Algunas tareas de clasificación requieren predecir más de una etiqueta de clase. Esto significa que las etiquetas de clase o la pertenencia a una clase no son mutuamente excluyentes. Estas tareas se denominan clasificación de etiquetas múltiples…o la clasificación multi-etiqueta para abreviar.

En la clasificación de etiquetas múltiples, se requieren cero o más etiquetas como salida para cada muestra de entrada, y las salidas se requieren simultáneamente. Se supone que las etiquetas de salida son una función de las entradas.

Podemos crear un conjunto de datos sintéticos de clasificación multi-etiqueta usando la función make_multilabel_classification() en la biblioteca scikit-learn.

Nuestro conjunto de datos tendrá 1.000 muestras con 10 características de entrada. El conjunto de datos tendrá tres salidas de etiquetas de clase para cada muestra y cada clase tendrá uno o dos valores (0 o 1, por ejemplo, presente o no presente).

El ejemplo completo de creación y resumen del conjunto de datos de la clasificación sintética multi-etiqueta figura a continuación.

Ejecutando el ejemplo se crea el conjunto de datos y se resume la forma de los elementos de entrada y salida.

Podemos ver que, como era de esperar, hay 1.000 muestras, cada una con 10 características de entrada y tres de salida.

Se resumen las 10 primeras filas de entradas y salidas y podemos ver que todas las entradas de este conjunto de datos son numéricas y que las etiquetas de clase de salida tienen valores 0 o 1 para cada una de las tres etiquetas de clase.

Recomendado:  Togal.AI gana la competencia de lanzamiento de empresas emergentes en el evento The Big 5 Global Construction

A continuación, veamos cómo podemos desarrollar modelos de redes neuronales para tareas de clasificación multi-etiqueta.

Redes neuronales para etiquetas múltiples

Algunos algoritmos de aprendizaje de máquinas soportan la clasificación multi-etiqueta de forma nativa.

Los modelos de redes neuronales pueden ser configurados para soportar la clasificación multi-etiqueta y pueden funcionar bien, dependiendo de los detalles de la tarea de clasificación.

La clasificación multi-etiqueta puede ser apoyada directamente por las redes neuronales simplemente especificando el número de etiquetas de destino que hay en el problema como el número de nodos en la capa de salida. Por ejemplo, una tarea que tiene tres etiquetas de salida (clases) requerirá una capa de salida de la red neuronal con tres nodos en la capa de salida.

Cada nodo de la capa de salida debe utilizar la activación sigmoide. Esto predecirá una probabilidad de pertenencia a una clase para la etiqueta, un valor entre 0 y 1. Finalmente, el modelo debe ajustarse a la función de pérdida de entropía cruzada binaria.

En resumen, para configurar un modelo de red neuronal para la clasificación de múltiples etiquetas, los detalles son:

  • El número de nodos en la capa de salida coincide con el número de etiquetas.
  • Activación sigmoide para cada nodo de la capa de salida.
  • Función de pérdida de entropía cruzada binaria.

Podemos demostrarlo usando la biblioteca de aprendizaje profundo de Keras.

Definiremos un modelo de Perceptrón Multicapa (MLP) para la tarea de clasificación multi-etiqueta definida en la sección anterior.

Cada muestra tiene 10 entradas y tres salidas; por lo tanto, la red requiere una capa de entrada que espera 10 entradas especificadas a través del «input_dim«en la primera capa oculta y tres nodos en la capa de salida.

Usaremos la popular función de activación de ReLU en la capa oculta. La capa oculta tiene 20 nodos que fueron escogidos después de algún ensayo y error. Ajustaremos el modelo usando la pérdida de entropía cruzada binaria y la versión de Adam de descenso de gradiente estocástico.

La definición de la red para la tarea de clasificación multi-etiqueta se enumera a continuación.

Es posible que desee adaptar este modelo para su propia tarea de clasificación multi-etiqueta; por lo tanto, podemos crear una función para definir y devolver el modelo en el que el número de variables de entrada y salida se proporciona como argumentos.

Ahora que estamos familiarizados con la forma de definir un MLP para la clasificación multi-etiqueta, exploremos cómo se puede evaluar este modelo.

Red neuronal para la clasificación multi-etiqueta

Si el conjunto de datos es pequeño, es una buena práctica evaluar los modelos de redes neuronales repetidamente en el mismo conjunto de datos y reportar el rendimiento medio a través de las repeticiones.

Esto se debe a la naturaleza estocástica del algoritmo de aprendizaje.

Además, es una buena práctica utilizar la validación cruzada del pliegue k en lugar de las divisiones de tren/prueba de un conjunto de datos para obtener una estimación imparcial del rendimiento del modelo cuando se hacen predicciones sobre nuevos datos. Una vez más, sólo si no hay demasiados datos que el proceso pueda completarse en un tiempo razonable.

Teniendo esto en cuenta, evaluaremos el modelo MLP en la tarea de regresión multi-salida utilizando la validación cruzada repetida k-pliegue con 10 pliegues y tres repeticiones.

El modelo MLP predecirá la probabilidad de cada etiqueta de clase por defecto. Esto significa que predecirá tres probabilidades para cada muestra. Éstas pueden convertirse en etiquetas de clase nítidas redondeando los valores a 0 o 1. Podemos entonces calcular la precisión de la clasificación para las etiquetas de clase nítidas.

Las puntuaciones se recogen y pueden resumirse informando de la media y la desviación estándar en todas las repeticiones y pliegues de validación cruzada.

El evaluate_model() La función de abajo toma el conjunto de datos, evalúa el modelo y devuelve una lista de resultados de evaluación, en este caso, resultados de precisión.

Podemos entonces cargar nuestro conjunto de datos y evaluar el modelo e informar del rendimiento medio.

A continuación se muestra el ejemplo completo.

Recomendado:  Las sesiones de socios van a por todas en TC Sessions: SaaS 2021 - TechCrunch

Al ejecutar el ejemplo se informa de la precisión de la clasificación para cada pliegue y cada repetición, para dar una idea del progreso de la evaluación.

Nota: Sus resultados pueden variar dada la naturaleza estocástica del algoritmo o el procedimiento de evaluación, o las diferencias en la precisión numérica. Considere ejecutar el ejemplo unas cuantas veces y compare el resultado promedio.

Al final, se informa de la precisión de la media y la desviación estándar. En este caso, se muestra que el modelo alcanza una precisión de alrededor del 81,2 por ciento.

Puede utilizar este código como plantilla para evaluar los modelos MLP en sus propias tareas de clasificación multi-etiqueta. El número de nodos y capas en el modelo puede ser fácilmente adaptado y ajustado a la complejidad de su conjunto de datos.

Una vez elegida la configuración del modelo, podemos utilizarla para ajustar un modelo final en todos los datos disponibles y hacer una predicción para los nuevos datos.

El ejemplo que figura a continuación lo demuestra ajustando primero el modelo MLP en todo el conjunto de datos de clasificación de etiquetas múltiples, y luego llamando al predecir() en el modelo guardado para hacer una predicción para una nueva fila de datos.

Ejecutando el ejemplo se ajusta al modelo y hace una predicción para una nueva fila. Como era de esperar, la predicción contiene tres variables de salida necesarias para la tarea de clasificación multi-etiqueta: las probabilidades de cada etiqueta de clase.

Más lecturas

Esta sección proporciona más recursos sobre el tema si desea profundizar en él.

Resumen

En este tutorial, descubriste cómo desarrollar modelos de aprendizaje profundo para la clasificación multi-etiqueta.

Específicamente, aprendiste:

  • La clasificación de etiquetas múltiples es una tarea de modelado predictivo que implica la predicción de cero o más etiquetas de clase mutuamente no exclusivas.
  • Los modelos de redes neuronales pueden ser configurados para tareas de clasificación de múltiples etiquetas.
  • Cómo evaluar una red neuronal para la clasificación de múltiples etiquetas y hacer una predicción para nuevos datos.

¿Tiene alguna pregunta?
Haga sus preguntas en los comentarios de abajo y haré lo posible por responder.

Desarrollar proyectos de aprendizaje profundo con Python!

Aprendizaje profundo con Python

¿Qué pasaría si pudieras desarrollar una red en minutos

…con sólo unas pocas líneas de Python…

Descubre cómo en mi nuevo Ebook:
Aprendizaje profundo con Python

Cubre proyectos integrales en temas como:
Percepciones multicapas, Redes convolucionales y Redes neuronales recurrentesy más…

Por fin traer el aprendizaje profundo a
Sus propios proyectos

Sáltese los académicos. Sólo los resultados.

Ver lo que hay dentro