Liniowa i kwadratowa klasyfikacja
Jak to działa?
Podobnie jak w przypadku klasyfikatora Naiwny Bayes, interesuje nas modelowanie rozkładu $y|X$. Z twierdzenia Bayesa mamy
Log-szansa ma postać W przypadku Liniowej Analizy Dyskryminacyjnej (LDA, ang. Linear Discriminant Analysis), zakłada się, że A więc log szansę można wyrazić jako
Kilka prostych przekształceń i mamy Jak widzimy, szansa w przypadku metody LDA wyraża się liniową funkcją zmiennych $x_i$. Macierz współczynników $A$ i $c$ wyznacza się na bazie ocen $\hat\mu_k$ i $\hat\Sigma$.
Metoda kwadratowa różni się od liniowej tylko tym, że dla każdej klasy estymuje się osobną macierz kowariancji.
Gdy dla takiej gęstości policzymy log szansę to okaże się, że jest ona kwadratową funkcją $x_i$.
Gdy klas jest dużo, estymacja macierzy kowariancji o rozmiarach $pxp$ jest obarczona dużym błędem. Dlatego rozważa się też regularyzowaną estymację macierzy kowariancji w grupach, tak że
Jak to zrobić w R?
Ponieważ metoda LDA i QDA oparta jest o założenie wielowymiarowej normalności zmiennej $X$, dlatego sensownie jest ją stosować dla zmiennych ilościowych.
Poniżej przedstawimy przykład dla funkcji MASS::lda()
i MASS::qda()
.
library("MASS")
ml <- lda(Survived~Age+Fare, data=titanic)
ml
## Call:
## lda(Survived ~ Age + Fare, data = titanic)
##
## Prior probabilities of groups:
## 0 1
## 0.5938375 0.4061625
##
## Group means:
## Age Fare
## 0 30.62618 22.96546
## 1 28.34369 51.84321
##
## Coefficients of linear discriminants:
## LD1
## Age -0.02597135
## Fare 0.01907920
mq <- qda(Survived~Age+Fare, data=titanic)
mq
## Call:
## qda(Survived ~ Age + Fare, data = titanic)
##
## Prior probabilities of groups:
## 0 1
## 0.5938375 0.4061625
##
## Group means:
## Age Fare
## 0 30.62618 22.96546
## 1 28.34369 51.84321
Można też wykorzystać funkcję predict()
aby wyznaczać predykcje dla nowych wartości $X$.