Hoe lineaire discriminerende analyse in R implementeren?



Dit artikel zal u vertellen wat lineaire discriminantanalyse is en geeft u ook een gedetailleerde demonstratie met behulp van de R-programmeertaal.

Lineaire discriminerende analyse is een zeer populaire Machine Learning-techniek die wordt gebruikt om classificatieproblemen op te lossen. In dit artikel zullen we proberen de intuïtie en wiskunde achter deze techniek te begrijpen. Een voorbeeld van implementatie van LDA in R is ook voorzien.

Dus laten we dan maar beginnen





Lineaire aanname van discriminerende analyse

Lineaire discriminerende analyse is gebaseerd op de volgende aannames:

  • De afhankelijke variabele Y is discreet. In dit artikel gaan we ervan uit dat de afhankelijke variabele binair is en klassewaarden aanneemt {+1, -1} . De kans op een steekproef die tot de klas behoort +1 , d.w.z. P (Y = +1) = p . Dus de kans dat een steekproef tot de klas behoort -een is 1-p .



  • De onafhankelijke variabele (n) X komen uit Gaussiaanse distributies. Het gemiddelde van de Gauss-verdeling hangt af van het klassenlabel Y . d.w.z. als Y ik = +1 , dan het gemiddelde van X ik is & # 120583 +1 , anders is het & # 120583 -een . De variantie & # 120590 2 is hetzelfde voor beide klassen. Wiskundig gezien, X | (Y = +1) ~ N (& # 120583 +1 , & # 120590 2 ) en X | (Y = -1) ~ N (& # 120583 -een , & # 120590 2 ) , waar N geeft de normale verdeling aan.

Met deze informatie is het mogelijk om een ​​gezamenlijke distributie op te bouwen P (X, Y) voor de onafhankelijke en afhankelijke variabele. Daarom behoort LDA tot de klasse van Generatieve classificatiemodellen . Een nauw verwante generatieve classificator is Quadratic Discriminant Analysis (QDA). Het is gebaseerd op dezelfde aannames van LDA, behalve dat de klasseverschillen verschillend zijn.

Laten we doorgaan met het artikel Linear Discriminant Analysis en zien

Intuïtie

Beschouw de voorwaardelijke gaussiaanse verdelingen van de klasse voor X gezien de klas Y . De onderstaande afbeelding toont de dichtheidsfuncties van de verdelingen. In deze afbeelding, if Y = +1 , dan het gemiddelde van X is 10 en als Y = -1 , het gemiddelde is 2. De variantie is in beide gevallen 2.

intuïtie - Lineaire discriminatieanalyse - Edureka

standaardwaarde van char in java

Stel nu een nieuwe waarde van X is aan ons gegeven. Laten we het gewoon aanduiden als X ik . De taak is om hiervoor het meest waarschijnlijke klassenlabel te bepalen X ik , d.w.z. Y ik . Neem voor de eenvoud aan dat de waarschijnlijkheid p van de steekproef behorende tot de klas +1 is hetzelfde als het behoren tot de klas -een , d.w.z. p = 0,5 .

Intuïtief is het logisch om te zeggen dat if X ik is dichter bij & # 120583 +1 dan het is & # 120583 -een , dan is het waarschijnlijker dat Y ik = +1 . Meer formeel, Y ik = +1 als:

| x ik - & # 120583 +1 |<|x ik - & # 120583 -een |

Beide zijden normaliseren door de standaarddeviatie:

| x ik - & # 120583 +1 | / & # 120590<|x ik - & # 120583 -een | / & # 120590

Beide zijden vierkant maken:

