Come implementare l'analisi discriminante lineare in R?



Questo articolo ti spiegherà cos'è l'analisi discriminante lineare e ti fornirà anche una dimostrazione dettagliata utilizzando il linguaggio di programmazione R.

L'analisi discriminante lineare è una tecnica di apprendimento automatico molto popolare utilizzata per risolvere i problemi di classificazione. In questo articolo cercheremo di capire l'intuizione e la matematica alla base di questa tecnica. Un esempio di implementazione di LDA in R è anche fornito.

Quindi iniziamo allora





Assunzione di analisi discriminante lineare

L'analisi discriminante lineare si basa sui seguenti presupposti:

  • La variabile dipendente Y è discreto. In questo articolo assumeremo che la variabile dipendente sia binaria e prenda i valori di classe {+1, -1} . La probabilità che un campione appartenga alla classe +1 , cioè P (Y = +1) = p . Pertanto, la probabilità di un campione appartenente alla classe -uno è 1-p .



  • Le variabili indipendenti X provengono da distribuzioni gaussiane. La media della distribuzione gaussiana dipende dall'etichetta della classe Y . cioè se Y io = +1 , quindi la media di X io è & # 120583 +1 , altrimenti lo è & # 120583 -uno . La varianza & # 120590 2 è lo stesso per entrambe le classi. Matematicamente parlando, X | (Y = +1) ~ N (& # 120583 +1 , & # 120590 2 ) e X | (Y = -1) ~ N (& # 120583 -uno , & # 120590 2 ) , dove N denota la distribuzione normale.

Con queste informazioni è possibile costruire una distribuzione congiunta P (X, Y) per la variabile indipendente e dipendente. Pertanto, LDA appartiene alla classe di Modelli di classificatori generativi . Un classificatore generativo strettamente correlato è l'analisi discriminante quadratica (QDA). Si basa su tutti gli stessi presupposti di LDA, tranne che le varianze di classe sono diverse.

Continuiamo con l'articolo sull'analisi discriminante lineare e vediamo

Intuizione

Considera le distribuzioni gaussiane condizionali di classe per X data la classe Y . La figura seguente mostra le funzioni di densità delle distribuzioni. In questa figura, se Y = +1 , quindi la media di X è 10 e se Y = -1 , la media è 2. La varianza è 2 in entrambi i casi.

intuizione - Analisi della discriminazione lineare - Edureka

Supponiamo ora un nuovo valore di X ci viene dato. Indichiamolo semplicemente come X io . Il compito è determinare l'etichetta di classe più probabile per questo X io , cioè Y io . Per semplicità supponiamo che la probabilità p del campione appartenente alla classe +1 è lo stesso dell'appartenenza alla classe -uno , cioè p = 0,5 .

come convertire double in int

Intuitivamente, ha senso dire che se X io è più vicino a & # 120583 +1 di quello che è & # 120583 -uno , allora è più probabile che Y io = +1 . Più formalmente, Y io = +1 Se:

| x io - & # 120583 +1 |<|x io - & # 120583 -uno |

Normalizzazione di entrambi i lati in base alla deviazione standard:

| x io - & # 120583 +1 | / & # 120590<|x io - & # 120583 -uno | / & # 120590

Squadrare entrambi i lati:

(X io - & # 120583 +1 ) 2 / & # 120590 2 <(x io - & # 120583 -uno ) 2 / & # 120590 2

X io 2 / & # 120590 2 + & # 120583 +1 2 / & # 120590 2 - 2 x io & # 120583 +1 / & # 120590 2 io 2 / & # 120590 2 + & # 120583 -uno 2 / & # 120590 2 - 2 x io & # 120583 -uno / & # 120590 2

2 x io (& # 120583 -uno - & # 120583 +1 ) / & # 120590 2 - (& # 120583 -uno 2 / & # 120590 2 - & # 120583 +1 2 / & # 120590 2 )<0

-2 x io (& # 120583 -uno - & # 120583 +1 ) / & # 120590 2 + (& # 120583 -uno 2 / & # 120590 2 - & # 120583 +1 2 / & # 120590 2 )> 0

L'espressione sopra ha la forma bx io + c> 0 dove b = -2 (& # 120583 -uno - & # 120583 +1 ) / & # 120590 2 e c = (& # 120583 -uno 2 / & # 120590 2 - & # 120583 +1 2 / & # 120590 2 ) .

È evidente che la forma dell'equazione è lineare , da cui il nome Linear Discriminant Analysis.

Continuiamo con l'articolo sull'analisi discriminante lineare e vediamo,

Descrizione matematica di LDA

La derivazione matematica dell'espressione per LDA si basa su concetti come Regola di Bayes e Classificatore ottimale di Bayes . I lettori interessati sono incoraggiati a leggere di più su questi concetti. È possibile trovare un modo per derivare l'espressione Qui .

Forniremo l'espressione direttamente per il nostro caso specifico in cui Y prende due classi {+1, -1} . Estenderemo anche l'intuizione mostrata nella sezione precedente al caso generale in cui X può essere multidimensionale. Diciamo che ci sono per variabili indipendenti. In questo caso, la classe significa & # 120583 -uno e & # 120583 +1 sarebbero vettori di dimensioni k * 1 e la matrice varianza-covarianza & # 120622 sarebbe una matrice di dimensioni k * k .

La funzione di classificazione è data come

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

Dove,

b = -2 & # 120622 -uno (& # 120583 -uno - & # 120583 +1 )

c = & # 120583 -uno T & # 120622 -uno & # 120583 -uno - & # 120583 -uno T & # 120622 -uno & # 120583 -uno {-2 ln (1-p) / p}

La funzione segno ritorna +1 se l'espressione b T x + c> 0 , altrimenti ritorna -uno . Il termine logaritmo naturale in c è presente per correggere il fatto che le probabilità di classe non devono essere uguali per entrambe le classi, ad es. p potrebbe essere qualsiasi valore compreso tra (0, 1) e non solo 0,5.

Apprendimento dei parametri del modello

Dato un set di dati con N punti dati (X uno , Y uno ), (X 2 , Y 2 ),… (X n , Y n ) , dobbiamo stimare p, & # 120583 -uno , & # 120583 +1 e & # 120622 . Una tecnica di stima statistica chiamata Stima di massima verosimiglianza viene utilizzato per stimare questi parametri. Le espressioni per i parametri precedenti sono fornite di seguito.

& # 120583 +1 = (1 / N +1 ) * & # 120506 i: yi = + 1 X io

& # 120583 -uno = (1 / N -uno ) * & # 120506 io: yi = -1 X io

p = N +1 / N

& # 120622 = (1 / N) * & # 120506io = 1: N (X io - & # 120583 io ) (X io - & # 120583 io ) T

usa python in visual studio

Dove N +1 = numero di campioni dove y io = +1 e N -uno = numero di campioni dove y io = -1 .

Con le espressioni precedenti, il modello LDA è completo. Si possono stimare i parametri del modello usando le espressioni di cui sopra e usarli nella funzione classificatore per ottenere l'etichetta di classe di qualsiasi nuovo valore di input della variabile indipendente X .

Continuiamo con l'articolo sull'analisi discriminante lineare e vediamo

Esempio in R

Il codice seguente genera un set di dati fittizio con due variabili indipendenti X1 e X2 e una variabile dipendente Y . Per X1 e X2 , genereremo un campione da due distribuzioni gaussiane multivariate con medie & # 120583 -uno = (2, 2) e & # 120583 +1 = (6, 6) . Il 40% dei campioni appartiene alla classe +1 e il 60% appartiene alla classe -uno , perciò p = 0,4 .

libreria (ggplot2) libreria (MASS) libreria (mvtnorm) #Varianza Matrice di covarianza per campione gaussiano bivariato casuale var_covar = matrice (dati = c (1.5, 0.3, 0.3, 1.5), nrow = 2) # Campioni gaussiani bivariati casuali per la classe + 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)) 

Nella figura sopra, i punti blu rappresentano i campioni della classe +1 e quelli rossi rappresentano il campione della classe -uno . C'è qualche sovrapposizione tra i campioni, cioè le classi non possono essere separate completamente con una semplice linea. In altre parole, non sono perfettamente separabile linearmente .

Ora addestreremo un modello LDA utilizzando i dati di cui sopra.

# Addestra il modello LDA utilizzando il set di dati sopra lda_model<- lda(Y ~ X1 + X2, data = dataset) #Print the LDA model lda_model 

Produzione:

java come uscire dal programma

Probabilità a priori dei gruppi:

-undici

0.6 0.4

Gruppo significa:

X1 X2

-1 1.928108 2.010226

1 5.961004 6.015438

Coefficienti di discriminanti lineari:

LD1

X1 0.5646116

X2 0.5004175

Come si può vedere, i mezzi di classe appresi dal modello sono (1.928108, 2.010226) per classe -uno e (5.961004, 6.015438) per la classe +1 . Questi mezzi sono molto vicini ai mezzi di classe che avevamo usato per generare questi campioni casuali. La probabilità a priori per il gruppo +1 è la stima per il parametro p . Il b vettore è i coefficienti discriminanti lineari.

Useremo ora il modello precedente per prevedere le etichette delle classi per gli stessi dati.

#Predicting della classe per ogni campione nel dataset sopra utilizzando il modello 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))

Nella figura sopra, i campioni viola provengono dalla classe +1 classificate correttamente dal modello LDA. Allo stesso modo, i campioni rossi provengono dalla classe -uno classificati correttamente. Quelli blu sono di classe +1 ma sono stati classificati erroneamente come -uno . Quelli verdi sono di classe -uno che sono stati classificati erroneamente come +1 . Le classificazioni errate si verificano perché questi campioni sono più vicini alla media dell'altra classe (centro) rispetto alla loro media di classe effettiva.

Questo ci porta alla fine di questo articolo, controlla il da Edureka, una società di formazione online affidabile con una rete di oltre 250.000 studenti soddisfatti sparsi in tutto il mondo. La formazione di Data Analytics con R di Edureka ti aiuterà ad acquisire esperienza in programmazione R, manipolazione dei dati, analisi esplorativa dei dati, visualizzazione dei dati, data mining, regressione, analisi del sentiment e utilizzo di R Studio per casi di studio reali su vendita al dettaglio, social media.

Hai domande per noi? Si prega di menzionarlo nella sezione commenti di questo articolo e ti risponderemo il prima possibile.