Vai al contenuto

Analisi Discriminante Lineare (LDA)

La Storia Dietro la Matematica

La storia dell'Analisi Discriminante Lineare inizia nel 1936, nell'improbabile contesto della ricerca agricola. Ronald Aylmer Fisher (1890-1962), lo statistico e genetista britannico che abbiamo già incontrato, lavorava alla Rothamsted Experimental Station vicino a Londra.

Fisher affrontava un problema tassonomico pratico: date le misurazioni di fiori di iris (lunghezza sepalo, larghezza sepalo, lunghezza petalo, larghezza petalo), poteva sviluppare un metodo matematico per classificarli in specie diverse (setosa, versicolor, virginica)?

Non era solo curiosità botanica. La domanda più ampia era fondamentale per tutte le scienze: Come possiamo usare misurazioni multiple per distinguere sistematicamente tra gruppi?

Nel suo articolo del 1936 "The Use of Multiple Measurements in Taxonomic Problems," Fisher introdusse quella che sarebbe diventata una delle tecniche più influenti in statistica e machine learning: l'Analisi Discriminante Lineare.

Intuizioni chiave di Fisher:

  1. Riduzione dimensionale: Invece di lavorare con tutte le misurazioni separatamente, trova una singola combinazione lineare che separa meglio i gruppi
  2. Massimizzare la separazione: Scegli la combinazione che rende i gruppi il più distanti possibile relativamente alla loro variazione interna
  3. Proiezione ottimale: Proietta dati ad alta dimensione su uno spazio a dimensione inferiore preservando la separazione tra classi

Fisher dimostrò che questa direzione ottimale poteva essere trovata risolvendo un problema agli autovalori — una connessione notevole tra statistica e algebra lineare.

Contesto storico: Fisher sviluppò l'LDA in parallelo al suo lavoro sulle Statistiche Basate su Likelihood e l'ANOVA. Era profondamente interessato a trovare procedure ottimali — metodi che estraessero la massima informazione dai dati. L'LDA era ottimale in un senso preciso: massimizzava il rapporto tra varianza tra classi e varianza entro le classi.

Oltre la botanica: Sebbene l'applicazione originale di Fisher fosse classificare fiori di iris, l'LDA si diffuse rapidamente in altri campi: - 1940-50: Riconoscimento facciale e riconoscimento caratteri (computer vision primitiva) - 1960-70: Diagnosi medica, discriminazione tra stati di malattia - 1980-90: Finanza (credit scoring), marketing (segmentazione clienti) - 2000-presente: Machine learning, genomica, neuroimaging

Significato moderno: Sebbene sviluppata quasi 90 anni fa, l'LDA rimane ampiamente utilizzata oggi. È apprezzata per la sua eleganza matematica, efficienza computazionale e forti prestazioni quando le sue assunzioni valgono. È anche un concetto fondamentale: comprendere l'LDA è essenziale per cogliere metodi più avanzati come l'Analisi Discriminante Quadratica (QDA), l'Analisi Discriminante Regolarizzata (RDA), e persino moderne architetture di deep learning.

Perché È Importante

L'Analisi Discriminante Lineare è una tecnica fondamentale per classificazione supervisionata e riduzione dimensionale. È utilizzata in:

  • Medicina: Diagnosi di malattie da biomarcatori, stratificazione del rischio pazienti
  • Biologia: Classificazione di specie, analisi dati genomici
  • Computer Vision: Riconoscimento facciale, rilevamento oggetti (specialmente metodi primitivi)
  • Finanza: Credit scoring, predizione fallimenti, rilevamento frodi
  • Marketing: Segmentazione clienti, predizione abbandono
  • Riconoscimento Vocale: Classificazione fonemi
  • Chemiometria: Identificazione composti chimici da spettroscopia
  • Neuroimaging: Classificazione stati cerebrali da dati fMRI/EEG
  • Controllo Qualità: Classificazione difetti prodotti
  • Biometria: Riconoscimento impronte digitali e iris

L'LDA fornisce sia un classificatore (assegna nuove osservazioni a classi) sia un estrattore di caratteristiche (trova rappresentazioni a bassa dimensione informative), rendendola versatile e interpretabile.

Prerequisiti

Concetti Fondamentali

