Kuinka toteuttaa lineaarinen diskriminanttianalyysi R: ssä?



Tämä artikkeli kertoo sinulle, mikä on lineaarinen erotteluanalyysi, ja antaa sinulle myös yksityiskohtaisen esittelyn R-ohjelmointikielellä.

Lineaarinen diskriminanttianalyysi on erittäin suosittu koneoppimistekniikka, jota käytetään luokitusongelmien ratkaisemiseen. Tässä artikkelissa yritämme ymmärtää tämän tekniikan taustalla olevan intuition ja matematiikan. Esimerkki LDA: n toteuttamisesta vuonna R tarjotaan myös.

Joten aloitetaan sitten





Lineaarinen diskriminanttianalyysioletus

Lineaarinen diskriminanttianalyysi perustuu seuraaviin oletuksiin:

  • Riippuva muuttuja Y on erillinen. Tässä artikkelissa oletetaan, että riippuva muuttuja on binaarinen ja ottaa luokan arvot {+1, -1} . Luokkaan kuuluvan otoksen todennäköisyys +1 eli P (Y = +1) = p . Siksi luokkaan kuuluvan otoksen todennäköisyys -yksi On 1-s .



  • Riippumattomat muuttujat X tulevat gaussin jakaumista. Gaussin jakauman keskiarvo riippuu luokan etiketistä Y . eli jos Y i = +1 , sitten keskiarvo X i On & # 120583 +1 , muuten se on & # 120583 -yksi . Varianssi & # 120590 2 on sama molemmille luokille. Matemaattisesti ottaen X | (Y = +1) ~ N (& # 120583 +1 , & # 120590 2 ) ja X | (Y = -1) ~ N (& # 120583 -yksi , & # 120590 2 ) , missä N tarkoittaa normaalijakaumaa.

Tämän tiedon avulla on mahdollista rakentaa yhteinen jakelu P (X, Y) riippumattomalle ja riippuvaiselle muuttujalle. Siksi LDA kuuluu luokkaan Generatiiviset luokittelumallit . Lähes sukua oleva generatiivinen luokittelija on Quadratic Discriminant Analysis (QDA). Se perustuu kaikkiin samoihin LDA: n oletuksiin, paitsi että luokan vaihtelut ovat erilaiset.

Jatka sitten Linear Discriminant Analysis -artikkelin kanssa ja katso

Intuitio

Harkitse luokan ehdollisia gaussin jakaumia X annettu luokka Y . Alla olevassa kuvassa on esitetty jakaumien tiheysfunktiot. Tässä kuvassa, jos Y = +1 , sitten keskiarvo X on 10 ja jos Y = -1 , keskiarvo on 2. Varianssi on 2 molemmissa tapauksissa.

intuitio - Lineaarinen syrjintäanalyysi - Edureka

Oletetaan nyt uusi arvo X annetaan meille. Lets vain merkitä sitä nimellä x i . Tehtävänä on määrittää todennäköisin luokkatunniste tälle x i eli Y i . Oletetaan yksinkertaisuuden vuoksi, että todennäköisyys s luokkaan kuuluvasta näytteestä +1 on sama kuin kuuluminen luokkaan -yksi eli p = 0,5 .

Intuitiivisesti on järkevää sanoa, että jos x i on lähempänä & # 120583 +1 kuin se on & # 120583 -yksi , niin on todennäköisempää Y i = +1 . Muodollisemmin, Y i = +1 jos:

| x i - & # 120583 +1 |<|x i - & # 120583 -yksi |

Molempien puolien normalisointi keskihajonnalla:

| x i - & # 120583 +1 | / & # 120590<|x i - & # 120583 -yksi | / & # 120590

Neliö molemmille puolille:

