Jak zaimplementować liniową analizę dyskryminacyjną w R?



W tym artykule dowiesz się, czym jest liniowa analiza dyskryminacyjna, a także przedstawimy szczegółową demonstrację przy użyciu języka programowania R.

Liniowa analiza dyskryminacyjna to bardzo popularna technika uczenia maszynowego, która służy do rozwiązywania problemów klasyfikacyjnych. W tym artykule postaramy się zrozumieć intuicję i matematykę stojącą za tą techniką. Przykład wdrożenia LDA w R jest również przewidziane.

A więc zacznijmy





jak to zrobić z mocą w java

Założenie liniowej analizy dyskryminacyjnej

Liniowa analiza dyskryminacyjna opiera się na następujących założeniach:

  • Zmienna zależna Y jest dyskretny. W tym artykule założymy, że zmienna zależna jest binarna i przyjmuje wartości klasowe {+1, -1} . Prawdopodobieństwo przynależności próbki do klasy +1 , tj P (Y = +1) = p . Dlatego prawdopodobieństwo przynależności próbki do klasy -jeden jest 1-p .



  • Zmienna (-e) niezależna (-e) X pochodzą z rozkładów Gaussa. Średnia rozkładu Gaussa zależy od etykiety klasy Y . tj. jeśli Y ja = +1 , a następnie średnia X ja jest & # 120583 +1 inaczej jest & # 120583 -jeden . Wariancja & # 120590 2 jest taki sam dla obu klas. Mówiąc matematycznie, X | (Y = +1) ~ N (& # 120583 +1 , & # 120590 2 ) i X | (Y = -1) ~ N (& # 120583 -jeden , & # 120590 2 ) , gdzie N oznacza rozkład normalny.

Dzięki tym informacjom można zbudować wspólną dystrybucję P (X, Y) dla zmiennej niezależnej i zależnej. Dlatego LDA należy do klasy Generatywne modele klasyfikatorów . Blisko spokrewnionym klasyfikatorem generatywnym jest kwadratowa analiza dyskryminacyjna (QDA). Opiera się na tych samych założeniach LDA, z wyjątkiem tego, że wariancje klas są różne.

Kontynuujmy artykuł Linear Discriminant Analysis i zobaczmy

Intuicja

Rozważ klasowe warunkowe rozkłady Gaussa dla X biorąc pod uwagę klasę Y . Poniższy rysunek przedstawia funkcje gęstości rozkładów. Na tej figurze, jeśli Y = +1 , a następnie średnia X wynosi 10 i jeśli Y = -1 , średnia wynosi 2. W obu przypadkach wariancja wynosi 2.

intuicja - Liniowa Analiza Dyskryminacji - Edureka

Teraz przypuśćmy nową wartość X jest nam dane. Oznaczmy to tylko jako x ja . Zadanie polega na określeniu najbardziej prawdopodobnej etykiety klasy x ja czyli Y ja . Dla uproszczenia załóżmy, że prawdopodobieństwo p próbki należącej do klasy +1 jest tym samym, co przynależność do klasy -jeden czyli p = 0,5 .

Intuicyjnie warto powiedzieć, że jeśli x ja jest bliżej & # 120583 +1 niż jest & # 120583 -jeden , to jest bardziej prawdopodobne Y ja = +1 . Bardziej formalnie, Y ja = +1 Jeśli:

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

Normalizowanie obu stron przez odchylenie standardowe:

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

Kwadrat z obu stron:

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

x ja 2 / & # 120590 2 + & # 120583 +1 2 / & # 120590 2 - 2 x ja & # 120583 +1 / & # 120590 2 ja 2 / & # 120590 2 + & # 120583 -jeden 2 / & # 120590 2 - 2 x ja & # 120583 -jeden / & # 120590 2

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

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

Powyższe wyrażenie ma postać bx ja + c> 0 gdzie b = -2 (& # 120583 -jeden - & # 120583 +1 ) / & # 120590 2 i c = (& # 120583 -jeden 2 / & # 120590 2 - & # 120583 +1 2 / & # 120590 2 ) .

Widać, że równanie ma postać liniowy stąd nazwa Linear Discriminant Analysis.

Kontynuujmy artykuł Linear Discriminant Analysis i zobaczmy,

użycie iteratora w java

Matematyczny opis LDA

Matematyczne wyprowadzenie wyrażenia dla LDA opiera się na pojęciach takich jak Reguła Bayesa i Optymalny klasyfikator Bayesa . Zachęcamy zainteresowanych czytelników do zapoznania się z tymi koncepcjami. Można znaleźć jeden sposób wyprowadzenia wyrażenia tutaj .

Podamy wyrażenie bezpośrednio dla naszego konkretnego przypadku, w którym Y ma dwie lekcje {+1, -1} . Rozszerzymy również intuicję przedstawioną w poprzedniej sekcji na ogólny przypadek, w którym X może być wielowymiarowy. Powiedzmy, że są do niezależne zmienne. W tym przypadku klasa oznacza & # 120583 -jeden i & # 120583 +1 byłyby wektorami wymiarów k * 1 i macierz wariancji-kowariancji & # 120622 byłaby macierzą wymiarów k * k .

Funkcja klasyfikatora jest podana jako

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

Gdzie,

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}