Costruiremo l'LDA dai primi principi, partendo dal caso più semplice e generalizzando.

Il Problema di Classificazione

Abbiamo: - Dati di training: \(n\) osservazioni \(\{(\mathbf{x}_1, y_1), (\mathbf{x}_2, y_2), \ldots, (\mathbf{x}_n, y_n)\}\) - \(\mathbf{x}_i \in \mathbb{R}^p\): vettore di caratteristiche (es., \(p\) misurazioni) - \(y_i \in \{1, 2, \ldots, K\}\): etichetta di classe (\(K\) classi)

Obiettivo: Data una nuova osservazione \(\mathbf{x}_{\text{new}}\), predire la sua classe \(y_{\text{new}}\).

Approccio LDA: Assumere che ogni classe abbia una distribuzione Gaussiana multivariata con: - Medie diverse \(\boldsymbol{\mu}_k\) per ogni classe \(k\) - Matrice di covarianza condivisa \(\boldsymbol{\Sigma}\) (uguale per tutte le classi)

Questa assunzione è ciò che rende il discriminante lineare (vedremo perché).

LDA a Due Classi: Il Caso Più Semplice

Iniziamo con \(K = 2\) classi per costruire l'intuizione.

Notazione: - Classe 1: \(n_1\) osservazioni con media \(\boldsymbol{\mu}_1\) - Classe 2: \(n_2\) osservazioni con media \(\boldsymbol{\mu}_2\) - Covarianza comune: \(\boldsymbol{\Sigma}\)

Domanda: Vogliamo proiettare i dati \(p\)-dimensionali su una linea 1-dimensionale (direzione \(\mathbf{w}\)). Quale direzione \(\mathbf{w}\) separa meglio le due classi?

Proiezione: La proiezione di \(\mathbf{x}\) su \(\mathbf{w}\) è lo scalare

\[ z = \mathbf{w}^T \mathbf{x} \]

Dopo la proiezione: - Media classe 1: \(m_1 = \mathbf{w}^T \boldsymbol{\mu}_1\) - Media classe 2: \(m_2 = \mathbf{w}^T \boldsymbol{\mu}_2\) - Varianza proiettata: \(s^2 = \mathbf{w}^T \boldsymbol{\Sigma} \mathbf{w}\)

Idea di Fisher: Vogliamo che le medie proiettate siano distanti e le varianze proiettate siano piccole.

Formalmente: Massimizzare il rapporto

\[ J(\mathbf{w}) = \frac{(\text{distanza tra medie proiettate})^2}{\text{somma delle varianze proiettate}} \]

Discriminante Lineare di Fisher: Derivazione

Dispersione tra classi (separazione delle medie):

\[ \text{Tra} = (m_1 - m_2)^2 = (\mathbf{w}^T \boldsymbol{\mu}_1 - \mathbf{w}^T \boldsymbol{\mu}_2)^2 = (\mathbf{w}^T (\boldsymbol{\mu}_1 - \boldsymbol{\mu}_2))^2 \]

Usando \(a^2 = a^T a\) per scalari:

\[ \text{Tra} = \mathbf{w}^T (\boldsymbol{\mu}_1 - \boldsymbol{\mu}_2)(\boldsymbol{\mu}_1 - \boldsymbol{\mu}_2)^T \mathbf{w} \]

Definisci matrice di dispersione tra classi:

\[ \mathbf{S}_B = (\boldsymbol{\mu}_1 - \boldsymbol{\mu}_2)(\boldsymbol{\mu}_1 - \boldsymbol{\mu}_2)^T \]

Quindi: \(\text{Tra} = \mathbf{w}^T \mathbf{S}_B \mathbf{w}\)

Dispersione entro classi (variazione entro ogni classe):

Assumendo covarianza uguale \(\boldsymbol{\Sigma}\) per entrambe le classi:

\[ \text{Entro} = \mathbf{w}^T \boldsymbol{\Sigma} \mathbf{w} + \mathbf{w}^T \boldsymbol{\Sigma} \mathbf{w} = 2 \mathbf{w}^T \boldsymbol{\Sigma} \mathbf{w} \]

Definisci matrice di dispersione entro classi (covarianza pooled):

\[ \mathbf{S}_W = \boldsymbol{\Sigma} \]