(x i - & # 120583 +1 ) 2 / & # 120590 2 <(x i - & # 120583 -yksi ) 2 / & # 120590 2

kuinka muuntaa kaksinkertainen int

x i 2 / & # 120590 2 + & # 120583 +1 2 / & # 120590 2 - 2 x i & # 120583 +1 / & # 120590 2 i 2 / & # 120590 2 + & # 120583 -yksi 2 / & # 120590 2 - 2 x i & # 120583 -yksi / & # 120590 2

2 x i (& # 120583 -yksi - & # 120583 +1 ) / & # 120590 2 - (& # 120583 -yksi 2 / & # 120590 2 - & # 120583 +1 2 / & # 120590 2 )<0

-2 x i (& # 120583 -yksi - & # 120583 +1 ) / & # 120590 2 + (& # 120583 -yksi 2 / & # 120590 2 - & # 120583 +1 2 / & # 120590 2 )> 0

Yllä oleva lauseke on muodoltaan bx i + c> 0 missä b = -2 (& # 120583 -yksi - & # 120583 +1 ) / & # 120590 2 ja c = (& # 120583 -yksi 2 / & # 120590 2 - & # 120583 +1 2 / & # 120590 2 ) .

On ilmeistä, että yhtälön muoto on lineaarinen , tästä syystä nimi Lineaarinen erotteleva analyysi.

kuinka määrittää eclipse Java - sovellukselle

Jatkaessamme artikkelia Linear Discriminant Analysis ja katso,

LDA: n matemaattinen kuvaus

LDA: n lausekkeen matemaattinen johtaminen perustuu käsitteisiin kuten Bayesin sääntö ja Bayesin optimaalinen luokittelija . Kiinnostuneita lukijoita kannustetaan lukemaan lisää näistä käsitteistä. Yksi tapa saada lauseke voidaan löytää tässä .

Annamme lausekkeen suoraan tapauksessamme missä Y kestää kaksi luokkaa {+1, -1} . Laajennamme myös edellisessä osassa esitettyä intuitiota yleiseen tapaukseen, jossa X voi olla moniulotteinen. Oletetaan, että on että riippumattomia muuttujia. Tässä tapauksessa luokka tarkoittaa & # 120583 -yksi ja & # 120583 +1 olisivat mitan vektoreita k * 1 ja varianssi-kovarianssimatriisi & # 120622 olisi ulottuvuuksien matriisi k * k .

Luokittelutoiminto annetaan muodossa

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

Missä,

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

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

Sign-funktio palaa +1 jos lauseke b T x + c> 0 , muuten se palaa -yksi . Luonnollinen lokitermi vuonna c on läsnä sopeutuakseen siihen, että luokan todennäköisyyksien ei tarvitse olla yhtä suuret molemmille luokille, ts. s voi olla mikä tahansa arvo välillä (0, 1) eikä vain 0,5.

Malliparametrien oppiminen

Annettu tietojoukko N datapisteet (x yksi , Y yksi ), (x 2 , Y 2 ),… (X n , Y n ) , meidän on arvioitava p, & # 120583 -yksi , & # 120583 +1 ja & # 120622 . Tilastollinen estimointitekniikka Suurimman todennäköisyyden arvio käytetään näiden parametrien arvioimiseksi. Yllä olevien parametrien ilmaisut on annettu alla.

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

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

p = N +1 / N

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

Missä N +1 = näytteiden lukumäärä missä y i = +1 ja N -yksi = näytteiden lukumäärä missä y i = -1 .

Yllä olevilla ilmaisuilla LDA-malli on täydellinen. Voidaan arvioida malliparametrit yllä olevien lausekkeiden avulla ja käyttää niitä luokittelutoiminnossa saadaksesi itsenäisen muuttujan minkä tahansa uuden syötearvon luokkatunnuksen X .

Jatka sitten Linear Discriminant Analysis -artikkelin kanssa ja katso

Esimerkki julkaisussa R

Seuraava koodi luo nuken tietojoukon, jossa on kaksi riippumatonta muuttujaa X1 ja X2 ja riippuva muuttuja Y . Sillä X1 ja X2 , generoimme otoksen kahdesta monivaihemaisesta gaussin jakaumasta keskiarvoilla & # 120583 -yksi = (2, 2) ja & # 120583 +1 = (6, 6) . 40% näytteistä kuuluu luokkaan +1 ja 60% kuuluu luokkaan -yksi , siksi p = 0,4 .

kirjasto (ggplot2) kirjasto (MASS) kirjasto (mvtnorm) #Muuttujan kovarianssimatriisi satunnaiseen kaksimuuttujaiseen gaussianäytteeseen var_covar = matriisi (data = c (1,5, 0,3, 0,3, 1,5), now = 2) # Satunnainen kaksimuuttujan gaussinäyte luokkaan + 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)) 

Yllä olevassa kuvassa siniset pisteet edustavat näytteitä luokasta +1 ja punaiset edustavat luokan otosta -yksi . Näytteiden välillä on jonkin verran päällekkäisyyksiä, toisin sanoen luokkia ei voida erottaa kokonaan yksinkertaisella viivalla. Toisin sanoen ne eivät ole täydellisiä lineaarisesti erotettavissa .

Koulutamme nyt LDA-mallia käyttämällä yllä olevia tietoja.

# Harjoittele LDA-mallia yllä olevalla tietojoukolla lda_model<- lda(Y ~ X1 + X2, data = dataset) #Print the LDA model lda_model 

Tuotos:

Ryhmien aikaisemmat todennäköisyydet:

-yksitoista

0,6 0,4

Ryhmä tarkoittaa:

X1 X2

android studio -oppaat aloittelijoille

-1 1,928108 2,010226

1 5,961004 6,015438

Lineaaristen erilaisten kertoimet:

LD1

X1 0,5646116

X2 0,5004175

Kuten voidaan nähdä, mallin oppimat luokka tarkoittaa (1.928108, 2.010226) luokalle -yksi ja (5.961004, 6.015438) luokalle +1 . Nämä keskiarvot ovat hyvin lähellä luokkavälineitä, joita käytimme näiden satunnaisten otosten tuottamiseen. Aikaisempi todennäköisyys ryhmälle +1 on parametrin estimaatti s . b vektori on lineaariset erotuskertoimet.

Käytämme nyt yllä olevaa mallia ennustamaan luokkatunnisteet samoille tiedoille.

# Luokan ennustaminen kullekin näytteelle yllä olevassa tietojoukossa käyttämällä LDA-mallia 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))

Yllä olevassa kuvassa purppuranäytteet ovat luokasta +1 jotka luokiteltiin oikein LDA-mallilla. Vastaavasti punaiset näytteet kuuluvat luokkaan -yksi jotka luokiteltiin oikein. Siniset ovat luokalta +1 mutta luokiteltiin väärin -yksi . Vihreät ovat luokassa -yksi jotka luokiteltiin väärin +1 . Väärä luokittelu tapahtuu, koska nämä näytteet ovat lähempänä toista luokan keskiarvoa (keskusta) kuin niiden todellinen luokan keskiarvo.

Tämä tuo meidät tämän artikkelin loppuun, tutustu Edureka, luotettava verkko-oppimisyritys, jolla on yli 250 000 tyytyväisen oppijan verkosto, joka levisi ympäri maailmaa. Edurekan Data Analytics with R -koulutus auttaa sinua hankkimaan asiantuntemusta R-ohjelmoinnista, tietojen käsittelystä, tutkivasta tietojen analysoinnista, tietojen visualisoinnista, tiedon louhinnasta, regressiosta, mielipiteiden analysoinnista ja R Studion käytöstä tosielämän tapaustutkimuksissa vähittäiskaupassa, sosiaalisessa mediassa.

Onko sinulla kysymys meille? Mainitse se tämän artikkelin kommenttiosassa ja otamme sinuun yhteyttä mahdollisimman pian.