(X ik - & # 120583 +1 ) 2 / & # 120590 2 <(x ik - & # 120583 -een ) 2 / & # 120590 2

X ik 2 / & # 120590 2 + & # 120583 +1 2 / & # 120590 2 - 2 x ik & # 120583 +1 / & # 120590 2 ik 2 / & # 120590 2 + & # 120583 -een 2 / & # 120590 2 - 2 x ik & # 120583 -een / & # 120590 2

2 x ik (& # 120583 -een - & # 120583 +1 ) / & # 120590 2 - (& # 120583 -een 2 / & # 120590 2 - & # 120583 +1 2 / & # 120590 2 )<0

-2 x ik (& # 120583 -een - & # 120583 +1 ) / & # 120590 2 + (& # 120583 -een 2 / & # 120590 2 - & # 120583 +1 2 / & # 120590 2 )> 0

De bovenstaande uitdrukking is van de vorm bx ik + c> 0 waar b = -2 (& # 120583 -een - & # 120583 +1 ) / & # 120590 2 en c = (& # 120583 -een 2 / & # 120590 2 - & # 120583 +1 2 / & # 120590 2 ) .

Het is duidelijk dat de vorm van de vergelijking is lineair , vandaar de naam Linear Discriminant Analysis.

Laten we doorgaan met het artikel Linear Discriminant Analysis en zien,

Wiskundige beschrijving van LDA

De wiskundige afleiding van de uitdrukking voor LDA is gebaseerd op concepten als Bayes-regel en Bayes Optimale Classificatie . Geïnteresseerde lezers worden aangemoedigd om meer over deze concepten te lezen. Een manier om de uitdrukking af te leiden, is te vinden hier .

We zullen de uitdrukking rechtstreeks verstrekken voor ons specifieke geval waarin Y duurt twee lessen {+1, -1} . We zullen ook de intuïtie die in de vorige sectie werd getoond uitbreiden naar het algemene geval waarin X kan multidimensionaal zijn. Laten we zeggen dat die er zijn naar onafhankelijke variabelen. In dit geval betekent de klasse & # 120583 -een en & # 120583 +1 zouden vectoren van afmetingen zijn k * 1 en de variantie-covariantiematrix & # 120622 zou een matrix van dimensies zijn k * k .

De classificatiefunctie wordt gegeven als

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

Waar,

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

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

De tekenfunctie keert terug +1 als de uitdrukking b T x + c> 0 , anders keert het terug -een . De natuurlijke log-term in c is aanwezig om te corrigeren voor het feit dat de klassenkansen niet gelijk hoeven te zijn voor beide klassen, d.w.z. p kan elke waarde tussen (0, 1) zijn, en niet slechts 0,5.

Leren van de modelparameters

Gegeven een dataset met N data punten (X een , Y een ), (x 2 , Y 2 ), ... (X n , Y n ) , we moeten schatten p, & # 120583 -een , & # 120583 +1 en & # 120622 . Een statistische schattingstechniek genaamd Schatting van de maximale waarschijnlijkheid wordt gebruikt om deze parameters te schatten. De uitdrukkingen voor de bovenstaande parameters worden hieronder gegeven.

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

& # 120583 -een = (1 / N -een ) * & # 120506 ik: yi = -1 X ik

p = N +1 / N

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

Waar N +1 = aantal monsters waarbij y ik = +1 en N -een = aantal monsters waarbij y ik = -1 .

Met bovenstaande uitdrukkingen is het LDA-model compleet. Men kan de modelparameters schatten met behulp van de bovenstaande uitdrukkingen en ze gebruiken in de classificatiefunctie om het klasselabel van elke nieuwe invoerwaarde van een onafhankelijke variabele te krijgen X .

Laten we doorgaan met het artikel Linear Discriminant Analysis en zien

Voorbeeld in R

De volgende code genereert een dummy-gegevensset met twee onafhankelijke variabelen X1 en X2 en een afhankelijke variabele Y . Voor X1 en X2 , zullen we een steekproef genereren van twee multivariate gaussiaanse distributies met gemiddelden & # 120583 -een = (2, 2) en & # 120583 +1 = (6, 6) . 40% van de monsters behoort tot de klas +1 en 60% behoort tot de klas -een daarom p = 0,4 .

bibliotheek (ggplot2) bibliotheek (MASS) bibliotheek (mvtnorm) #Variantie Covariantiematrix voor willekeurige bivariate Gaussiaanse steekproef var_covar = matrix (data = c (1.5, 0.3, 0.3, 1.5), nrow = 2) # Willekeurige bivariate Gaussiaanse steekproeven voor klasse + 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)) 

In de bovenstaande afbeelding vertegenwoordigen de blauwe stippen voorbeelden uit de klas +1 en de rode vertegenwoordigen de steekproef uit de klas -een . Er is enige overlap tussen de monsters, d.w.z. de klassen kunnen niet volledig worden gescheiden met een eenvoudige lijn. Met andere woorden, ze zijn niet perfect lineair scheidbaar .

We gaan nu een LDA-model trainen met behulp van bovenstaande gegevens.

#Train het LDA-model met behulp van de bovenstaande dataset lda_model<- lda(Y ~ X1 + X2, data = dataset) #Print the LDA model lda_model 

Uitgang:

Eerdere kansen van groepen:

-elf

0,6 0,4

Groep betekent:

verschil tussen overschrijven en overbelasten in java

X1 X2

-1 1.928108 2.010226

1 5.961004 6.015438

Coëfficiënten van lineaire discriminanten:

LD1

X1 0,5646116

X2 0,5004175

Zoals men kan zien, zijn de klassemiddelen die door het model worden geleerd (1.928108, 2.010226) voor de klas -een en (5.961004, 6.015438) voor klasse +1 . Deze middelen liggen heel dicht bij de klassemiddelen die we hadden gebruikt om deze willekeurige steekproeven te genereren. De eerdere kans voor de groep +1 is de schatting voor de parameter p . De b vector is de lineaire discriminerende coëfficiënten.

We zullen nu het bovenstaande model gebruiken om de klassenlabels voor dezelfde gegevens te voorspellen.

#Voorspellen van de klasse voor elk monster in de bovenstaande gegevensset met behulp van het LDA-model 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))

In de bovenstaande afbeelding zijn de paarse monsters van klasse +1 die correct werden geclassificeerd door het LDA-model. Evenzo zijn de rode monsters uit de klas -een die correct waren geclassificeerd. De blauwe zijn van de klas +1 maar werden ten onrechte geclassificeerd als -een . De groene zijn van de klas -een die verkeerd zijn geclassificeerd als +1 . De misclassificaties vinden plaats omdat deze steekproeven dichter bij het andere klassegemiddelde (midden) liggen dan hun werkelijke klassegemiddelde.

Dit brengt ons bij het einde van dit artikel, bekijk de door Edureka, een vertrouwd online leerbedrijf met een netwerk van meer dan 250.000 tevreden leerlingen verspreid over de hele wereld. Edureka's Data Analytics met R-training helpt u expertise op te doen in R-programmering, datamanipulatie, verkennende data-analyse, datavisualisatie, datamining, regressie, sentimentanalyse en het gebruik van R Studio voor praktijkvoorbeelden over detailhandel, sociale media.

Heeft u een vraag voor ons? Vermeld het in het opmerkingengedeelte van dit artikel en we nemen zo snel mogelijk contact met u op.