Cum se implementează analiza liniară discriminantă în R?



Acest articol vă va spune ce este analiza discriminantă liniară și vă va oferi, de asemenea, o demonstrație detaliată utilizând limbajul de programare R.

Analiza Discriminantă Liniară este o tehnică foarte populară de învățare automată care este utilizată pentru a rezolva problemele de clasificare. În acest articol vom încerca să înțelegem intuiția și matematica din spatele acestei tehnici. Un exemplu de implementare a LDA în R este, de asemenea, furnizat.

Așa că hai să începem atunci





Analiza Liniară Discriminantă Presupunere

Analiza Discriminantă Liniară se bazează pe următoarele ipoteze:

  • Variabila dependentă Da este discret. În acest articol vom presupune că variabila dependentă este binară și ia valori de clasă {+1, -1} . Probabilitatea ca un eșantion să aparțină clasei +1 , adică P (Y = +1) = p . Prin urmare, probabilitatea ca un eșantion să aparțină clasei -unu este 1-p .



  • Variabilele independente X provin din distribuții gaussiene. Media distribuției gaussiene depinde de eticheta clasei Da . adică dacă Da eu = +1 , apoi media lui X eu este & # 120583 +1 , altfel este & # 120583 -unu . Varianța & # 120590 2 este același pentru ambele clase. Matematic vorbind, X | (Y = +1) ~ N (& # 120583 +1 , & # 120590 2 ) și X | (Y = -1) ~ N (& # 120583 -unu , & # 120590 2 ) , Unde N denotă distribuția normală.

Cu aceste informații este posibil să se construiască o distribuție comună P (X, Y) pentru variabila independentă și dependentă. Prin urmare, LDA aparține clasei de Modele generatoare de clasificare . Un clasificator generativ strâns legat este Analiza Discriminantă Cadratică (QDA). Se bazează pe aceleași ipoteze ale LDA, cu excepția faptului că variațiile de clasă sunt diferite.

Să continuăm cu articolul Analiză Discriminantă Liniară și să vedem

Intuiţie

Luați în considerare distribuțiile gaussiene condiționate de clasă pentru X dat clasa Da . Figura de mai jos prezintă funcțiile de densitate ale distribuțiilor. În această figură, dacă Y = +1 , apoi media lui X este 10 și dacă Y = -1 , media este 2. Varianța este 2 în ambele cazuri.

intuiție - Analiza Discriminării Liniare - Edureka

Acum presupuneți o nouă valoare a X ni se dă. Să ne referim doar la X eu . Sarcina este de a determina eticheta de clasă cea mai probabilă pentru aceasta X eu , adică Da eu . Pentru simplitate presupunem că probabilitatea p a eșantionului aparținând clasei +1 este același cu cel al apartenenței la clasă -unu , adică p = 0,5 .

Intuitiv, are sens să spunem că dacă X eu este mai aproape de & # 120583 +1 decât este & # 120583 -unu , atunci este mai probabil că Da eu = +1 . Mai formal, Da eu = +1 dacă:

| x eu - & # 120583 +1 |<|x eu - & # 120583 -unu |

Normalizarea ambelor părți prin deviația standard:

| x eu - & # 120583 +1 | / & # 120590<|x eu - & # 120583 -unu | / & # 120590

Cadrarea ambelor părți:

convertirea șirului până în data în java

