¿Cómo implementar el análisis discriminante lineal en R?



Este artículo le dirá qué es el análisis discriminante lineal y también le dará una demostración detallada del lenguaje de programación R.

El análisis discriminante lineal es una técnica de aprendizaje automático muy popular que se utiliza para resolver problemas de clasificación. En este artículo intentaremos comprender la intuición y las matemáticas detrás de esta técnica. Un ejemplo de implementación de LDA en R también se proporciona.

Así que comencemos entonces





Supuesto de análisis discriminante lineal

El análisis discriminante lineal se basa en los siguientes supuestos:

  • La variable dependiente Y es discreto. En este artículo asumiremos que la variable dependiente es binaria y toma valores de clase {+1, -1} . La probabilidad de que una muestra pertenezca a una clase. +1 , es decir P(Y = +1) = p . Por tanto, la probabilidad de que una muestra pertenezca a la clase -1 es 1-p .



  • La (s) variable (s) independiente (s) X provienen de distribuciones gaussianas. La media de la distribución gaussiana depende de la etiqueta de clase Y . es decir, si Y yo = +1 , entonces la media de X yo es 𝜇 +1 , de lo contrario es 𝜇 -1 . La varianza 𝜎 2 es el mismo para ambas clases. Matemáticamente hablando, X|(Y = +1) ~ N(𝜇 +1 , 𝜎 2 ) y X|(Y = -1) ~ N(𝜇 -1 , 𝜎 2 ) , dónde norte denota la distribución normal.

Con esta información es posible construir una distribución conjunta P(X,Y) para la variable independiente y dependiente. Por tanto, LDA pertenece a la clase de Modelos de clasificadores generativos . Un clasificador generativo estrechamente relacionado es el análisis discriminante cuadrático (QDA). Se basa en los mismos supuestos de LDA, excepto que las variaciones de clase son diferentes.

Continuemos con el artículo Análisis discriminante lineal y veamos

para que se usa la marioneta

Intuición

Considere las distribuciones gaussianas condicionales de clase para X dada la clase Y . La siguiente figura muestra las funciones de densidad de las distribuciones. En esta figura, si Y = +1 , entonces la media de X es 10 y si Y = -1 , la media es 2. La varianza es 2 en ambos casos.

intuición - Análisis de discriminación lineal - Edureka

Ahora suponga un nuevo valor de X se nos da. Vamos a denotarlo como x yo . La tarea es determinar la etiqueta de clase más probable para este x yo , es decir y yo . Por simplicidad, suponga que la probabilidad pags de la muestra perteneciente a la clase +1 es lo mismo que el de pertenecer a clase -1 , es decir p = 0,5 .

Intuitivamente, tiene sentido decir que si x yo está más cerca de 𝜇 +1 de lo que es para 𝜇 -1 , entonces es más probable que y yo = +1 . Más formalmente, y yo = +1 Si:

|x yo – 𝜇 +1 |<|x yo – 𝜇 -1 |

Normalizando ambos lados por la desviación estándar:

|x yo – 𝜇 +1 |/𝜎<|x yo – 𝜇 -1 |/𝜎

Cuadrando ambos lados:

(x yo – 𝜇 +1 ) 2 /𝜎 2 <(x yo – 𝜇 -1 ) 2 /𝜎 2

x yo 2 /𝜎 2 + 𝜇 +1 2 /𝜎 2 – 2 x yo 𝜇 +1 /𝜎 2 yo 2 /𝜎 2 + 𝜇 -1 2 /𝜎 2 – 2 x yo 𝜇 -1 /𝜎 2

2 x yo (𝜇 -1 – 𝜇 +1 )/𝜎 2 – (𝜇 -1 2 /𝜎 2 – 𝜇 +1 2 /𝜎 2 )<0

-2 x yo (𝜇 -1 – 𝜇 +1 )/𝜎 2 + (𝜇 -1 2 /𝜎 2 – 𝜇 +1 2 /𝜎 2 ) > 0

La expresión anterior tiene la forma bx yo + c > 0 dónde b = -2(𝜇 -1 – 𝜇 +1 )/𝜎 2 y c = (𝜇 -1 2 /𝜎 2 – 𝜇 +1 2 /𝜎 2 ) .

Es evidente que la forma de la ecuación es lineal , de ahí el nombre Análisis Discriminante Lineal.

Continuemos con el artículo Análisis discriminante lineal y veamos,

Descripción matemática de LDA

La derivación matemática de la expresión para LDA se basa en conceptos como Regla de Bayes y Clasificador Óptimo de Bayes . Se anima a los lectores interesados ​​a leer más sobre estos conceptos. Se puede encontrar una forma de derivar la expresión Aquí .

cómo usar el navegador sqlite

Proporcionaremos la expresión directamente para nuestro caso específico donde Y toma dos clases {+1, -1} . También ampliaremos la intuición mostrada en la sección anterior al caso general donde X puede ser multidimensional. Digamos que hay a variables independientes. En este caso, la clase significa 𝜇 -1 y 𝜇 +1 serían vectores de dimensiones k * 1 y la matriz de varianza-covarianza 𝜮 sería una matriz de dimensiones k * k .

La función de clasificador se da como

Y = h(X) = sign(b T X + c)

Dónde,

b = -2 𝜮 -1 (𝜇 -1 – 𝜇 +1 )

c = 𝜇 -1 T 𝜮 -1 𝜇 -1 – 𝜇 -1 T 𝜮 -1 𝜇 -1 {-2 ln (1-p) / p}

La función de signo vuelve +1 si la expresión b T x + c> 0 , de lo contrario vuelve -1 . El término logarítmico natural en c está presente para ajustar el hecho de que las probabilidades de clase no necesitan ser iguales para ambas clases, es decir pags podría ser cualquier valor entre (0, 1) y no solo 0,5.

Aprendizaje de los parámetros del modelo

Dado un conjunto de datos con norte puntos de datos (x 1 , y 1 ), (x 2 , y 2 ), … (x norte , y norte ) , necesitamos estimar p, & # 120583 -1 , 𝜇 +1 y 𝜮 . Una técnica de estimación estadística llamada Estimación de máxima verosimilitud se utiliza para estimar estos parámetros. Las expresiones para los parámetros anteriores se dan a continuación.

𝜇 +1 = (1 / N +1 ) * 𝚺 yo: yi = + 1 x yo

𝜇 -1 = (1 / N -1 ) * 𝚺 yo: yi = -1 x yo

p = N +1 /NORTE

& # 120622 = (1 / N) * 𝚺yo = 1: N (x yo – 𝜇 yo )(x yo – 𝜇 yo ) T

Dónde norte +1 = número de muestras donde y yo = +1 y norte -1 = número de muestras donde y yo = -1 .

Con las expresiones anteriores, el modelo LDA está completo. Se pueden estimar los parámetros del modelo usando las expresiones anteriores y usarlos en la función de clasificador para obtener la etiqueta de clase de cualquier nuevo valor de entrada de variable independiente X .

Continuemos con el artículo Análisis discriminante lineal y veamos

Ejemplo en R

El siguiente código genera un conjunto de datos ficticios con dos variables independientes X1 y X2 y una variable dependiente Y . Xa X1 y X2 , generaremos una muestra a partir de dos distribuciones gaussianas multivariadas con medias 𝜇 -1 = (2, 2) y 𝜇 +1 = (6, 6) . 40% de las muestras pertenecen a clase +1 y el 60% pertenece a clase -1 , por lo tanto p = 0,4 .

biblioteca (ggplot2) biblioteca (MASS) biblioteca (mvtnorm) #Variancia Matriz de covarianza para muestra gaussiana bivariada aleatoria var_covar = matrix (data = c (1.5, 0.3, 0.3, 1.5), nrow = 2) #Muestras gaussianas bivariadas aleatorias para clase + 1 Xplus1<- rmvnorm(400, mean = c(6, 6), sigma = var_covar) # Random bivariate gaussian samples for class -1 Xminus1 <- rmvnorm(600, mean = c(2, 2), sigma = var_covar) #Samples for the dependent variable Y_samples <- c(rep(1, 400), rep(-1, 600)) #Combining the independent and dependent variables into a dataframe dataset <- as.data.frame(cbind(rbind(Xplus1, Xminus1), Y_samples)) colnames(dataset) <- c('X1', 'X2', 'Y') dataset$Y <- as.character(dataset$Y) #Plot the above samples and color by class labels ggplot(data = dataset)+ geom_point(aes(X1, X2, color = Y)) 

En la figura anterior, los puntos azules representan muestras de la clase. +1 y los rojos representan la muestra de la clase -1 . Existe cierta superposición entre las muestras, es decir, las clases no se pueden separar completamente con una simple línea. En otras palabras, no son perfectamente linealmente separable .

Ahora entrenaremos un modelo LDA utilizando los datos anteriores.

#Entrene el modelo LDA usando el conjunto de datos anterior lda_model<- lda(Y ~ X1 + X2, data = dataset) #Print the LDA model lda_model 

Salida:

Probabilidades previas de grupos:

-1 1

0.6 0.4

Grupo significa:

X1 X2

-1 1.928108 2.010226

1 5.961004 6.015438

desarrollador certificado cloudera para apache hadoop

Coeficientes de discriminantes lineales:

LD1

X1 0.5646116

X2 0.5004175

Como se puede ver, las medias de clase aprendidas por el modelo son (1.928108, 2.010226) para clase -1 y (5.961004, 6.015438) para la clase +1 . Estas medias están muy cerca de las medias de clase que usamos para generar estas muestras aleatorias. La probabilidad previa para el grupo +1 es la estimación del parámetro pags . los b vector son los coeficientes discriminantes lineales.

Ahora usaremos el modelo anterior para predecir las etiquetas de clase para los mismos datos.

# Predicción de la clase para cada muestra en el conjunto de datos anterior utilizando el modelo LDA y_pred<- predict(lda_model, newdata = dataset)$class #Adding the predictions as another column in the dataframe dataset$Y_lda_prediction <- as.character(y_pred) #Plot the above samples and color by actual and predicted class labels dataset$Y_actual_pred <- paste(dataset$Y, dataset$Y_lda_prediction, sep=',') ggplot(data = dataset)+ geom_point(aes(X1, X2, color = Y_actual_pred))

En la figura anterior, las muestras moradas son de la clase. +1 que fueron clasificados correctamente por el modelo LDA. Del mismo modo, las muestras rojas son de clase. -1 que fueron clasificados correctamente. Los azules son de clase +1 pero fueron clasificados incorrectamente como -1 . Los verdes son de clase -1 que fueron clasificados erróneamente como +1 . Las clasificaciones erróneas ocurren porque estas muestras están más cerca de la media de la otra clase (centro) que la media de la clase real.

Esto nos lleva al final de este artículo, consulte el por Edureka, una empresa de aprendizaje en línea de confianza con una red de más de 250.000 alumnos satisfechos repartidos por todo el mundo. La capacitación de Edureka en análisis de datos con R lo ayudará a adquirir experiencia en programación R, manipulación de datos, análisis exploratorio de datos, visualización de datos, minería de datos, regresión, análisis de sentimientos y uso de R Studio para estudios de casos de la vida real en minoristas y redes sociales.

Tienes una pregunta para nosotros? Menciónelo en la sección de comentarios de este artículo y nos comunicaremos con usted lo antes posible.