(In pratica, stimiamo \(\mathbf{S}_W\) dai dati; lo deriviamo dopo.)

Criterio di Fisher:

\[ J(\mathbf{w}) = \frac{\mathbf{w}^T \mathbf{S}_B \mathbf{w}}{\mathbf{w}^T \mathbf{S}_W \mathbf{w}} \]

Ottimizzazione: Trova \(\mathbf{w}\) che massimizza \(J(\mathbf{w})\).

Osservazione chiave: Poiché \(J(\mathbf{w}) = J(c\mathbf{w})\) per qualsiasi costante \(c > 0\), possiamo imporre il vincolo \(\mathbf{w}^T \mathbf{S}_W \mathbf{w} = 1\).

Allora: Massimizza \(\mathbf{w}^T \mathbf{S}_B \mathbf{w}\) soggetto a \(\mathbf{w}^T \mathbf{S}_W \mathbf{w} = 1\).

Lagrangiano:

\[ \mathcal{L}(\mathbf{w}, \lambda) = \mathbf{w}^T \mathbf{S}_B \mathbf{w} - \lambda(\mathbf{w}^T \mathbf{S}_W \mathbf{w} - 1) \]

Condizione del primo ordine: Differenzia rispetto a \(\mathbf{w}\) e poni a zero.

Ricorda: - \(\frac{\partial}{\partial \mathbf{w}} (\mathbf{w}^T \mathbf{A} \mathbf{w}) = 2 \mathbf{A} \mathbf{w}\) per \(\mathbf{A}\) simmetrica

\[ \frac{\partial \mathcal{L}}{\partial \mathbf{w}} = 2 \mathbf{S}_B \mathbf{w} - 2\lambda \mathbf{S}_W \mathbf{w} = 0 \]
\[ \mathbf{S}_B \mathbf{w} = \lambda \mathbf{S}_W \mathbf{w} \]

Moltiplica entrambi i lati per \(\mathbf{S}_W^{-1}\) (assumendo \(\mathbf{S}_W\) invertibile):

\[ \mathbf{S}_W^{-1} \mathbf{S}_B \mathbf{w} = \lambda \mathbf{w} \]

Questo è un problema agli autovalori! \(\mathbf{w}\) è un autovettore di \(\mathbf{S}_W^{-1} \mathbf{S}_B\) con autovalore \(\lambda\).

Semplificazione per due classi:

Ricorda \(\mathbf{S}_B = (\boldsymbol{\mu}_1 - \boldsymbol{\mu}_2)(\boldsymbol{\mu}_1 - \boldsymbol{\mu}_2)^T\).

Questa è una matrice di rango 1 (prodotto esterno di due vettori), quindi:

\[ \mathbf{S}_B \mathbf{w} = (\boldsymbol{\mu}_1 - \boldsymbol{\mu}_2)(\boldsymbol{\mu}_1 - \boldsymbol{\mu}_2)^T \mathbf{w} = (\boldsymbol{\mu}_1 - \boldsymbol{\mu}_2) \underbrace{[(\boldsymbol{\mu}_1 - \boldsymbol{\mu}_2)^T \mathbf{w}]}_{\text{scalare}} \]

Sia \(c = (\boldsymbol{\mu}_1 - \boldsymbol{\mu}_2)^T \mathbf{w}\) (uno scalare). Allora:

\[ \mathbf{S}_B \mathbf{w} = c (\boldsymbol{\mu}_1 - \boldsymbol{\mu}_2) \]

Sostituendo nell'equazione agli autovalori:

\[ c (\boldsymbol{\mu}_1 - \boldsymbol{\mu}_2) = \lambda \mathbf{S}_W \mathbf{w} \]
\[ \mathbf{w} = \frac{c}{\lambda} \mathbf{S}_W^{-1} (\boldsymbol{\mu}_1 - \boldsymbol{\mu}_2) \]

Poiché ci interessa solo la direzione, ignora la costante \(c/\lambda\):

\[ \mathbf{w} \propto \mathbf{S}_W^{-1} (\boldsymbol{\mu}_1 - \boldsymbol{\mu}_2) \]

Risultato: La direzione discriminante ottimale è

\[ \mathbf{w}^* = \mathbf{S}_W^{-1} (\boldsymbol{\mu}_1 - \boldsymbol{\mu}_2) \]

