Contenido de este artículo
- 0.1 Paso 1: cargue las bibliotecas necesarias
- 0.2 Paso 2: cargue los datos
- 0.3 Paso 3: escale los datos
- 0.4 Paso 4: crear muestras de entrenamiento y prueba
- 0.5 Paso 5: ajuste el modelo LDA
- 0.6 Paso 6: use el modelo para hacer predicciones
- 0.7 Paso 7: Visualice los resultados
- 1 Redactor del artículo
- 2 ¿Te hemos ayudado?
- 0
- 0
- 0
- 0
El análisis discriminante lineal es un método que puede utilizar cuando tiene un conjunto de variables predictoras y le gustaría clasificar una variable de respuesta en dos o más clases.
Este tutorial proporciona un ejemplo paso a paso de cómo realizar un análisis discriminante lineal en R.
Paso 1: cargue las bibliotecas necesarias
Primero, cargaremos las bibliotecas necesarias para este ejemplo:
biblioteca (MASS) biblioteca (ggplot2)
Paso 2: cargue los datos
Para este ejemplo, usaremos el conjunto de datos de iris incorporado en R. El siguiente código muestra cómo cargar y ver este conjunto de datos:
# adjuntar el conjunto de datos de iris para facilitar el trabajo adjuntar (iris) #ver la estructura del conjunto de datos str (iris) 'data.frame': 150 obs. de 5 variables: $ Sépalo Longitud: núm 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ... $ Ancho.sepal: núm 3,5 3 3,2 3,1 3,6 3,9 3,4 3,4 2,9 3,1 ... $ Pétalo.Longitud: núm 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ... $ Ancho.Pétalo: num 0,2 0,2 0,2 0,2 0,2 0,4 0,3 0,2 0,2 0,1 ... $ Especie: Factor con 3 niveles "setosa", "versicolor", ..: 1 1 1 1 1 1 1 ...
Podemos ver que el conjunto de datos contiene 5 variables y 150 observaciones en total.
Para este ejemplo, crearemos un modelo de análisis discriminante lineal para clasificar a qué especie pertenece una flor determinada.
Usaremos las siguientes variables predictoras en el modelo:
- Longitud de sépalo
- Ancho de sépalo
- Pétalo Longitud
- Pétalo Ancho
Y los usaremos para predecir la variable de respuesta Species , que toma las siguientes tres clases potenciales:
- setosa
- versicolor
- virginica
Paso 3: escale los datos
Uno de los supuestos clave del análisis discriminante lineal es que cada una de las variables predictoras tiene la misma varianza. Una manera fácil de asegurar que se cumpla este supuesto es escalar cada variable de manera que tenga una media de 0 y una desviación estándar de 1.
Podemos hacerlo rápidamente en R usando la función scale () :
#escala cada variable de predicción (es decir, las primeras 4 columnas) iris [1: 4] <- escala (iris [1: 4])
Podemos usar la función apply () para verificar que cada variable predictora ahora tenga una media de 0 y una desviación estándar de 1:
# encontrar la media de cada variable de predicción aplicada (iris [1: 4], 2, media) Sepal.Longitud Sepal.Ancho Pétalo.Longitud Pétalo.Ancho -4.484318e-16 2.034094e-16 -2.895326e-17 -3.663049e-17 # encontrar la desviación estándar de cada variable de predicción aplicada (iris [1: 4], 2, sd) Sepal.Longitud Sepal.Ancho Pétalo.Longitud Pétalo.Ancho 1 1 1 1
Paso 4: crear muestras de entrenamiento y prueba
A continuación, dividiremos el conjunto de datos en un conjunto de entrenamiento para entrenar el modelo y un conjunto de pruebas para probar el modelo:
#Haga que este ejemplo sea reproducible set.seed (1) #Utilice el 70% del conjunto de datos como conjunto de entrenamiento y el 30% restante como conjunto de prueba muestra <- muestra (c ( TRUE , FALSE ), nrow (iris), replace = TRUE , prob = c (0.7,0.3)) entrenar <- iris [muestra,] prueba <- iris [! muestra,]
Paso 5: ajuste el modelo LDA
A continuación, usaremos la función lda () del paquete MASS para ajustar el modelo LDA a nuestros datos:
#fit LDA model model <- lda (Species ~., data = train) #ver salida del modelo modelo Llamada: lda (Especie ~., datos = tren) Probabilidades previas de grupos: setosa versicolor virginica 0,3207547 0,3207547 0,3584906 Grupo significa: Sepal.Longitud Sepal.Ancho Pétalo.Longitud Pétalo.Ancho setosa -1.0397484 0.8131654 -1.2891006 -1.2570316 versicolor 0,1820921 -0,6038909 0,3403524 0,2208153 virginica 0.9582674 -0.1919146 1.0389776 1.1229172 Coeficientes de discriminantes lineales: LD1 LD2 Sépalo Longitud 0.7922820 0.5294210 Sépalo Ancho 0.5710586 0.7130743 Pétalo Longitud -4.0762061 -2.7305131 Ancho de pétalo -2.0602181 2.6326229 Proporción de traza: LD1 LD2 0,9921 0,0079
A continuación, se explica cómo interpretar la salida del modelo:
Probabilidades previas de grupo: representan las proporciones de cada especie en el conjunto de entrenamiento. Por ejemplo, el 35,8% de todas las observaciones en el conjunto de entrenamiento fueron de la especie virginica .
Medias de grupo: muestran los valores medios de cada variable de predicción de cada especie.
Coeficientes de discriminantes lineales: estos muestran la combinación lineal de variables predictoras que se utilizan para formar la regla de decisión del modelo LDA. Por ejemplo:
- LD1: .792 * Sepal.Longitud + .571 * Sepal.Width – 4.076 * Petal.Length – 2.06 * Petal.Width
- LD2: .529 * Sépalo.Longitud + .713 * Sépalo.Ancho – 2.731 * Pétalo.Longitud + 2.63 * Pétalo.Ancho
Proporción de traza: Muestra el porcentaje de separación logrado por cada función discriminante lineal.
Paso 6: use el modelo para hacer predicciones
Una vez que hemos ajustado el modelo usando nuestros datos de entrenamiento, podemos usarlo para hacer predicciones sobre nuestros datos de prueba:
#utilizar el modelo LDA para hacer predicciones sobre los datos de prueba predichos <- predecir (modelo, prueba) nombres (predichos) [1] "clase" "posterior" "x"
Esto devuelve una lista con tres variables:
- clase: la clase predicha
- posterior: La probabilidad posterior de que una observación pertenezca a cada clase.
- x: Los discriminantes lineales
Podemos ver rápidamente cada uno de estos resultados para las primeras seis observaciones en nuestro conjunto de datos de prueba:
#ver la clase predicha para las primeras seis observaciones en la cabeza del conjunto de prueba ($ class predicha) [1] setosa setosa setosa setosa setosa setosa Niveles: setosa versicolor virginica #ver probabilidades posteriores para las primeras seis observaciones en el conjunto de prueba cabeza (predicho $ posterior) setosa versicolor virginica 4 1 2.425563e-17 1.341984e-35 6 1 1.400976e-21 4.482684e-40 7 1 3.345770e-19 1.511748e-37 15 1 6.389105e-31 7.361660e-53 17 1 1.193282e-25 2.238696e-45 18 1 6.445594e-22 4.894053e-41 #ver discriminantes lineales para las primeras seis observaciones en la cabeza del conjunto de prueba (predicho $ x) LD1 LD2 4 7.150360 -0.7177382 6 7,961538 1,4839408 7 7.504033 0.2731178 15 10.170378 1.9859027 17 8.885168 2.1026494 18 8.113443 0.7563902
Podemos usar el siguiente código para ver para qué porcentaje de observaciones el modelo LDA predijo correctamente la especie:
# encontrar la precisión de la media del modelo (predicha $ class == test $ Species) [1] 1
Resulta que el modelo predijo correctamente las especies para el 100% de las observaciones en nuestro conjunto de datos de prueba.
En el mundo real, un modelo LDA rara vez predecirá correctamente el resultado de cada clase, pero este conjunto de datos de iris simplemente está construido de una manera que los algoritmos de aprendizaje automático tienden a funcionar muy bien en él.
Paso 7: Visualice los resultados
Por último, podemos crear una gráfica LDA para ver los discriminantes lineales del modelo y visualizar qué tan bien separó las tres especies diferentes en nuestro conjunto de datos:
# definir datos para trazar lda_plot <- cbind (entrenar, predecir (modelo) $ x) #create plot ggplot (lda_plot, aes (LD1, LD2)) + geom_point ( aes (color = Species))
Puede encontrar el código R completo utilizado en este tutorial aquí .
- https://r-project.org
- https://www.python.org/
- https://www.stata.com/
¿Te hemos ayudado?
Ayudanos ahora tú, dejanos un comentario de agradecimiento, nos ayuda a motivarnos y si te es viable puedes hacer una donación:La ayuda no cuesta nada
Por otro lado te rogamos que compartas nuestro sitio con tus amigos, compañeros de clase y colegas, la educación de calidad y gratuita debe ser difundida, recuerdalo: