#1.- INTRODUCCIÓN
El Análisis Discriminante Lineal o Linear Discrimiant Analysis (LDA) es un método de clasificación supervisado de variables cualitativas en el que dos o más grupos son conocidos a priori y nuevas observaciones se clasifican en uno de ellos en función de sus características. Haciendo uso del teorema de Bayes, LDA estima la probabilidad de que una observación, dado un determinado valor de los predictores, pertenezca a cada una de las clases de la variable cualitativa, P(Y=k|X=x). Finalmente se asigna la observación a la clase k para la que la probabilidad predicha es mayor. Es una alternativa a la regresión logística cuando la variable cualitativa tiene más de dos niveles. Si bien existen extensiones de la regresión logística para múltiples clases, el LDA presenta una serie de ventajas:
Si las clases están bien separadas, los parámetros estimados en el modelo de regresión logística son inestables. El método de LDA no sufre este problema. Si el número de observaciones es bajo y la distribución de los predictores es aproximadamente normal en cada una de las clases, LDA es más estable que la regresión logística. Cuando se trata de un problema de clasificación con solo dos niveles, ambos métodos suelen llegar a resultados similares.
El proceso de un análisis discriminante puede resumirse en 6 pasos:
Disponer de un conjunto de datos de entrenamiento (training data) en el que se conoce a que grupo pertenece cada observación. Calcular las probabilidades previas (prior probabilities): la proporción esperada de observaciones que pertenecen a cada grupo. Determinar si la varianza o matriz de covarianzas es homogénea en todos los grupos. De esto dependerá que se emplee LDA o QDA. Estimar los parámetros necesarios para las funciones de probabilidad condicional, verificando que se cumplen las condiciones para hacerlo. Calcular el resultado de la función discriminante. El resultado de esta determina a qué grupo se asigna cada observación. Utilizar validación cruzada (cross-validation) para estimar las probabilidades de clasificaciones erróneas.
#2.- EJEMPLO
library(ggplot2)
ggplot(data.frame(x = c(-6, 10)), aes(x)) +
stat_function(fun = dnorm, args = list(mean = -1.25, sd = 1.5),
color = "red") +
stat_function(fun = dnorm, args = list(mean = 1.25, sd = 1.5), color = "blue") +
geom_vline(xintercept = 0, linetype = "longdash") +
theme_bw()
set.seed(6911)
library(ggplot2)
grupo_a <- rnorm(n = 300, mean = -1.25, sd = 1.5)
grupo_b <- rnorm(n = 300, mean = 1.25, sd = 1.5)
datos <- data.frame(valor =c(grupo_a, grupo_b),
grupo = rep(c("A", "B"), each = 300))
ggplot(data = datos, aes(x = valor, fill = grupo)) +
geom_histogram(alpha = 0.5, position = "identity") +
geom_vline(xintercept = 0, linetype = "longdash") +
geom_vline(xintercept = (mean(grupo_a) + mean(grupo_b))/2) +
annotate(geom = "text", x = 1.5, y = 9, label = "Límite decisión LDA") +
annotate(geom = "text", x = -1.5, y = 10, label = "Límite decisión Bayes") +
theme_bw() + theme(legend.position = "top")
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
mu1 <- 0 # set mean x1
mu2 <- 0 # set mean x2
s11 <- 10 # set variance x1
s22 <- 10 # set variance x2
s12 <- 15 # set covariance x1 and x2
rho <- 0.5 # set correlation coefficient x1 and x2
x1 <- seq(-10,10,length = 41) # generate vector x1
x2 <- x1 # copy x1 to x2
f <- function(x1,x2) # multivariate function
{
term1 <- 1/(2 * pi * sqrt(s11*s22*(1 - rho^2)))
term2 <- -1/(2 * (1 - rho^2))
term3 <- (x1 - mu1)^2/s11
term4 <- (x2 - mu2)^2/s22
term5 <- -2*rho*((x1 - mu1)*(x2 - mu2))/(sqrt(s11)*sqrt(s22))
term1*exp(term2*(term3 + term4 - term5))
}
z <- outer(x1,x2,f) # calculate density values
persp(x1, x2, z, # 3-D plot
main = "Distribución multivariante con dos predictores",
col = "lightgreen",
theta = 30, phi = 20,
r = 50,
d = 0.1,
expand = 0.5,
ltheta = 90, lphi = 180,
shade = 0.75,
ticktype = "simple",
nticks = 5)
# Otra forma de representar una distribución bivariante
library(mvtnorm)
library(scatterplot3d)
sigma.zero <- matrix(c(1,0,0,1), ncol = 2)
x1000 <- rmvnorm(n = 1000, mean = c(0,0), sigma = sigma.zero)
scatterplot3d(x1000[,1], x1000[,2],
dmvnorm(x1000, mean = c(0,0), sigma = sigma.zero),
highlight = TRUE, xlab = "x", ylab = "y", zlab = "z")
Esto es importante para un análisis discriminante lineal para que se
pueda aplicar correctamente.
Condiciones de LDA
Las condiciones que se deben cumplir para que un Análisis Discriminante Lineal sea válido son:
Cada predictor que forma parte del modelo se distribuye de forma normal en cada una de las clases de la variable respuesta. En el caso de múltiples predictores, las observaciones siguen una distribución normal multivariante en todas las clases.
La varianza del predictor es igual en todas las clases de la variable respuesta. En el caso de múltiples predictores, la matriz de covarianza es igual en todas las clases. Si esto no se cumple se recurre a Análisis Discriminante Cuadrático (QDA).
Cuando la condición de normalidad no se cumple, el LDA pierde precisión pero aun así puede llegar a clasificaciones relativamente buenas. Using discriminant analysis for multi-class classification: an experimental investigation (Tao Li, Shenghuo Zhu, Mitsunori Ogihara).
Dos aproximaciones a LDA: Bayes y Fisher
Existen varios enfoques posibles para realizar un LDA. La aproximación descrita anteriormente está basada en el clasificador de Bayes, y utiliza todas las variables originales para calcular las probabilidades posteriores de que una observación pertenezca a cada grupo. La aproximación de Fisher se puede ver como un proceso con dos partes:
Reducción de dimensionalidad: Se pasa de p variables predictoras originales a k combinaciones lineales de dichos predictores (variables discriminantes) que permiten explicar la separación de los grupos pero con menos dimensiones (k < p).
Clasificación de las observaciones empleando las variables discriminantes.
Los resultados de clasificación obtenidos mediante el método de Fisher son iguales a los obtenidos por el método de Bayes cuando:
En el método de Bayes se asume que la matriz de covarianzas en igual en todos los grupos y se emplea como estimación la pooled within-class covariance matrix.
En el método de Fisher, todos los discriminantes lineales se utilizan para la clasificación. El número máximo de discriminantes obtenido tras la reducción de dimensionalidad es número grupos-1.
Precisión del LDA
Una vez que las normas de clasificación se han establecido, se tiene que evaluar como de buena es la clasificación resultante. En otras palabras, evaluar el porcentaje de aciertos en las clasificaciones.
Las matrices de confusión son una de las mejores formas de evaluar la capacidad de acierto que tiene un modelo LDA. Muestran el número de verdaderos positivos, verdaderos negativos, falsos positivos y falsos negativos. El método LDA busca los límites de decisión que más se aproximan al clasificador de Bayes, que por definición, tiene el menor ratio de error total de entre todos los clasificadores (si se cumple la condición de normalidad). Por lo tanto, el LDA intenta conseguir el menor número de clasificaciones erróneas posibles, pero no diferencia entre falsos positivos o falsos negativos. Si se quiere intentar reducir el número de errores de clasificación en una dirección determinada (por ejemplo, menos falsos negativos) se puede modificar el límite de decisión, aunque como consecuencia aumentará el número de falsos positivos.
Cuando para evaluar el error de clasificación se emplean las mismas observaciones con las que se ha creado el modelo, se obtiene lo que se denomina el training error. Si bien esta es una forma sencilla de estimar la precisión en la clasificación, tiende a ser excesivamente optimista. Es más adecuado evaluar el modelo empleando observaciones nuevas que el modelo no ha visto, obteniendo así el test error. En el capítulo Validación de modelos de regresión se describen diferentes estrategias para estimar el test error.