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.
- Założenie liniowej analizy dyskryminacyjnej
- Intuicje
- Matematyczny opis LDA
- Nauka parametrów modelu
- Przykład w R
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.
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
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.