W R
używam lda
funkcji z biblioteki MASS
do klasyfikacji. Jak rozumiem LDA, wejście otrzyma etykietę , która maksymalizuje , prawda?
Ale kiedy pasuję do modelu, w którym lda
,
Edycja: aby odtworzyć wynik poniżej, najpierw uruchom:
library(MASS)
library(ISLR)
train = subset(Smarket, Year < 2005)
lda.fit = lda(Direction ~ Lag1 + Lag2, data = train)
> lda.fit Call: lda(Direction ~ Lag1 + Lag2, data = train) Prior probabilities of groups: Down Up 0.491984 0.508016 Group means: Lag1 Lag2 Down 0.04279022 0.03389409 Up -0.03954635 -0.03132544 Coefficients of linear discriminants: LD1 Lag1 -0.6420190 Lag2 -0.5135293
Rozumiem wszystkie informacje z powyższego wyjścia, ale jedno, co jest LD1
? Przeszukuję go w Internecie, czy jest to wynik liniowej dyskryminacji ? Co to jest i dlaczego go potrzebuję?
AKTUALIZACJA
Przeczytałem kilka postów (takich jak ten i ten ), a także przeszukuję sieć w poszukiwaniu DA, a teraz oto, co myślę o DA lub LDA.
Można go użyć do dokonania klasyfikacji, a gdy jest to celem, mogę zastosować podejście Bayesa, to znaczy obliczyć tylne dla każdej klasy , a następnie zaklasyfikować do klasy o najwyższej tylny. Dzięki takiemu podejściu nie muszę wcale szukać osób dyskryminujących, prawda?
Jak czytam w poście , DA lub przynajmniej LDA ma przede wszystkim na celu zmniejszenie wymiarów , dla klas i przestrzeni predyktora dim mogę rzutować dim na nową przestrzeń funkcji dim , to jest,
,można postrzegać jako przekształcony wektor cech z oryginalnego, a każdejest wektorem, na któryrzutowane jest.
Czy mam rację co do powyższych stwierdzeń? Jeśli tak, mam następujące pytania:
Co to jest dyskryminujący ? Czy każdy wpis w wektorze jest dyskryminujący? Lub ?
Jak dokonać klasyfikacji za pomocą dyskryminatorów?
źródło
discriminant analysis
w tej witrynie.Odpowiedzi:
Jeśli pomnożysz każdą wartość- 0,6420190 × + - 0,5135293 ×
LDA1
(pierwszego liniowego dyskryminatora) przez odpowiednie elementy zmiennych predykcyjnych i zsumujesz je ( + - 0,5135293 × ), otrzymasz wynik dla każdego respondenta. Ten wynik wraz z poprzednim służy do obliczenia prawdopodobieństwa a posterioriLag1
Lag2
przynależności do klasy (istnieje wiele różnych wzorów na to). Klasyfikacji dokonuje się na podstawie prawdopodobieństwa a posteriori, przy czym przewiduje się, że obserwacje będą należały do klasy, dla której mają największe prawdopodobieństwo.Poniższy wykres ilustruje związek między wynikiem, prawdopodobieństwem a posteriori i klasyfikacją dla zestawu danych użytego w pytaniu. Podstawowe wzorce zawsze zachowują się w przypadku dwóch grup LDA: istnieje mapowanie 1 do 1 między wynikami a prawdopodobieństwem a posteriori, a przewidywania są równoważne, jeśli są wykonane z prawdopodobieństw a posteriori lub wyników.
Odpowiedzi na pytania częściowe i inne komentarze
Chociaż LDA można wykorzystać do redukcji wymiarów, nie dzieje się tak w tym przykładzie. W przypadku dwóch grup powodem, dla którego wymagana jest tylko jedna ocena na obserwację, jest to, że wszystko jest potrzebne. Wynika to z faktu, że prawdopodobieństwo bycia w jednej grupie jest uzupełnieniem prawdopodobieństwa bycia w drugiej grupie (tj. Sumują się do 1). Możesz to zobaczyć na wykresie: wyniki poniżej -4 są klasyfikowane jako należące do grupy Down , a wyższe wyniki są przewidywane jako Up .
Czasami wektor wyników nazywa się a
discriminant function
. Czasami współczynniki nazywa się to. Nie jestem pewien, czy któreś z nich jest poprawne. Uważam, że MASSdiscriminant
odnosi się do współczynników.Funkcja pakietu MASS
lda
wytwarza współczynniki w inny sposób niż większość innych programów LDA. Alternatywne podejście oblicza jeden zestaw współczynników dla każdej grupy, a każdy zestaw współczynników ma punkt przecięcia. Po obliczeniu funkcji dyskryminacyjnej (wyników) przy użyciu tych współczynników, klasyfikacja opiera się na najwyższym wyniku i nie ma potrzeby obliczania prawdopodobieństw późniejszych w celu przewidzenia klasyfikacji. Umieściłem trochę kodu LDA w GitHub, który jest modyfikacjąMASS
funkcji, ale daje te wygodniejsze współczynniki (pakiet jest wywoływanyDisplayr/flipMultivariates
, a jeśli utworzysz obiekt za pomocąLDA
, możesz wyodrębnić współczynniki za pomocąobj$original$discriminant.functions
).Umieściłem R dla kodu wszystkie koncepcje w tym poście tutaj .
library(MASS) getAnywhere("predict.lda")
źródło
I'm not clear on whether either [word use] is correct
„funkcja dyskryminująca”, czyli „dyskryminująca”, jest wyodrębnioną zmienną - zmienną, wymiarem. Charakteryzuje się zatem zarówno współczynnikami (wagami) do oceny na podstawie zmiennych wejściowych, jak i wartościami wyników. Dokładnie jak PC w PCA. Tak więc „współczynniki dyskryminujące” i „wyniki dyskryminujące” są właściwym zastosowaniem.Teoria leżąca u podstaw tej funkcji to „Metoda Fishera do rozróżniania wielu populacji”. Polecam rozdział 11.6 w zastosowanej wielowymiarowej analizie statystycznej (ISBN: 9780134995397) w celach informacyjnych.
źródło