Regresión logística multinomial con Python

Regresión logística multinomial es una extensión de la regresión logística que agrega soporte nativo para problemas de clasificación de clases múltiples.

La regresión logística, por defecto, se limita a problemas de clasificación de dos clases. Algunas extensiones como uno contra resto pueden permitir el uso de regresión logística para problemas de clasificación de clases múltiples, aunque requieren que el problema de clasificación primero se transforme en problemas de clasificación binaria múltiple.

En cambio, el algoritmo de regresión logística multinomial es una extensión del modelo de regresión logística que implica cambiar la función de pérdida a pérdida de entropía cruzada y predecir la distribución de probabilidad a una distribución de probabilidad multinomial para soportar de forma nativa problemas de clasificación de clases múltiples.

En este tutorial, descubrirá cómo desarrollar modelos de regresión logística multinomial en Python.


Recomendado: ¿Qué es el Big data?.


Después de completar este tutorial, sabrá:

  • La regresión logística multinomial es una extensión de la regresión logística para la clasificación de clases múltiples.
  • Cómo desarrollar y evaluar la regresión logística multinomial y desarrollar un modelo final para hacer predicciones sobre nuevos datos.
  • Cómo ajustar el hiperparámetro de penalización para el modelo de regresión logística multinomial.

Empecemos.

Regresión logística multinomial con Python

Regresión logística multinomial con Python
Foto de Nicolas Rénac, algunos derechos reservados.

Descripción general del tutorial

Este tutorial se divide en tres partes; son:

  1. Regresión logística multinomial
  2. Evaluar el modelo de regresión logística multinomial
  3. Tune Penalty for Multinomial Logistic Regression

Regresión logística multinomial

La regresión logística es un algoritmo de clasificación.

Está destinado a conjuntos de datos que tienen variables de entrada numéricas y una variable de destino categórica que tiene dos valores o clases. Los problemas de este tipo se denominan problemas de clasificación binaria.

La regresión logística está diseñada para problemas de dos clases, modelando el objetivo utilizando una función de distribución de probabilidad binomial. Las etiquetas de clase se asignan a 1 para la clase o resultado positivo y 0 para la clase o resultado negativo. El modelo de ajuste predice la probabilidad de que un ejemplo pertenezca a la clase 1.

De forma predeterminada, la regresión logística no se puede utilizar para tareas de clasificación que tienen más de dos etiquetas de clase, la denominada clasificación de clases múltiples.

En cambio, requiere modificaciones para admitir problemas de clasificación de clases múltiples.

Un enfoque popular para adaptar la regresión logística a problemas de clasificación de clases múltiples es dividir el problema de clasificación de clases múltiples en problemas de clasificación binaria múltiples y ajustar un modelo de regresión logística estándar en cada subproblema. Las técnicas de este tipo incluyen modelos de envoltura uno contra reposo y uno contra uno.

Un enfoque alternativo implica cambiar el modelo de regresión logística para respaldar la predicción de etiquetas de clases múltiples directamente. Específicamente, para predecir la probabilidad de que un ejemplo de entrada pertenezca a cada etiqueta de clase conocida.

La distribución de probabilidad que define las probabilidades de clases múltiples se denomina distribución de probabilidad multinomial. Un modelo de regresión logística que se adapta para aprender y predecir una distribución de probabilidad multinomial se denomina Regresión logística multinomial. De manera similar, podríamos referirnos a la regresión logística estándar o predeterminada como Regresión logística binomial.

  • Regresión logística binomial: Regresión logística estándar que predice una probabilidad binomial (es decir, para dos clases) para cada ejemplo de entrada.
  • Regresión logística multinomial: Versión modificada de la regresión logística que predice una probabilidad multinomial (es decir, más de dos clases) para cada ejemplo de entrada.

Si es nuevo en las distribuciones de probabilidad binomial y multinomial, es posible que desee leer el tutorial:

Cambiar la regresión logística de probabilidad binomial a multinomial requiere un cambio en la función de pérdida utilizada para entrenar el modelo (por ejemplo, pérdida de registro a pérdida de entropía cruzada) y un cambio en la salida de un valor de probabilidad único a una probabilidad para cada etiqueta de clase.

Ahora que estamos familiarizados con la regresión logística multinomial, veamos cómo podemos desarrollar y evaluar modelos de regresión logística multinomial en Python.

Evaluar el modelo de regresión logística multinomial