Interpretazione: - Se \(\mathbf{S}_W = \mathbf{I}\) (identità, significa caratteristiche non correlate con varianza unitaria), allora \(\mathbf{w} \propto (\boldsymbol{\mu}_1 - \boldsymbol{\mu}_2)\) — la direzione che connette le medie delle classi - In generale, \(\mathbf{S}_W^{-1}\) tiene conto della correlazione e delle diverse varianze, ruotando la direzione per massimizzare la separazione

Regola di Classificazione

Una volta che abbiamo la direzione discriminante \(\mathbf{w}\), come classifichiamo un nuovo punto \(\mathbf{x}\)?

Approccio: Proietta \(\mathbf{x}\) su \(\mathbf{w}\) e confronta con una soglia.

Proiezione: \(z = \mathbf{w}^T \mathbf{x}\)

Regola decisionale: Assegna \(\mathbf{x}\) alla classe 1 se

\[ z > \tau \]

dove \(\tau\) è una soglia.

Scelta della soglia: Una scelta naturale è il punto medio tra le medie delle classi proiettate:

\[ \tau = \frac{\mathbf{w}^T \boldsymbol{\mu}_1 + \mathbf{w}^T \boldsymbol{\mu}_2}{2} = \frac{\mathbf{w}^T (\boldsymbol{\mu}_1 + \boldsymbol{\mu}_2)}{2} \]

Regola di classificazione completa:

\[ \text{Classifica } \mathbf{x} \text{ come classe 1 se } \mathbf{w}^T \mathbf{x} > \mathbf{w}^T \frac{(\boldsymbol{\mu}_1 + \boldsymbol{\mu}_2)}{2} \]

Equivalentemente:

\[ \mathbf{w}^T \mathbf{x} - \mathbf{w}^T \frac{(\boldsymbol{\mu}_1 + \boldsymbol{\mu}_2)}{2} > 0 \]

Questo è un confine decisionale lineare: Il confine è un iperpiano definito da \(\mathbf{w}^T \mathbf{x} = \text{const}\).

Connessione con la Regola di Bayes

L'LDA può anche essere derivata dalla regola di Bayes — questo dà ulteriore intuizione e mostra che è ottimale sotto assunzioni Gaussiane.

Regola di Bayes:

\[ P(Y = k | \mathbf{X} = \mathbf{x}) = \frac{P(\mathbf{X} = \mathbf{x} | Y = k) P(Y = k)}{P(\mathbf{X} = \mathbf{x})} \]

Probabilità posteriore della classe \(k\):

\[ P(Y = k | \mathbf{X} = \mathbf{x}) \propto P(\mathbf{X} = \mathbf{x} | Y = k) \cdot P(Y = k) \]

Assumi: - \(\mathbf{X} | Y = k \sim \mathcal{N}(\boldsymbol{\mu}_k, \boldsymbol{\Sigma})\) (densità condizionali Gaussiane) - \(P(Y = k) = \pi_k\) (probabilità a priori, stimate dalle frequenze di classe)

Densità condizionale (Gaussiana multivariata):

\[ f_k(\mathbf{x}) = \frac{1}{(2\pi)^{p/2} |\boldsymbol{\Sigma}|^{1/2}} \exp\left(-\frac{1}{2}(\mathbf{x} - \boldsymbol{\mu}_k)^T \boldsymbol{\Sigma}^{-1} (\mathbf{x} - \boldsymbol{\mu}_k)\right) \]

Log-posteriore (ignorando costanti indipendenti da \(k\)):

\[ \log P(Y = k | \mathbf{X} = \mathbf{x}) = \log f_k(\mathbf{x}) + \log \pi_k + \text{const} \]
\[ = -\frac{1}{2}(\mathbf{x} - \boldsymbol{\mu}_k)^T \boldsymbol{\Sigma}^{-1} (\mathbf{x} - \boldsymbol{\mu}_k) + \log \pi_k + \text{const} \]

Espandi il quadratico:

\[ (\mathbf{x} - \boldsymbol{\mu}_k)^T \boldsymbol{\Sigma}^{-1} (\mathbf{x} - \boldsymbol{\mu}_k) = \mathbf{x}^T \boldsymbol{\Sigma}^{-1} \mathbf{x} - 2 \boldsymbol{\mu}_k^T \boldsymbol{\Sigma}^{-1} \mathbf{x} + \boldsymbol{\mu}_k^T \boldsymbol{\Sigma}^{-1} \boldsymbol{\mu}_k \]

