Hvordan implementere lineær diskriminantanalyse i R?



Denne artikkelen vil fortelle deg hva som er lineær diskriminantanalyse, og også gi deg en detaljert demonstrasjon ved hjelp av R-programmeringsspråk.

Lineær diskriminantanalyse er en veldig populær maskinlæringsteknikk som brukes til å løse klassifiseringsproblemer. I denne artikkelen vil vi prøve å forstå intuisjonen og matematikken bak denne teknikken. Et eksempel på implementering av LDA i R er også gitt.

Så la oss komme i gang da





Fibra nummer c ++

Lineær diskriminantanalyseforutsetning

Lineær diskriminantanalyse er basert på følgende antagelser:

  • Den avhengige variabelen Y er diskret. I denne artikkelen vil vi anta at den avhengige variabelen er binær og tar klasseverdier {+1, -1} . Sannsynligheten for at et utvalg tilhører klassen +1 , dvs P (Y = +1) = p . Derfor sannsynligheten for at et utvalg tilhører klassen -en er 1-s .



  • Den uavhengige variabelen (e) X kommer fra gaussiske distribusjoner. Gjennomsnittet av den gaussiske fordelingen avhenger av klassemerket Y . dvs. hvis Y Jeg = +1 , så gjennomsnittet av X Jeg er & # 120583 +1 , ellers er det & # 120583 -en . Avviket & # 120590 2 er det samme for begge klassene. Matematisk sett, X | (Y = +1) ~ N (& # 120583 +1 , & # 120590 2 ) og X | (Y = -1) ~ N (& # 120583 -en , & # 120590 2 ) , hvor N betegner normalfordelingen.

Med denne informasjonen er det mulig å konstruere en felles distribusjon P (X, Y) for den uavhengige og avhengige variabelen. Derfor tilhører LDA klassen av Generative klassifiseringsmodeller . En nært beslektet generativ klassifisering er Quadratic Discriminant Analysis (QDA). Den er basert på alle de samme antagelsene til LDA, bortsett fra at klassevariantene er forskjellige.

La oss fortsette med artikkelen om lineær diskriminantanalyse og se

Intuisjon

Vurder klassens betingede gaussiske fordelinger for X gitt klassen Y . Figuren nedenfor viser tetthetsfunksjonene til fordelingen. I denne figuren, hvis Y = +1 , så gjennomsnittet av X er 10 og hvis Y = -1 , gjennomsnittet er 2. Avviket er 2 i begge tilfeller.

intuisjon - Lineær diskrimineringsanalyse - Edureka

Anta nå en ny verdi av X er gitt til oss. La oss bare betegne det som x Jeg . Oppgaven er å bestemme det mest sannsynlige klassemerket for dette x Jeg , dvs. Y Jeg . For enkelhets skyld anta at sannsynligheten s av prøven som tilhører klassen +1 er det samme som det å tilhøre klassen -en , dvs. p = 0,5 .

Intuitivt er det fornuftig å si det hvis x Jeg er nærmere & # 120583 +1 enn det er å & # 120583 -en , så er det mer sannsynlig det Y Jeg = +1 . Mer formelt, Y Jeg = +1 hvis:

| x Jeg - & # 120583 +1 |<|x Jeg - & # 120583 -en |

Normalisering av begge sider ved standardavvik:

| x Jeg - & # 120583 +1 | / & # 120590<|x Jeg - & # 120583 -en | / & # 120590

Kvadrering av begge sider:

(x Jeg - & # 120583 +1 ) 2 / & # 120590 2 <(x Jeg - & # 120583 -en ) 2 / & # 120590 2

x Jeg 2 / & # 120590 2 + & # 120583 +1 2 / & # 120590 2 - 2 x Jeg & # 120583 +1 / & # 120590 2 Jeg 2 / & # 120590 2 + & # 120583 -en 2 / & # 120590 2 - 2 x Jeg & # 120583 -en / & # 120590 2

2 x Jeg (& # 120583 -en - & # 120583 +1 ) / & # 120590 2 - (& # 120583 -en 2 / & # 120590 2 - & # 120583 +1 2 / & # 120590 2 )<0

-2 x Jeg (& # 120583 -en - & # 120583 +1 ) / & # 120590 2 + (& # 120583 -en 2 / & # 120590 2 - & # 120583 +1 2 / & # 120590 2 )> 0

Ovennevnte uttrykk er av formen bx Jeg + c> 0 hvor b = -2 (& # 120583 -en - & # 120583 +1 ) / & # 120590 2 og c = (& # 120583 -en 2 / & # 120590 2 - & # 120583 +1 2 / & # 120590 2 ) .

Det er tydelig at formen på ligningen er lineær , derav navnet Linear Discriminant Analysis.

La oss fortsette med artikkelen om lineær diskriminantanalyse og se,

heap og stack minne i java

Matematisk beskrivelse av LDA

Den matematiske avledningen av uttrykket for LDA er basert på begreper som Bayes-regel og Bayes Optimal Classifier . Interesserte lesere oppfordres til å lese mer om disse konseptene. En måte å utlede uttrykket på finnes her .

Vi vil gi uttrykket direkte for vårt spesifikke tilfelle der Y tar to klasser {+1, -1} . Vi vil også utvide intuisjonen vist i forrige avsnitt til det generelle tilfellet der X kan være flerdimensjonalt. La oss si at det er til uavhengige variabler. I dette tilfellet betyr klassen & # 120583 -en og & # 120583 +1 ville være vektorer av dimensjoner k * 1 og varians-kovariansmatrisen & # 120622 ville være en matrise av dimensjoner k * k .

Klassifiseringsfunksjonen er gitt som

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

Hvor,

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

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

Tegnfunksjonen returnerer +1 hvis uttrykket b T x + c> 0 , ellers kommer den tilbake -en . Det naturlige logguttrykket i c er til stede for å justere for det faktum at klassesannsynlighetene ikke trenger å være like for begge klassene, dvs. s kan være hvilken som helst verdi mellom (0, 1), og ikke bare 0,5.

Lære modellparametrene

Gitt et datasett med N datapunkter (x en , Y en ), (x 2 , Y 2 ), ... (X n , Y n ) , må vi estimere p, & # 120583 -en , & # 120583 +1 og & # 120622 . En statistisk estimeringsteknikk kalt Maksimal sannsynlighet estimering brukes til å estimere disse parametrene. Uttrykkene for parametrene ovenfor er gitt nedenfor.

& # 120583 +1 = (1 / N. +1 ) * & # 120506 i: yi = + 1 x Jeg

& # 120583 -en = (1 / N. -en ) * & # 120506 i: yi = -1 x Jeg

p = N +1 / N

& # 120622 = (1 / N) * & # 120506Jeg = 1: N (x Jeg - & # 120583 Jeg ) (x Jeg - & # 120583 Jeg ) T

Hvor N +1 = antall prøver hvor y Jeg = +1 og N -en = antall prøver hvor y Jeg = -1 .

Med uttrykkene ovenfor er LDA-modellen komplett. Man kan estimere modellparametrene ved hjelp av uttrykkene ovenfor og bruke dem i klassifiseringsfunksjonen for å få klassetiketten til en hvilken som helst ny inngangsverdi for uavhengig variabel. X .

La oss fortsette med artikkelen om lineær diskriminantanalyse og se

Eksempel i R

Følgende kode genererer et dummy datasett med to uavhengige variabler X1 og X2 og en avhengig variabel Y . Til X1 og X2 , vil vi generere utvalg fra to multivariate gaussiske distribusjoner med middel & # 120583 -en = (2, 2) og & # 120583 +1 = (6, 6) . 40% av prøvene tilhører klasse +1 og 60% tilhører klassen -en , derfor p = 0,4 .

bibliotek (ggplot2) bibliotek (MASS) bibliotek (mvtnorm) #Variance Covariance matrix for random bivariate gaussian sample var_covar = matrix (data = c (1.5, 0.3, 0.3, 1.5), nrow = 2) # Random bivariate gaussian samples for class + 1 Xplus 1<- 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)) 

I figuren ovenfor representerer de blå prikkene prøver fra klassen +1 og de røde representerer prøven fra klassen -en . Det er noe overlapping mellom prøvene, dvs. klassene kan ikke skilles helt med en enkel linje. Med andre ord er de ikke perfekt lineært kan skilles .

Vi skal nå trene en LDA-modell ved hjelp av dataene ovenfor.

#Tren LDA-modellen ved hjelp av ovennevnte datasett lda_model<- lda(Y ~ X1 + X2, data = dataset) #Print the LDA model lda_model 

Produksjon:

Tidligere sannsynlighet for grupper:

-elleve

0,6 0,4

Gruppe betyr:

X1 X2

-1 1,928108 2,010226

mvc design mønster i java

1 5.961004 6.015438

Koeffisienter for lineære diskriminanter:

LD1

X1 0,5646116

X2 0.5004175

Som man kan se, er klassemidlene som læres av modellen (1.928108, 2.010226) for klasse -en og (5.961004, 6.015438) for klasse +1 . Disse midlene er veldig nær klassemidlene vi hadde brukt til å generere disse tilfeldige prøvene. Tidligere sannsynlighet for gruppe +1 er estimatet for parameteren s . De b vektor er de lineære diskriminantkoeffisientene.

Vi vil nå bruke modellen ovenfor for å forutsi klassetikettene for de samme dataene.

# Forutsi klassen for hver prøve i datasettet ovenfor ved hjelp av LDA-modellen 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))

I figuren ovenfor er de lilla prøvene fra klassen +1 som ble klassifisert riktig av LDA-modellen. Tilsvarende er de røde prøvene fra klassen -en som ble klassifisert riktig. De blå er fra klassen +1 men ble klassifisert feil som -en . De grønne er fra klassen -en som ble feilklassifisert som +1 . Feilklassifiseringene skjer fordi disse prøvene er nærmere det andre klassesnittet (sentrum) enn det faktiske klassesnittet.

Dette fører oss til slutten av denne artikkelen, sjekk ut av Edureka, et pålitelig online læringsfirma med et nettverk av mer enn 250 000 fornøyde elever spredt over hele verden. Edurekas Data Analytics med R-opplæring vil hjelpe deg med å få ekspertise innen R-programmering, datamanipulering, utforskende dataanalyse, datavisualisering, datautvinning, regresjon, sentimentanalyse og bruk av R Studio for virkelige casestudier på detaljhandel, sosiale medier.

Har du et spørsmål til oss? Vennligst nevn det i kommentarfeltet i denne artikkelen, og vi vil kontakte deg så snart som mulig.