En esta sección, desarrollaremos y evaluaremos un modelo de regresión logística multinomial utilizando la biblioteca de aprendizaje automático de Python scikit-learn.

Primero, definiremos un conjunto de datos sintéticos de clasificación de clases múltiples para usar como base de la investigación. Este es un conjunto de datos genérico que puede reemplazar fácilmente con su propio conjunto de datos cargado más adelante.

La función make_classification () se puede utilizar para generar un conjunto de datos con un número determinado de filas, columnas y clases. En este caso, generaremos un conjunto de datos con 1000 filas, 10 variables de entrada o columnas y 3 clases.

El siguiente ejemplo genera el conjunto de datos y resume la forma de las matrices y la distribución de ejemplos en las tres clases.

La ejecución del ejemplo confirma que el conjunto de datos tiene 1000 filas y 10 columnas, como esperábamos, y que las filas se distribuyen aproximadamente de manera uniforme en las tres clases, con aproximadamente 334 ejemplos en cada clase.

La regresión logística se admite en la biblioteca scikit-learn a través de la clase LogisticRegression.

los Regresión logística La clase se puede configurar para la regresión logística multinomial estableciendo el “multi_clase“Argumento a”multinomial” y el “solucionador“Argumento a un solucionador que admita la regresión logística multinomial, como”lbfgs“.

El modelo de regresión logística multinomial se ajustará mediante la pérdida de entropía cruzada y predecirá el valor entero para cada etiqueta de clase codificada como entero.

Ahora que estamos familiarizados con la API de regresión logística multinomial, podemos ver cómo podemos evaluar un modelo de regresión logística multinomial en nuestro conjunto de datos sintéticos de clasificación de clases múltiples.

Es una buena práctica evaluar los modelos de clasificación utilizando una validación cruzada de k-veces estratificada repetida. La estratificación asegura que cada pliegue de validación cruzada tenga aproximadamente la misma distribución de ejemplos en cada clase que el conjunto de datos de entrenamiento completo.

Usaremos tres repeticiones con 10 pliegues, lo cual es un buen valor predeterminado, y evaluaremos el desempeño del modelo usando precisión de clasificación dado que las clases están balanceadas.

El ejemplo completo de evaluación de la regresión logística multinomial para la clasificación de clases múltiples se muestra a continuación.

La ejecución del ejemplo informa la precisión de clasificación media en todos los pliegues y repeticiones del procedimiento de evaluación.

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

En este caso, podemos ver que el modelo de regresión logística multinomial con penalización por defecto logró una precisión de clasificación media de alrededor del 68,1 por ciento en nuestro conjunto de datos de clasificación sintética.

Podemos decidir utilizar el modelo de regresión logística multinomial como nuestro modelo final y hacer predicciones sobre nuevos datos.

Esto se puede lograr ajustando primero el modelo a todos los datos disponibles, luego llamando al predecir() función para hacer una predicción de nuevos datos.

El siguiente ejemplo demuestra cómo hacer una predicción para nuevos datos utilizando el modelo de regresión logística multinomial.

Al ejecutar el ejemplo, primero se ajusta el modelo a todos los datos disponibles, luego se define una fila de datos, que se proporciona al modelo para realizar una predicción.

En este caso, podemos ver que el modelo predijo la clase “1” para la única fila de datos.

Un beneficio de la regresión logística multinomial es que puede predecir probabilidades calibradas en todas las etiquetas de clase conocidas en el conjunto de datos.

Esto se puede lograr llamando al predecir_proba () función en el modelo.

El siguiente ejemplo demuestra cómo predecir una distribución de probabilidad multinomial para un nuevo ejemplo utilizando el modelo de regresión logística multinomial.

Al ejecutar el ejemplo, primero se ajusta el modelo a todos los datos disponibles, luego se define una fila de datos, que se proporciona al modelo para predecir las probabilidades de clase.

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

En este caso, podemos ver que la clase 1 (por ejemplo, el índice de la matriz se asigna al valor entero de la clase) tiene la mayor probabilidad predicha con aproximadamente 0,50.

Ahora que estamos familiarizados con la evaluación y el uso de modelos de regresión logística multinomial, exploremos cómo podemos ajustar los hiperparámetros del modelo.

Tune Penalty for Multinomial Logistic Regression

Un hiperparámetro importante para ajustar para la regresión logística multinomial es el término de penalización.