(X eu - & # 120583 +1 ) 2 / & # 120590 2 <(x eu - & # 120583 -unu ) 2 / & # 120590 2

X eu 2 / & # 120590 2 + & # 120583 +1 2 / & # 120590 2 - 2 x eu & # 120583 +1 / & # 120590 2 eu 2 / & # 120590 2 + & # 120583 -unu 2 / & # 120590 2 - 2 x eu & # 120583 -unu / & # 120590 2

2 x eu (& # 120583 -unu - & # 120583 +1 ) / & # 120590 2 - (& # 120583 -unu 2 / & # 120590 2 - & # 120583 +1 2 / & # 120590 2 )<0

-2 x eu (& # 120583 -unu - & # 120583 +1 ) / & # 120590 2 + (& # 120583 -unu 2 / & # 120590 2 - & # 120583 +1 2 / & # 120590 2 )> 0

Expresia de mai sus este de formă bx eu + c> 0 Unde b = -2 (& # 120583 -unu - & # 120583 +1 ) / & # 120590 2 și c = (& # 120583 -unu 2 / & # 120590 2 - & # 120583 +1 2 / & # 120590 2 ) .

Se pare că forma ecuației este liniar , de unde și denumirea de Analiză Discriminantă Liniară.

Să continuăm cu articolul Analiză Discriminantă Liniară și să vedem,

Descrierea matematică a LDA

Derivarea matematică a expresiei pentru LDA se bazează pe concepte precum Regula Bayes și Clasificator optim Bayes . Cititorii interesați sunt încurajați să citească mai multe despre aceste concepte. O modalitate de a obține expresia poate fi găsită Aici .

Vom furniza expresia direct pentru cazul nostru specific în care Da ia două clase {+1, -1} . De asemenea, vom extinde intuiția prezentată în secțiunea anterioară la cazul general în care X poate fi multidimensională. Să spunem că există la variabile independente. În acest caz, clasa înseamnă & # 120583 -unu și & # 120583 +1 ar fi vectori de dimensiuni k * 1 și matricea varianță-covarianță & # 120622 ar fi o matrice de dimensiuni k * k .

Funcția de clasificare este dată ca

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

Unde,

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

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

Funcția semn revine +1 dacă expresia b T x + c> 0 , altfel se întoarce -unu . Termenul natural log în c este prezent pentru a ajusta faptul că probabilitățile de clasă nu trebuie să fie egale pentru ambele clase, adică p ar putea fi orice valoare între (0, 1) și nu doar 0,5.

Învățarea parametrilor modelului

Dat un set de date cu N puncte de date (X unu , Y unu ), (X 2 , Y 2 ),… (X n , Y n ) , trebuie să estimăm p, & # 120583 -unu , & # 120583 +1 și & # 120622 . O tehnică de estimare statistică numită Estimarea probabilității maxime este folosit pentru a estima acești parametri. Expresiile pentru parametrii de mai sus sunt date mai jos.

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

& # 120583 -unu = (1 / N -unu ) * & # 120506 i: yi = -1 X eu

p = N +1 / N

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

Unde N +1 = numărul de eșantioane unde y eu = +1 și N -unu = numărul de eșantioane unde y eu = -1 .

Cu expresiile de mai sus, modelul LDA este complet. Se pot estima parametrii modelului folosind expresiile de mai sus și le pot folosi în funcția clasificator pentru a obține eticheta clasei oricărei noi valori de intrare a variabilei independente X .

Să continuăm cu articolul Analiză Discriminantă Liniară și să vedem

Exemplu în R

Următorul cod generează un set de date fals cu două variabile independente X1 și X2 și o variabilă dependentă Da . Pentru X1 și X2 , vom genera eșantioane din două distribuții gaussiene multivariate cu medii & # 120583 -unu = (2, 2) și & # 120583 +1 = (6, 6) . 40% din probe aparțin clasei +1 iar 60% aparțin clasei -unu , prin urmare p = 0,4 .

library (ggplot2) library (MASS) library (mvtnorm) #Varianza Matricea de covarianță pentru eșantion gaussian bivariant aleator var_covar = matrix (date = c (1.5, 0.3, 0.3, 1.5), nrow = 2) # Eșantioane gaussiene bivariate aleatorii pentru clasa + 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)) 

În figura de mai sus, punctele albastre reprezintă mostre din clasă +1 iar cele roșii reprezintă proba din clasă -unu . Există unele suprapuneri între probe, adică clasele nu pot fi separate complet cu o linie simplă. Cu alte cuvinte, nu sunt perfect separabile liniar .

Acum vom instrui un model LDA folosind datele de mai sus.

#Trainează modelul LDA folosind setul de date de mai sus lda_model<- lda(Y ~ X1 + X2, data = dataset) #Print the LDA model lda_model 

Ieșire:

Probabilități anterioare ale grupurilor:

-unsprezece

0,6 0,4

Grup înseamnă:

X1 X2

-1 1.928108 2.010226

1 5.961004 6.015438

Coeficienții discriminanților liniari:

LD1

X1 0,5646116

X2 0,5004175

După cum se poate vedea, mijloacele de clasă învățate de model sunt (1.928108, 2.010226) pentru clasă -unu și (5.961004, 6.015438) pentru clasă +1 . Aceste mijloace sunt foarte apropiate de mijloacele de clasă pe care le-am folosit pentru a genera aceste eșantioane aleatorii. Probabilitatea anterioară pentru grup +1 este estimarea parametrului p . b vectorul este coeficienții discriminanți liniari.

Vom folosi acum modelul de mai sus pentru a prezice etichetele clasei pentru aceleași date.

#Predictarea clasei pentru fiecare eșantion din setul de date de mai sus utilizând modelul 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))

În figura de mai sus, probele violet provin din clasă +1 care au fost clasificate corect de modelul LDA. În mod similar, probele roșii provin din clasă -unu care au fost clasificate corect. Cele albastre sunt din clasă +1 dar au fost clasificate incorect ca -unu . Cele verzi sunt din clasă -unu care au fost clasificate greșit ca +1 . Clasificările greșite se întâmplă deoarece aceste eșantioane sunt mai apropiate de media clasei (centru) decât media reală a clasei.

Acest lucru ne duce la sfârșitul acestui articol, consultați de Edureka, o companie de învățare online de încredere, cu o rețea de peste 250.000 de elevi mulțumiți răspândiți pe tot globul. Analiza datelor Edureka cu instruire R vă va ajuta să câștigați expertiză în programarea R, manipularea datelor, analiza datelor exploratorii, vizualizarea datelor, extragerea datelor, regresia, analiza sentimentelor și utilizarea R Studio pentru studii de caz din viața reală cu amănuntul, social media.

Ai o întrebare pentru noi? Vă rugăm să o menționați în secțiunea de comentarii a acestui articol și vă vom răspunde cât mai curând posibil.