Saltar al contenido

Análisis discriminante lineal con pitón

28 de septiembre de 2020

Análisis discriminante lineal es un algoritmo de clasificación lineal de aprendizaje de máquinas.

El algoritmo implica el desarrollo de un modelo probabilístico por clase basado en la distribución específica de las observaciones para cada variable de entrada. A continuación, se clasifica un nuevo ejemplo calculando la probabilidad condicional de que pertenezca a cada clase y seleccionando la clase con la mayor probabilidad.

Como tal, es un modelo de clasificación probabilística relativamente simple que hace fuertes suposiciones sobre la distribución de cada variable de entrada, aunque puede hacer predicciones efectivas incluso cuando se violan esas expectativas (por ejemplo, falla con gracia).

En este tutorial, descubrirás el algoritmo de aprendizaje de la máquina de clasificación del Análisis Discriminante Lineal en Python.

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

  • El Análisis Discriminatorio Lineal es un simple algoritmo de aprendizaje de máquina lineal para la clasificación.
  • Cómo encajar, evaluar y hacer predicciones con el modelo de Análisis Discriminatorio Lineal con Scikit-Learn.
  • Cómo ajustar los hiperparámetros del algoritmo de Análisis Discriminatorio Lineal en un determinado conjunto de datos.

Empecemos.

Análisis discriminante lineal con pitón

Análisis discriminante lineal con pitón
Foto de Mihai Lucîț, algunos derechos reservados.

Resumen del Tutorial

Este tutorial está dividido en tres partes; son:

  1. Análisis discriminante lineal
  2. Análisis discriminante lineal con scikit-learn
  3. Sintonizar los hiperparámetros del LDA

Análisis discriminante lineal

El Análisis Discriminatorio Lineal, o LDA para abreviar, es un algoritmo de aprendizaje de la máquina de clasificación.

Funciona calculando estadísticas resumidas de las características de entrada por etiqueta de clase, como la media y la desviación estándar. Estas estadísticas representan el modelo aprendido de los datos de entrenamiento. En la práctica, las operaciones de álgebra lineal se utilizan para calcular las cantidades necesarias de manera eficiente mediante la descomposición de la matriz.

Las predicciones se hacen estimando la probabilidad de que un nuevo ejemplo pertenezca a cada etiqueta de clase en función de los valores de cada característica de entrada. La clase que da como resultado la mayor probabilidad se asigna entonces al ejemplo. Como tal, la LDA puede considerarse una simple aplicación del Teorema de Bayes para la clasificación.

El LDA supone que las variables de entrada son numéricas y están distribuidas normalmente y que tienen la misma varianza (difusión). De no ser así, puede ser conveniente transformar los datos para tener una distribución gaussiana y estandarizar o normalizar los datos antes de la modelización.

… el clasificador LDA resulta de asumir que las observaciones dentro de cada clase provienen de una distribución normal con un vector medio específico de la clase y una varianza común

– Página 142, Una introducción al aprendizaje estadístico con aplicaciones en R, 2014.

También asume que las variables de entrada no están correlacionadas; si lo están, una transformación PCA puede ser útil para eliminar la dependencia lineal.

… los profesionales deben ser particularmente rigurosos en el preprocesamiento de los datos antes de utilizar la LDA. Recomendamos que los predictores se centren y escalen y que se eliminen los predictores de varianza casi nula.

– Página 293, Applied Predictive Modeling, 2013.

Sin embargo, el modelo puede funcionar bien, incluso cuando se violan estas expectativas.

El modelo LDA es naturalmente multiclase. Esto significa que soporta problemas de clasificación de dos clases y se extiende a más de dos clases (clasificación multiclase) sin modificación o aumento.

Es un algoritmo de clasificación lineal, como la regresión logística. Esto significa que las clases están separadas en el espacio de las características por líneas o hiperplanos. Se pueden utilizar extensiones del método que permiten otras formas, como el Análisis Cuadrático Discriminatorio (QDA), que permite formas curvas en el límite de decisión.

… a diferencia de la LDA, la QDA asume que cada clase tiene su propia matriz de covarianza.

– Página 149, Una introducción al aprendizaje estadístico con aplicaciones en R, 2014.

Ahora que estamos familiarizados con la LDA, veamos cómo ajustar y evaluar los modelos usando la biblioteca de aprendizaje de ciencias.

Recomendado:  Clasificación Desequilibrada de Multi-clase

Análisis discriminante lineal con scikit-learn

El Análisis Discriminatorio Lineal está disponible en la biblioteca de aprendizaje de la máquina Python a través de la clase de Análisis Discriminatorio Lineal.

El método puede utilizarse directamente sin configuración, aunque la aplicación ofrece argumentos para la personalización, como la elección del solucionador y el uso de una pena.

Podemos demostrar el método de Análisis Discriminatorio Lineal con un ejemplo trabajado.

Primero, definamos un conjunto de datos de clasificación sintética.

Usaremos la función make_classification() para crear un conjunto de datos con 1.000 ejemplos, cada uno con 10 variables de entrada.

El ejemplo crea y resume el conjunto de datos.

Ejecutando el ejemplo se crea el conjunto de datos y se confirma el número de filas y columnas del conjunto de datos.