Il termine \(\mathbf{x}^T \boldsymbol{\Sigma}^{-1} \mathbf{x}\) è indipendente da \(k\), quindi eliminalo:

\[ \log P(Y = k | \mathbf{X} = \mathbf{x}) \propto \boldsymbol{\mu}_k^T \boldsymbol{\Sigma}^{-1} \mathbf{x} - \frac{1}{2} \boldsymbol{\mu}_k^T \boldsymbol{\Sigma}^{-1} \boldsymbol{\mu}_k + \log \pi_k \]

Definisci la funzione discriminante:

\[ \delta_k(\mathbf{x}) = \mathbf{x}^T \boldsymbol{\Sigma}^{-1} \boldsymbol{\mu}_k - \frac{1}{2} \boldsymbol{\mu}_k^T \boldsymbol{\Sigma}^{-1} \boldsymbol{\mu}_k + \log \pi_k \]

Regola di classificazione: Assegna \(\mathbf{x}\) alla classe con il punteggio discriminante più alto:

\[ \hat{y} = \arg\max_{k} \delta_k(\mathbf{x}) \]

Osservazione: \(\delta_k(\mathbf{x})\) è lineare in \(\mathbf{x}\) — da cui "discriminante lineare".

Per due classi \((k \in \{1, 2\})\): Classifica come classe 1 se \(\delta_1(\mathbf{x}) > \delta_2(\mathbf{x})\):

\[ \mathbf{x}^T \boldsymbol{\Sigma}^{-1} \boldsymbol{\mu}_1 - \frac{1}{2} \boldsymbol{\mu}_1^T \boldsymbol{\Sigma}^{-1} \boldsymbol{\mu}_1 + \log \pi_1 > \mathbf{x}^T \boldsymbol{\Sigma}^{-1} \boldsymbol{\mu}_2 - \frac{1}{2} \boldsymbol{\mu}_2^T \boldsymbol{\Sigma}^{-1} \boldsymbol{\mu}_2 + \log \pi_2 \]

Riorganizzando:

\[ \mathbf{x}^T \boldsymbol{\Sigma}^{-1} (\boldsymbol{\mu}_1 - \boldsymbol{\mu}_2) > \frac{1}{2}(\boldsymbol{\mu}_1^T \boldsymbol{\Sigma}^{-1} \boldsymbol{\mu}_1 - \boldsymbol{\mu}_2^T \boldsymbol{\Sigma}^{-1} \boldsymbol{\mu}_2) + \log(\pi_2/\pi_1) \]

Questo corrisponde all'approccio di Fisher con: - \(\mathbf{w} = \boldsymbol{\Sigma}^{-1} (\boldsymbol{\mu}_1 - \boldsymbol{\mu}_2)\) - Soglia aggiustata per le probabilità a priori

Stima dei Parametri dai Dati

In pratica, non conosciamo \(\boldsymbol{\mu}_k\) e \(\boldsymbol{\Sigma}\) — dobbiamo stimarli dai dati di training.

Notazione: La classe \(k\) ha \(n_k\) osservazioni \(\{\mathbf{x}_i : y_i = k\}\).

Stima delle Medie di Classe

Media campionaria per la classe \(k\):

\[ \hat{\boldsymbol{\mu}}_k = \frac{1}{n_k} \sum_{i: y_i = k} \mathbf{x}_i \]

Interpretazione: Semplice media di tutte le osservazioni nella classe \(k\).

Stima della Matrice di Covarianza Condivisa

Stimatore di covarianza pooled:

\[ \hat{\boldsymbol{\Sigma}} = \frac{1}{n - K} \sum_{k=1}^K \sum_{i: y_i = k} (\mathbf{x}_i - \hat{\boldsymbol{\mu}}_k)(\mathbf{x}_i - \hat{\boldsymbol{\mu}}_k)^T \]

Perché \(n - K\) al denominatore? Perdiamo \(K\) gradi di libertà stimando \(K\) medie di classe (correzione di Bessel).

Forma alternativa (matrice di dispersione entro classi):

