Jak implementovat lineární diskriminační analýzu v R?



Tento článek vám řekne, co je lineární diskriminační analýza, a také vám poskytne podrobnou ukázku pomocí programovacího jazyka R.

Lineární diskriminační analýza je velmi populární technika strojového učení, která se používá k řešení klasifikačních problémů. V tomto článku se pokusíme porozumět intuici a matematice za touto technikou. Příklad implementace LDA v R je také k dispozici.

Pojďme tedy začít





Předpoklad lineární diskriminační analýzy

Lineární diskriminační analýza je založena na následujících předpokladech:

  • Závislá proměnná Y je diskrétní. V tomto článku budeme předpokládat, že závislá proměnná je binární a má hodnoty třídy {+1, -1} . Pravděpodobnost vzorku patřícího do třídy +1 , tj P (Y = +1) = str . Proto pravděpodobnost vzorku patřícího do třídy -jeden je 1-p .



  • Nezávislá proměnná X pocházejí z gaussovských distribucí. Průměr gaussovského rozdělení závisí na označení třídy Y . tj. pokud Y i = +1 , pak průměr z X i je & # 120583 +1 jinak to je & # 120583 -jeden . Rozptyl & # 120590 2 je stejný pro obě třídy. Matematicky vzato, X | (Y = +1) ~ N (& # 120583 +1 , & # 120590 2 ) a X | (Y = -1) ~ N (& # 120583 -jeden , & # 120590 2 ) , kde N označuje normální rozdělení.

S touto informací je možné vytvořit společnou distribuci P (X, Y) pro nezávislou a závislou proměnnou. Proto LDA patří do třídy Generativní modely klasifikátoru . Blízce příbuzným generativním klasifikátorem je Kvadratická diskriminační analýza (QDA). Je založen na všech stejných předpokladech LDA, kromě toho, že rozdíly v třídách se liší.

Pojďme pokračovat v článku Lineární diskriminační analýza a uvidíme

Intuice

Zvažte podmíněné gaussovské rozdělení třídy pro X vzhledem k třídě Y . Níže uvedený obrázek ukazuje hustotní funkce distribucí. Na tomto obrázku, pokud Y = +1 , pak průměr z X je 10 a pokud Y = -1 , průměr je 2. Rozptyl je v obou případech 2.

intuice - Analýza lineární diskriminace - Edureka

Nyní předpokládejme novou hodnotu X je nám dána. Pojďme to označit jako X i . Úkolem je určit nejpravděpodobnější označení třídy X i , tj. Y i . Pro jednoduchost předpokládejme, že pravděpodobnost str vzorku patřícího do třídy +1 je stejné jako u příslušnosti ke třídě -jeden , tj. p = 0,5 .

Intuitivně má smysl říci, že pokud X i je blíže k & # 120583 +1 než to má být & # 120583 -jeden , pak je pravděpodobnější, že Y i = +1 . Formálněji Y i = +1 li:

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

Normalizace obou stran směrodatnou odchylkou:

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

Srovnání obou stran:

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

X i 2 / & # 120590 2 + & # 120583 +1 2 / & # 120590 2 - 2 x i & # 120583 +1 / & # 120590 2 i 2 / & # 120590 2 + & # 120583 -jeden 2 / & # 120590 2 - 2 x i & # 120583 -jeden / & # 120590 2

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

jak na to v Javě

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