Este término impone presión sobre el modelo para buscar pesos de modelo más pequeños. Esto se logra agregando una suma ponderada de los coeficientes del modelo a la función de pérdida, alentando al modelo a reducir el tamaño de los pesos junto con el error mientras ajusta el modelo.

Un tipo popular de penalización es la penalización L2 que suma la suma (ponderada) de los coeficientes al cuadrado a la función de pérdida. Se puede usar una ponderación de los coeficientes que reduce la fuerza de la penalización de una penalización completa a una penalización muy leve.

Por defecto, el Regresión logística La clase usa la penalización L2 con una ponderación de coeficientes establecida en 1.0. El tipo de penalización se puede establecer mediante el “multa“Argumento con valores de”l1“,”l2“,”red elástica”(Por ejemplo, ambos), aunque no todos los solucionadores admiten todos los tipos de penalización. La ponderación de los coeficientes en la penalización se puede establecer mediante el “C” argumento.

La ponderación de la penalización es en realidad la ponderación inversa, quizás penalización = 1 – C.

De la documentación:

C: flotante, predeterminado = 1.0
Inversa de la fuerza de regularización; debe ser un flotador positivo. Como en las máquinas de vectores de soporte, los valores más pequeños especifican una regularización más fuerte.

Esto significa que los valores cercanos a 1.0 indican muy poca penalización y los valores cercanos a cero indican una fuerte penalización. Un valor C de 1.0 puede indicar que no hay penalización en absoluto.

  • C cerca de 1.0: Penalización leve.
  • C cerca de 0.0: Fuerte penalización.

La penalización puede desactivarse configurando el “multa“Argumento de la cadena”ninguna“.

Ahora que estamos familiarizados con la penalización, veamos cómo podríamos explorar el efecto de diferentes valores de penalización en el desempeño del modelo de regresión logística multinomial.

Es común probar los valores de penalización en una escala logarítmica para descubrir rápidamente la escala de penalización que funciona bien para un modelo. Una vez encontrado, un mayor ajuste a esa escala puede ser beneficioso.

Exploraremos la penalización L2 con valores de ponderación en el rango de 0.0001 a 1.0 en una escala logarítmica, además de sin penalización o 0.0.

El ejemplo completo de evaluación de los valores de penalización L2 para la regresión logística multinomial se enumera a continuación.

La ejecución del ejemplo informa la precisión de clasificación media para cada configuración a lo largo del camino.

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

En este caso, podemos ver que un valor de C de 1.0 tiene la mejor puntuación de alrededor del 77,7 por ciento, que es lo mismo que usar ninguna penalización que logra la misma puntuación.

Se crea una gráfica de caja y bigotes para las puntuaciones de precisión de cada configuración y todas las gráficas se muestran una al lado de la otra en una figura en la misma escala para una comparación directa.

En este caso, podemos ver que cuanto mayor sea la penalización que usemos en este conjunto de datos (es decir, cuanto menor sea el valor de C), peor será el rendimiento del modelo.

Gráficos de caja y bigotes de la configuración de penalización L2 frente a la precisión para la regresión logística multinomial

Gráficos de caja y bigotes de la configuración de penalización L2 frente a la precisión para la regresión logística multinomial

Otras lecturas

Esta sección proporciona más recursos sobre el tema si está buscando profundizar.

Tutoriales relacionados

API

Artículos

Resumen

En este tutorial, descubrió cómo desarrollar modelos de regresión logística multinomial en Python.

Específicamente, aprendiste:

  • La regresión logística multinomial es una extensión de la regresión logística para la clasificación de clases múltiples.
  • Cómo desarrollar y evaluar la regresión logística multinomial y desarrollar un modelo final para hacer predicciones sobre nuevos datos.
  • Cómo ajustar el hiperparámetro de penalización para el modelo de regresión logística multinomial.

¿Tiene usted alguna pregunta?
Haga sus preguntas en los comentarios a continuación y haré todo lo posible para responder.

¡Descubra el aprendizaje automático rápido en Python!

Domina el aprendizaje automático con Python

Desarrolle sus propios modelos en minutos

… con solo unas pocas líneas de código scikit-learn

Aprenda cómo en mi nuevo libro electrónico:
Dominio del aprendizaje automático con Python

Cubiertas tutoriales de autoaprendizaje y proyectos de principio a fin me gusta:
Cargando datos, visualización, modelado, Afinación, y mucho más…

Finalmente, lleve el aprendizaje automático a
Tus Propios Proyectos

Sáltese los académicos. Solo resultados.

Mira lo que hay dentro