\[ \mathbf{S}_W = \sum_{k=1}^K \sum_{i: y_i = k} (\mathbf{x}_i - \hat{\boldsymbol{\mu}}_k)(\mathbf{x}_i - \hat{\boldsymbol{\mu}}_k)^T \]

Allora: \(\hat{\boldsymbol{\Sigma}} = \mathbf{S}_W / (n - K)\)

Interpretazione: Aggregare le covarianze campionarie da tutte le classi, pesando per dimensione classe.

Stima delle Probabilità A Priori

A priori empirica:

\[ \hat{\pi}_k = \frac{n_k}{n} \]

Interpretazione: Proporzione di osservazioni di training nella classe \(k\).

Alternativa: Se abbiamo conoscenza del dominio, possiamo usare a priori diverse (es., a priori uguali \(\pi_k = 1/K\)).

LDA Multi-Classe: Caso Generale

Per \(K > 2\) classi, vogliamo trovare direzioni discriminanti multiple che separino tutte le classi.

Matrice di dispersione tra classi (generalizzazione):

\[ \mathbf{S}_B = \sum_{k=1}^K n_k (\hat{\boldsymbol{\mu}}_k - \hat{\boldsymbol{\mu}})(\hat{\boldsymbol{\mu}}_k - \hat{\boldsymbol{\mu}})^T \]

dove \(\hat{\boldsymbol{\mu}} = \frac{1}{n}\sum_{i=1}^n \mathbf{x}_i\) è la media complessiva.

Matrice di dispersione entro classi (come prima):

\[ \mathbf{S}_W = \sum_{k=1}^K \sum_{i: y_i = k} (\mathbf{x}_i - \hat{\boldsymbol{\mu}}_k)(\mathbf{x}_i - \hat{\boldsymbol{\mu}}_k)^T \]

Ottimizzazione: Trova matrice di proiezione \(\mathbf{W} \in \mathbb{R}^{p \times d}\) (le colonne sono direzioni discriminanti) che massimizza

\[ J(\mathbf{W}) = \frac{|\mathbf{W}^T \mathbf{S}_B \mathbf{W}|}{|\mathbf{W}^T \mathbf{S}_W \mathbf{W}|} \]

dove \(|\cdot|\) denota il determinante della matrice.

Soluzione: Le direzioni discriminanti sono gli autovettori corrispondenti ai maggiori autovalori di \(\mathbf{S}_W^{-1} \mathbf{S}_B\).

Numero di direzioni discriminanti: Possiamo estrarre al massimo \(\min(p, K-1)\) direzioni discriminanti, perché: - \(\mathbf{S}_B\) ha rango al massimo \(K - 1\) (è costruita da \(K\) medie di classe meno media complessiva) - Non possiamo estrarre più direzioni della dimensione delle caratteristiche \(p\)

Riduzione dimensionale: Proietta i dati su \(d < p\) dimensioni:

\[ \mathbf{z}_i = \mathbf{W}^T \mathbf{x}_i \]

dove \(\mathbf{W} \in \mathbb{R}^{p \times d}\) contiene i primi \(d\) autovettori.

Classificazione nello spazio ridotto: Usa funzioni discriminanti nello spazio ridotto, o semplicemente usa la media di classe più vicina.

Esempio Completo

Problema: Classificare fiori di iris in 3 specie usando 2 caratteristiche (semplificato).

Dati: - Classe 1 (Setosa): 50 campioni, \(\hat{\boldsymbol{\mu}}_1 = \begin{pmatrix} 5.0 \\ 3.4 \end{pmatrix}\) - Classe 2 (Versicolor): 50 campioni, \(\hat{\boldsymbol{\mu}}_2 = \begin{pmatrix} 6.0 \\ 2.8 \end{pmatrix}\) - Classe 3 (Virginica): 50 campioni, \(\hat{\boldsymbol{\mu}}_3 = \begin{pmatrix} 6.5 \\ 3.0 \end{pmatrix}\)

Covarianza pooled (stimata):

\[ \hat{\boldsymbol{\Sigma}} = \begin{pmatrix} 0.30 & 0.10 \\ 0.10 & 0.20 \end{pmatrix} \]

Passo 1: Calcola covarianza inversa.