Výše uvedený výraz má formu bx i + c> 0 kde b = -2 (& # 120583 -jeden - & # 120583 +1 ) / & # 120590 2 a c = (& # 120583 -jeden 2 / & # 120590 2 - & # 120583 +1 2 / & # 120590 2 ) .

Je zřejmé, že forma rovnice je lineární , odtud název Lineární diskriminační analýza.

Pojďme pokračovat v článku o lineární diskriminační analýze a uvidíme,

Matematický popis LDA

Matematické odvození výrazu pro LDA je založeno na pojmech jako Bayesovo pravidlo a Bayesův optimální klasifikátor . Zainteresovaným čtenářům se doporučuje, aby si o těchto konceptech přečetli více. Jeden způsob, jak odvodit výraz, lze nalézt tady .

Poskytneme výraz přímo pro náš konkrétní případ, kdy Y trvá dvě třídy {+1, -1} . Také rozšíříme intuici zobrazenou v předchozí části na obecný případ, kdy X může být vícerozměrný. Řekněme, že existují k nezávislé proměnné. V tomto případě třída znamená & # 120583 -jeden a & # 120583 +1 by byly vektory dimenzí k*1 a matice variance-kovarianční matice & # 120622 by byla maticí dimenzí k * k .

Funkce klasifikátoru je uvedena jako

Y = h (X) = znaménko (nar T X + c)

Kde,

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

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

jak obrátit řetězce v pythonu

Funkce znaménka se vrátí +1 pokud výraz b T x + c> 0 , jinak se vrátí -jeden . Přirozený logovací výraz v C je přítomen k přizpůsobení skutečnosti, že pravděpodobnosti tříd nemusí být stejné pro obě třídy, tj. str může být jakákoli hodnota mezi (0, 1), a ne pouze 0,5.

Naučení parametrů modelu

Vzhledem k datové sadě s N datové body (X jeden , Y jeden ), (X 2 , Y 2 ),… (X n , Y n ) , musíme odhadnout p, & # 120583 -jeden , & # 120583 +1 a & # 120622 . Volala technika statistického odhadu Odhad maximální pravděpodobnosti se používá k odhadu těchto parametrů. Výrazy pro výše uvedené parametry jsou uvedeny níže.

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

& # 120583 -jeden = (1 / N -jeden ) * & # 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

Kde N +1 = počet vzorků, kde y i = +1 a N -jeden = počet vzorků, kde y i = -1 .

S výše uvedenými výrazy je model LDA kompletní. Jeden může odhadnout parametry modelu pomocí výše uvedených výrazů a použít je ve funkci klasifikátoru k získání označení třídy jakékoli nové vstupní hodnoty nezávislé proměnné X .

Pojďme pokračovat v článku Lineární diskriminační analýza a uvidíme

Příklad v R.

Následující kód generuje fiktivní datovou sadu se dvěma nezávislými proměnnými X1 a X2 a závislá proměnná Y . Pro X1 a X2 , pomocí prostředků vygenerujeme vzorek ze dvou vícerozměrných Gaussových distribucí & # 120583 -jeden = (2, 2) a & # 120583 +1 = (6, 6) . 40% vzorků patří do třídy +1 a 60% patří do třídy -jeden , proto p = 0,4 .

library (ggplot2) library (MASS) library (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 vzorky pro třídu + 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)) 

Na výše uvedeném obrázku představují modré tečky vzorky z třídy +1 a červené představují vzorek ze třídy -jeden . Mezi vzorky existuje určité překrývání, tj. Třídy nelze úplně oddělit jednoduchou čarou. Jinými slovy, nejsou dokonalí lineárně oddělitelné .

Nyní pomocí výše uvedených dat trénujeme model LDA.

# Trénujte model LDA pomocí výše uvedené datové sady lda_model<- lda(Y ~ X1 + X2, data = dataset) #Print the LDA model lda_model 

Výstup:

Předchozí pravděpodobnosti skupin:

-jedenáct

0,6 0,4

Skupina znamená:

X1 X2

-1 1,928108 2,010226

1 5,96 1004 6,015438

Koeficienty lineárních diskriminátorů:

LD1

X1 0,5646116

X2 0,5004175

Jak je vidět, třídní prostředky naučené modelem jsou (1,928108, 2,010226) pro třídu -jeden a (5,961004; 6,015438) pro třídu +1 . Tyto prostředky jsou velmi blízké třídním prostředkům, které jsme použili ke generování těchto náhodných vzorků. Předchozí pravděpodobnost pro skupinu +1 je odhad parametru str . The b vektor je lineární diskriminační koeficienty.

Nyní použijeme výše uvedený model k předpovědi označení třídy pro stejná data.

jak vrhnout double na int
#Predicting the class for each sample in the above dataset using the 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))

Na výše uvedeném obrázku jsou fialové vzorky z třídy +1 které byly správně klasifikovány modelem LDA. Podobně jsou červené vzorky z třídy -jeden které byly správně klasifikovány. Modré jsou ze třídy +1 ale byly nesprávně klasifikovány jako -jeden . Zelené jsou z třídy -jeden které byly nesprávně klasifikovány jako +1 . K nesprávné klasifikaci dochází, protože tyto vzorky jsou blíže střední třídě (středu) druhé třídy než jejich skutečné střední třídě.

Tím se dostáváme na konec tohoto článku, podívejte se na Edureka, důvěryhodná online vzdělávací společnost se sítí více než 250 000 spokojených studentů po celém světě. Školení Edureka Data Analytics with R vám pomůže získat odborné znalosti v oblasti programování R, manipulace s daty, průzkumné analýzy dat, vizualizace dat, dolování dat, regrese, analýzy sentimentu a používání R Studio pro případové studie v reálném životě v oblasti maloobchodu a sociálních médií.

Máte na nás dotaz? Uveďte to prosím v sekci komentářů tohoto článku a my se vám ozveme co nejdříve.