Análisis Discriminante Lineal (LDA)

2.2.4

Análisis Discriminante Lineal (LDA)

Actualizado 2020-06-01 Lectura 4 min
Resumen
  • LDA es reduccion supervisada: maximiza separacion entre clases y minimiza dispersion intra-clase.
  • Al usar etiquetas, suele mejorar pipelines de clasificacion.
  • Su rendimiento depende de distribuciones de clase y supuestos de covarianza.

Intuicion #

A diferencia de PCA, LDA no busca solo varianza; busca ejes donde las clases queden compactas y separadas.

Explicacion Detallada #

1. PCA vs LDA #

  • PCA: no usa etiquetas; sólo captura la mayor varianza global.
  • LDA: supervisada; maximiza el cociente entre varianza inter-clase e intra-clase.

2. Formulación #

Para clases (C_1, \dots, C_k):

  • Disp. intra-clase: (S_W = \sum_{j=1}^k \sum_{x_i \in C_j} (x_i - \mu_j)(x_i - \mu_j)^\top)
  • Disp. inter-clase: (S_B = \sum_{j=1}^k n_j (\mu_j - \mu)(\mu_j - \mu)^\top)
  • Optimización: (J(w) = \frac{w^\top S_B w}{w^\top S_W w}); los autovectores de (S_W^{-1} S_B) definen las direcciones discriminantes.

3. Dataset #

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
import numpy as np
import matplotlib.pyplot as plt
import japanize_matplotlib
from sklearn.datasets import make_blobs

X, y = make_blobs(
    n_samples=600,
    n_features=3,
    random_state=11711,
    cluster_std=4,
    centers=3,
)

fig = plt.figure(figsize=(8, 8))
ax = fig.add_subplot(projection="3d")
ax.scatter(X[:, 0], X[:, 1], X[:, 2], c=y)
ax.set_xlabel("$x_1$")
ax.set_ylabel("$x_2$")
ax.set_zlabel("$x_3$")

Blobs 3D


4. Aplicar LDA #

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis as LDA

lda = LDA(n_components=2).fit(X, y)
X_lda = lda.transform(X)

plt.figure(figsize=(8, 8))
plt.scatter(X_lda[:, 0], X_lda[:, 1], c=y, alpha=0.5)
plt.xlabel("LD1")
plt.ylabel("LD2")
plt.title("Embedding 2D con LDA")
plt.show()

Proyección LDA


5. Comparar con PCA #

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
from sklearn.decomposition import PCA

pca = PCA(n_components=2)
X_pca = pca.fit_transform(X)

plt.figure(figsize=(8, 8))
plt.scatter(X_pca[:, 0], X_pca[:, 1], c=y, alpha=0.5)
plt.xlabel("PC1")
plt.ylabel("PC2")
plt.title("Embedding 2D con PCA")
plt.show()

Proyección PCA


6. Consejos #

  • El número máximo de componentes útiles es n_clases - 1.
  • Estandariza las variables antes de entrenar.
  • LDA asume covarianzas similares entre clases; si no se cumple, evalúa QDA o versiones regularizadas.

Preguntas frecuentes #

¿Qué es el Análisis Discriminante Lineal (LDA)? #

El Análisis Discriminante Lineal (LDA) es una técnica supervisada de reducción de dimensionalidad y clasificación. Encuentra combinaciones lineales de variables que maximizan la separación entre clases (varianza inter-clase) minimizando a la vez la dispersión dentro de cada clase (varianza intra-clase). A diferencia de PCA, LDA utiliza las etiquetas de clase, lo que lo hace ideal como paso previo a la clasificación.

¿Cuál es la fórmula del LDA? #

LDA optimiza el criterio de Fisher:

$$ J(w) = \frac{w^\top S_B w}{w^\top S_W w} $$

donde \(S_W\) es la matriz de dispersión intra-clase y \(S_B\) la inter-clase. Las direcciones óptimas \(w\) son los autovectores de \(S_W^{-1} S_B\). El número máximo de componentes discriminantes es \(k - 1\), donde \(k\) es el número de clases.

¿Cuál es la diferencia entre LDA y PCA? #

PCALDA
SupervisiónNo supervisadoSupervisado (usa etiquetas)
ObjetivoMaximizar varianza totalMaximizar separación entre clases
Máx. componentesmin(n_variables, n_muestras−1)k−1 (k = número de clases)
Ideal paraCompresión, eliminación de ruidoPreprocesamiento para clasificación

Usa PCA cuando no tienes etiquetas o quieres compresión general. Usa LDA cuando quieras proyecciones que ayuden a un clasificador a separar las clases.

¿Cuáles son los casos de uso del LDA? #

LDA se aplica en:

  • Reconocimiento facial: Eigenfaces supervisadas con separación por identidad.
  • Diagnóstico médico: separar grupos de pacientes a partir de variables clínicas.
  • Análisis de texto: proyectar representaciones de documentos para clasificación por categoría.
  • Finanzas: distinguir empresas sanas de las que tienen riesgo de quiebra.
  • Análisis de marketing: segmentar clientes según comportamiento de compra.

¿Cuándo falla o funciona mal el LDA? #

LDA asume que cada clase tiene una matriz de covarianza similar. Puede fallar cuando:

  • Las covarianzas entre clases difieren significativamente (usa Análisis Discriminante Cuadrático, QDA).
  • El número de variables supera al de muestras (la matriz intra-clase se vuelve singular; aplica PCA primero o usa LDA regularizado).
  • Las clases no son linealmente separables (considera kernel LDA o métodos no lineales).