Funkcja znaku zwraca +1 jeśli wyrażenie b T x + c> 0 , w przeciwnym razie wraca -jeden . Termin dziennika naturalnego w do jest obecny, aby skorygować fakt, że prawdopodobieństwa klas nie muszą być równe dla obu klas, tj. p może mieć dowolną wartość z przedziału (0, 1), a nie tylko 0,5.

Nauka parametrów modelu

Biorąc pod uwagę zbiór danych z N punkty danych (x jeden , Y jeden ), (x 2 , Y 2 ),… (X n , Y n ) musimy oszacować p & # 120583 -jeden , & # 120583 +1 i & # 120622 . Technika estymacji statystycznej o nazwie Szacowanie maksymalnego prawdopodobieństwa służy do oszacowania tych parametrów. Wyrażenia dla powyższych parametrów podano poniżej.

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

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

p = N. +1 / N

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

Gdzie N +1 = liczba próbek, gdzie y ja = +1 i N -jeden = liczba próbek, gdzie y ja = -1 .

Przy powyższych wyrażeniach model LDA jest kompletny. Można oszacować parametry modelu za pomocą powyższych wyrażeń i użyć ich w funkcji klasyfikatora, aby uzyskać etykietę klasy dowolnej nowej wartości wejściowej zmiennej niezależnej X .

Kontynuujmy artykuł Linear Discriminant Analysis i zobaczmy

Przykład w R

Poniższy kod generuje fikcyjny zestaw danych z dwiema niezależnymi zmiennymi X1 i X2 i zmienną zależną Y . Dla X1 i X2 , wygenerujemy próbkę z dwóch wielowymiarowych rozkładów gaussowskich ze średnimi & # 120583 -jeden = (2, 2) i & # 120583 +1 = (6, 6) . 40% próbek należy do klasy +1 a 60% należy do klasy -jeden , w związku z tym p = 0,4 .

biblioteka (ggplot2) biblioteka (MASS) biblioteka (mvtnorm) # Macierz kowariancji wariancji dla losowej dwuwymiarowej próbki gaussowskiej var_covar = macierz (dane = c (1,5, 0,3, 0,3, 1,5), nrow = 2) # Losowe dwuwymiarowe próbki gaussowskie dla klasy + 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)) 

Na powyższym rysunku niebieskie kropki reprezentują próbki z klasy +1 a czerwone reprezentują próbkę z klasy -jeden . Próbki w pewnym stopniu się pokrywają, tj. Klas nie można całkowicie rozdzielić prostą linią. Innymi słowy, nie są doskonałe rozłączalny liniowo .

Teraz wytrenujemy model LDA, korzystając z powyższych danych.

# Trenuj model LDA, korzystając z powyższego zestawu danych lda_model<- lda(Y ~ X1 + X2, data = dataset) #Print the LDA model lda_model 

Wynik:

Wcześniejsze prawdopodobieństwa grup:

-jedenaście

0,6 0,4

Grupa oznacza:

X1 X2

-1 1,928108 2,010226

co to jest przeciążanie metod i przesłanianie metod

1 5,961004 6,015438

Współczynniki dyskryminatorów liniowych:

LD1

X1 0,5646116

X2 0,5004175

Jak widać, klasowe środki wyuczone przez model to (1,928108, 2,010226) dla klasy -jeden i (5.961004, 6.015438) dla klasy +1 . Te średnie są bardzo zbliżone do średnich klas, których użyliśmy do wygenerowania tych losowych próbek. Wcześniejsze prawdopodobieństwo dla grupy +1 to oszacowanie parametru p . Plik b wektor to liniowe współczynniki dyskryminacyjne.

Będziemy teraz używać powyższego modelu do przewidywania etykiet klas dla tych samych danych.

# Przewidywanie klasy dla każdej próbki w powyższym zbiorze danych przy użyciu modelu 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))

Na powyższym rysunku fioletowe próbki pochodzą z klasy +1 które zostały poprawnie sklasyfikowane przez model LDA. Podobnie czerwone próbki pochodzą z klasy -jeden które zostały poprawnie sklasyfikowane. Niebieskie są z klasy +1 ale zostały nieprawidłowo sklasyfikowane jako -jeden . Zielone są z klasy -jeden które zostały błędnie sklasyfikowane jako +1 . Występują błędne klasyfikacje, ponieważ te próbki są bliżej średniej drugiej klasy (centrum) niż ich rzeczywista średnia klasowa.

To prowadzi nas do końca tego artykułu, zapoznaj się z autorstwa Edureka, zaufanej firmy zajmującej się edukacją online, z siecią ponad 250 000 zadowolonych uczniów rozsianych po całym świecie. Szkolenie Edureka z zakresu analizy danych i języka R pomoże Ci zdobyć wiedzę w zakresie programowania R, manipulacji danymi, eksploracyjnej analizy danych, wizualizacji danych, eksploracji danych, regresji, analizy nastrojów oraz wykorzystania R Studio do analizy przypadków w handlu detalicznym i mediach społecznościowych.

Masz do nas pytanie? Wspomnij o tym w sekcji komentarzy w tym artykule, a my skontaktujemy się z Tobą tak szybko, jak to możliwe.