\[ \hat{\boldsymbol{\Sigma}}^{-1} = \frac{1}{0.30 \times 0.20 - 0.10 \times 0.10} \begin{pmatrix} 0.20 & -0.10 \\ -0.10 & 0.30 \end{pmatrix} = \frac{1}{0.05} \begin{pmatrix} 0.20 & -0.10 \\ -0.10 & 0.30 \end{pmatrix} \]
\[ \hat{\boldsymbol{\Sigma}}^{-1} = \begin{pmatrix} 4 & -2 \\ -2 & 6 \end{pmatrix} \]

Passo 2: Calcola funzioni discriminanti per ogni classe (assumendo a priori uguali \(\pi_k = 1/3\), quindi \(\log \pi_k\) si elimina):

\[ \delta_k(\mathbf{x}) = \mathbf{x}^T \hat{\boldsymbol{\Sigma}}^{-1} \hat{\boldsymbol{\mu}}_k - \frac{1}{2} \hat{\boldsymbol{\mu}}_k^T \hat{\boldsymbol{\Sigma}}^{-1} \hat{\boldsymbol{\mu}}_k \]

Per classe 1:

\[ \hat{\boldsymbol{\Sigma}}^{-1} \hat{\boldsymbol{\mu}}_1 = \begin{pmatrix} 4 & -2 \\ -2 & 6 \end{pmatrix} \begin{pmatrix} 5.0 \\ 3.4 \end{pmatrix} = \begin{pmatrix} 20 - 6.8 \\ -10 + 20.4 \end{pmatrix} = \begin{pmatrix} 13.2 \\ 10.4 \end{pmatrix} \]
\[ \hat{\boldsymbol{\mu}}_1^T \hat{\boldsymbol{\Sigma}}^{-1} \hat{\boldsymbol{\mu}}_1 = 5.0 \times 13.2 + 3.4 \times 10.4 = 66 + 35.36 = 101.36 \]
\[ \delta_1(\mathbf{x}) = 13.2 x_1 + 10.4 x_2 - 50.68 \]

Similmente per classi 2 e 3 (calcoli omessi per brevità).

Passo 3: Classifica una nuova osservazione \(\mathbf{x}_{\text{new}} = \begin{pmatrix} 5.5 \\ 3.0 \end{pmatrix}\).

Calcola \(\delta_k(\mathbf{x}_{\text{new}})\) per \(k = 1, 2, 3\) e assegna alla classe con il valore più alto.

\[ \delta_1(\mathbf{x}_{\text{new}}) = 13.2 \times 5.5 + 10.4 \times 3.0 - 50.68 = 72.6 + 31.2 - 50.68 = 53.12 \]

(Calcola \(\delta_2\) e \(\delta_3\) similmente e confronta.)

LDA vs. Altri Metodi

LDA vs. Regressione Logistica

  • LDA: Modello generativo (modella \(P(\mathbf{X}|Y)\) e usa regola di Bayes)
  • Regressione Logistica: Modello discriminativo (modella direttamente \(P(Y|\mathbf{X})\))

Quando LDA è migliore: Se l'assunzione Gaussiana vale, LDA è più efficiente (usa tutti i dati per stimare la covarianza)

Quando Logistica è migliore: Più robusta a violazioni dell'assunzione Gaussiana

LDA vs. QDA (Analisi Discriminante Quadratica)

  • LDA: Assume covarianza condivisa \(\boldsymbol{\Sigma}\)
  • QDA: Permette covarianze diverse \(\boldsymbol{\Sigma}_k\) per ogni classe

Discriminante QDA:

\[ \delta_k(\mathbf{x}) = -\frac{1}{2}\log|\boldsymbol{\Sigma}_k| - \frac{1}{2}(\mathbf{x} - \boldsymbol{\mu}_k)^T \boldsymbol{\Sigma}_k^{-1} (\mathbf{x} - \boldsymbol{\mu}_k) + \log \pi_k \]

Questo è quadratico in \(\mathbf{x}\) (perché \(\boldsymbol{\Sigma}_k\) dipende da \(k\)).

Compromesso: - LDA: Varianza inferiore (meno parametri), assume covarianza condivisa - QDA: Varianza superiore (più parametri), più flessibile

LDA vs. Naive Bayes

