Una guía práctica para el análisis discriminante lineal para la clasificación binaria

Estás leyendo la publicación: Una guía práctica para el análisis discriminante lineal para la clasificación binaria

El análisis discriminante lineal (LDA) es un método para separar los puntos de datos mediante el aprendizaje de las relaciones entre los puntos de datos de alta dimensión y la línea de aprendizaje. Reduce los datos dimensionales altos a datos dimensionales lineales. LDA también se utiliza como herramienta para la clasificación, reducción de dimensiones y visualización de datos. El método LDA a menudo produce resultados de clasificación robustos, decentes e interpretables a pesar de su simplicidad. En este artículo, tendremos una interdicción a LDA enfocándonos específicamente en sus capacidades de clasificación. A continuación se muestra una lista de puntos que cubriremos en este artículo.

Tabla de contenido

  1. ¿Por qué se introdujo el análisis discriminante lineal?
  2. Acerca del análisis discriminante lineal (LDA)
  3. LDA para clasificación binaria Python

Entendamos por qué se introdujo el análisis discriminante lineal (LDA) para la clasificación.

¿Por qué se introdujo LDA?

Para comprender el motivo de la introducción de LDA, primero debemos comprender qué salió mal con la regresión logística. Existen las siguientes limitaciones que enfrenta la técnica de regresión logística:

  • La regresión logística se utiliza tradicionalmente para clasificación binaria problemas. Aunque se puede extrapolar y utilizar en la clasificación de clases múltiples, esto rara vez se realiza.
  • La regresión logística puede carecer de estabilidad cuando las clases están bien separadas. Entonces alli esta inestabilidad cuando las clases están bien separadas.
  • La regresión logística es inestable cuando hay menos características parámetros a estimar.

Todas las razones anteriores del fracaso de la regresión logística se han rectificado en LDA. Avanzando más en el artículo, veamos una breve introducción a nuestro clasificador de referencia, el Análisis Discriminante Lineal (LDA).

🔥 Recomendado:  ¿Cómo visualizar diferentes modelos de ML usando PyCaret para la optimización?

¿Está buscando un repositorio completo de bibliotecas de Python utilizadas en ciencia de datos, echa un vistazo aquí.

Acerca del análisis discriminante lineal (LDA)

El análisis discriminante lineal es una técnica para clasificar características binarias y no binarias utilizando un algoritmo lineal para aprender la relación entre las características dependientes e independientes. Utiliza la fórmula de Fischer para reducir la dimensionalidad de los datos para que encajen en una dimensión lineal. LDA es un algoritmo multifuncional, es clasificador, reductor de dimensionalidad y visualizador de datos. El objetivo de LDA es:

  • A minimizar la variabilidad entre clases que se refiere a clasificar tantos puntos similares como sea posible en una clase. Esto asegura menos errores de clasificación.
  • A maximizar la distancia entre la media de clases, la media se coloca lo más lejos posible para garantizar una alta confianza durante la predicción.

Enlace de imágen

En la representación anterior, hay dos clasificaciones creadas con datos que tienen una covarianza fija. Se explica con la ayuda de una línea de relación lineal.

Implementemos LDA en los datos y observemos los resultados.

LDA para clasificación binaria Python

El paquete de análisis discriminante lineal está presente en la biblioteca sklearn. Comencemos con la importación de algunas bibliotecas que se utilizarán para este artículo.

Importando biblioteca

importar pandas como pd importar numpy como np importar matplotlib.pyplot como plt importar seaborn como sns de sklearn.model_selection importar train_test_split de sklearn.discriminant_analysis importar LinearDiscriminantAnalysis de sklearn.datasets importar make_classification de sklearn.metrics importar ConfusionMatrixDisplay,precision_score,recall_score,confusion _advertencias de importación de matriz advertencias.filterwarnings(‘ignorar’)

leyendo los datos

df=pd.read_csv(“/content/drive/MyDrive/Datasets/heart.csv”) print(“nº de filas=”,df.shape[0],”\nno de columnas=”,df.shape[1]) df.cabeza()

🔥 Recomendado:  20 ideas de generación de leads B2B (probablemente aún no las hayas probado)

Hay un total de 14 funciones, incluida la variable dependiente “salida”. Estos datos están relacionados con la predicción de posibilidades de sufrir un infarto.

Preparación de datos para el entrenamiento.

X=df.drop(‘salida’,eje=1) y=df[‘output’]
X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.30, random_state=42)

Divida los datos en tren y prueba con una proporción de 70:30 respectivamente. La forma de los datos de las variables dependientes e independientes del tren y de la prueba se muestra arriba.

Ajustar LDA con datos

LDA = AnálisisDiscriminanteLineal() LDA.fit(X_train, y_train) LDA_pred=LDA.predict(X_test)

El modelo ahora está entrenado en los datos de entrenamiento y tiene valores predichos utilizando los datos de prueba. Veamos los factores de rendimiento para la precisión de la predicción.

Creación de matriz de confusión

tn, fp, fn, tp = confusion_matrix(lista(y_test), lista(LDA_pred), etiquetas=[0, 1]).ravel() print(‘Verdadero positivo’, tp) print(‘Verdadero negativo’, tn) print(‘Falso positivo’, fp) print(‘Falso negativo’, fn) ConfusionMatrixDisplay.from_predictions(y_test, LDA_pred) plt .espectáculo()

Con la ayuda de la matriz de confusión anterior, podemos calcular la precisión y la puntuación de recuperación. Usaremos el puntaje de precisión para este problema porque es el valor pronosticado positivo, por lo que en este caso, el valor positivo es cuántos pacientes sufren un ataque al corazón.

Cálculo de la puntuación de precisión

print(“Puntuación de precisión”,precision_score(y_test,LDA_pred)) Puntuación de precisión 0,82

Nuestro modelo tiene una precisión del 82% en la predicción de que el paciente está sufriendo un infarto. Esta puntuación no es buena porque en problemas relacionados con la medicina, el modelo debe tener un 99 % de confianza en la decisión. Por lo tanto, para mejorar el rendimiento del modelo, el objetivo es reducir el falso negativo y el falso positivo, que también se conocen como error de tipo 1 y tipo 2, respectivamente. En este caso, deberíamos centrarnos más en la reducción de falsos negativos porque son aquellos pacientes que están o sufrirán un infarto pero el modelo los ha clasificado como negativos (pacientes sin infarto).

🔥 Recomendado:  ¿Qué hay de nuevo en PyCaret 2.3.6?

veredicto final

El análisis discriminante lineal utiliza la distancia a la media de la clase, que es más fácil de interpretar, utiliza un límite de decisión lineal para explicar la clasificación y reduce la dimensionalidad. Con una implementación práctica de este concepto en este artículo, podríamos entender cómo se usa el análisis discriminante lineal en la clasificación.

Referencias

Tabla de Contenido