Podemos ajustar y evaluar un modelo de Análisis Discriminatorio Lineal usando la validación cruzada de repetición estratificada k-fold a través de la clase RepeatedStratifiedKFold. Usaremos 10 pliegues y tres repeticiones en el arnés de prueba.

El ejemplo completo de evaluación del modelo de análisis discriminante lineal para la tarea de clasificación binaria sintética figura a continuación.

La ejecución del ejemplo evalúa el algoritmo de Análisis Discriminatorio Lineal en el conjunto de datos sintéticos e informa de la precisión media en las tres repeticiones de validación cruzada de 10 veces.

Sus resultados específicos pueden variar dada la naturaleza estocástica del algoritmo de aprendizaje. Considere ejecutar el ejemplo unas cuantas veces.

En este caso, podemos ver que el modelo alcanzó una precisión media de alrededor del 89,3 por ciento.

Podemos decidir usar el Análisis Discriminatorio Lineal como nuestro modelo final y hacer predicciones sobre nuevos datos.

Esto puede lograrse ajustando el modelo a todos los datos disponibles y llamando a la función predict() que pasa en una nueva fila de datos.

Recomendado:  La investigación explora estrategias innovadoras de rehabilitación

Podemos demostrarlo con un ejemplo completo que se enumera a continuación.

Ejecutando el ejemplo se ajusta al modelo y hace una predicción de etiqueta de clase para una nueva fila de datos.

A continuación, podemos ver la configuración de los hiperparámetros del modelo.

Sintonizar los hiperparámetros del LDA

Los hiperparámetros del método de Análisis Discriminante Lineal deben ser configurados para su conjunto de datos específico.

Un importante hiperparámetro es el solucionador, que por defecto es ‘svd…pero también se puede ajustar a otros valores para los solucionadores que apoyan la capacidad de encogimiento.

El siguiente ejemplo lo demuestra utilizando la clase GridSearchCV con una cuadrícula de diferentes valores de solver.

Al ejecutar el ejemplo se evaluará cada combinación de configuraciones utilizando una validación cruzada repetida.

Sus resultados específicos pueden variar dada la naturaleza estocástica del algoritmo de aprendizaje. Intente ejecutar el ejemplo unas cuantas veces.

En este caso, podemos ver que el solucionador SVD por defecto funciona mejor comparado con los otros solucionadores incorporados.

A continuación, podemos explorar si el uso de la contracción con el modelo mejora el rendimiento.

La contracción añade una penalización al modelo que actúa como un tipo de regularizador, reduciendo la complejidad del modelo.

La regularización reduce la varianza asociada a la estimación basada en la muestra a expensas de un posible aumento del sesgo. Esta compensación de la varianza del sesgo suele estar regulada por uno o más parámetros (grado de creencia) que controlan la fuerza del sesgo hacia el conjunto «plausible» de valores de los parámetros (de la población).

– Análisis discriminante regularizado, 1989.

Recomendado:  Trazar una superficie de decisión para los algoritmos de aprendizaje automático en Python

Esto se puede establecer a través de la «contracción«y se puede establecer un valor entre 0 y 1. Comprobaremos los valores en una cuadrícula con un espacio de 0,01.

Para utilizar la pena, se debe elegir un solucionador que apoye esta capacidad, como…eigen…o…lsqr‘. Usaremos lo último en este caso.

El ejemplo completo del ajuste del hiperparámetro de contracción se enumera a continuación.

Al ejecutar el ejemplo se evaluará cada combinación de configuraciones utilizando una validación cruzada repetida.

Sus resultados específicos pueden variar dada la naturaleza estocástica del algoritmo de aprendizaje. Intente ejecutar el ejemplo unas cuantas veces.

En este caso, podemos ver que el uso de la contracción ofrece un ligero aumento en el rendimiento de alrededor del 89,3 por ciento a alrededor del 89,4 por ciento, con un valor de 0,02.

Más lecturas

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

Tutoriales

Documentos

Libros

APIs

Artículos

Resumen

En este tutorial, descubriste el algoritmo de aprendizaje de la máquina de clasificación del Análisis Discriminante Lineal en Python.

Específicamente, aprendiste:

  • El Análisis Discriminatorio Lineal es un simple algoritmo de aprendizaje de máquina lineal para la clasificación.
  • Cómo encajar, evaluar y hacer predicciones con el modelo de Análisis Discriminatorio Lineal con Scikit-Learn.
  • Cómo ajustar los hiperparámetros del algoritmo de Análisis Discriminatorio Lineal en un determinado conjunto de datos.

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

Descubre el aprendizaje rápido de la máquina en Python!

Aprendizaje de la máquina maestra con Python

Desarrolle sus propios modelos en minutos

…con sólo unas pocas líneas de código de aprendizaje científico…

Aprende cómo en mi nuevo Ebook:
Dominio de la máquina de aprendizaje con la pitón

Cubre Tutoriales de auto-estudio y proyectos integrales como:
Cargando datos, visualización, modelado, tuningy mucho más…

Finalmente traer el aprendizaje automático a
Sus propios proyectos

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

Ver lo que hay dentro