Naive Bayes: Assume caratteristiche condizionalmente indipendenti data la classe (\(\boldsymbol{\Sigma} = \text{diag}(\sigma_1^2, \ldots, \sigma_p^2)\))

LDA: Permette correlazioni tra caratteristiche (matrice di covarianza completa)

Assunzioni e Limitazioni

Assunzioni: 1. Condizionali Gaussiane: \(\mathbf{X} | Y = k \sim \mathcal{N}(\boldsymbol{\mu}_k, \boldsymbol{\Sigma})\) 2. Covarianza condivisa: Tutte le classi hanno la stessa \(\boldsymbol{\Sigma}\) 3. Dati sufficienti: \(n > p\) (più osservazioni che caratteristiche)

Cosa succede se le assunzioni sono violate?

  • Dati non Gaussiani: LDA può ancora funzionare ragionevolmente (discriminante è ancora lineare), ma potrebbe non essere ottimale
  • Covarianze diverse: Usa QDA invece
  • Alta dimensionalità (\(p \approx n\) o \(p > n\)): Usa LDA regolarizzata (riduci \(\hat{\boldsymbol{\Sigma}}\) verso diagonale)

Limitazioni: - Confini lineari: Non può catturare confini decisionali complessi e non lineari - Sensibilità agli outlier: Media campionaria e covarianza sono sensibili agli outlier - Maledizione della dimensionalità: La stima della covarianza diventa inaffidabile in alta dimensione

LDA Regolarizzata

Quando \(p\) è grande relativamente a \(n\), \(\hat{\boldsymbol{\Sigma}}\) è stimata male o singolare.

Soluzione: Regolarizza (riduci) la stima di covarianza.

Stimatore di Shrinkage

\[ \hat{\boldsymbol{\Sigma}}_{\text{reg}} = (1 - \alpha) \hat{\boldsymbol{\Sigma}} + \alpha \text{diag}(\hat{\boldsymbol{\Sigma}}) \]

dove \(0 \leq \alpha \leq 1\) controlla lo shrinkage: - \(\alpha = 0\): LDA standard - \(\alpha = 1\): Naive Bayes (covarianza diagonale)

Tuning di \(\alpha\): Usa validazione incrociata.

LDA Ridge-Regolarizzata

Aggiungi una penalità ridge per garantire invertibilità:

\[ \hat{\boldsymbol{\Sigma}}_{\text{ridge}} = \hat{\boldsymbol{\Sigma}} + \lambda \mathbf{I} \]

dove \(\lambda > 0\) è un parametro di tuning.

Variabili e Simboli

Simbolo Nome Descrizione
\(\mathbf{x}_i\) Vettore caratteristiche Osservazione \(p\)-dimensionale
\(y_i\) Etichetta classe Classe discreta \(\in \{1, \ldots, K\}\)
\(K\) Numero classi Totale classi
\(n_k\) Dimensione classe Numero osservazioni nella classe \(k\)
\(\boldsymbol{\mu}_k\) Media classe Vettore media per classe \(k\)
\(\boldsymbol{\Sigma}\) Matrice covarianza Covarianza condivisa tra classi
\(\mathbf{w}\) Direzione discriminante Vettore di proiezione
\(\mathbf{S}_B\) Dispersione tra classi Misura separazione medie classi
\(\mathbf{S}_W\) Dispersione entro classi Misura variazione entro classi
\(\delta_k(\mathbf{x})\) Funzione discriminante Punteggio lineare per classe \(k\)
\(\pi_k\) Probabilità a priori \(P(Y = k)\)

Concetti Correlati

Riferimenti Storici e Moderni

  • Fisher, R. A. (1936). "The use of multiple measurements in taxonomic problems." Annals of Eugenics, 7(2), 179-188.
  • Rao, C. R. (1948). "The utilization of multiple measurements in problems of biological classification." Journal of the Royal Statistical Society. Series B, 10(2), 159-203.
  • Hastie, T., Tibshirani, R., & Friedman, J. (2009). The Elements of Statistical Learning (2nd ed.). Springer. [Capitolo 4]
  • Duda, R. O., Hart, P. E., & Stork, D. G. (2000). Pattern Classification (2nd ed.). Wiley.
  • McLachlan, G. J. (2004). Discriminant Analysis and Statistical Pattern Recognition. Wiley.