# Cetvrti cas # Kao i prethodnih puta potrebni su nam paketi ISLR(gde se nalazi baza Smarket), # MASS (sadrzi funkcije za "lda" i "qda") library(ISLR) library(MASS) # OVDE SE NALAZI KNN- k najblizih suseda. library(class) # LDA - linearna diskriminatorna analiza. attach(Smarket) names(Smarket) # Poziv u slucaju LDA, se skoro pa ne razlikuje od poziva koji smo koristili u funkcijama lm() i glm(). model.lda=lda(Direction~Lag1+Lag2, subset=Year<2005) # S tim sto vise ovde summary(model) ne vraca to sto bismo mi ocekivali. summary(model.lda) # Najslicniji izlaz dobijamo ako bas pozovemo "model.lda" model.lda # Funkcija predict funkcionise skroz identicno kao i ranije. lda.pred=predict(model.lda, Smarket[Year==2005,]) # I vidimo da je u ovom slucaju oko 56% dobrih procena. table(lda.pred$class, Smarket[Year==2005,]$Direction) mean(lda.pred$class==Smarket[Year==2005,]$Direction) plot(model.lda) # Nesto bas slicno pokrecemo za QDA - kvadratnu diskriminatornu analizu. # Bukvalno svako lda zamenimo sa qda. model.qda=qda(Direction~Lag1+Lag2, subset=Year<2005) summary(model.qda) model.qda qda.pred=predict(model.qda, Smarket[Year==2005,]) # I vidimo da je ovde dosta bolje sto se predikcija tice, cak 60% je pogodjeno tacno, sto je veliki # uspeh racunajuci da procenjujemo Kretanje cena na berzi. table(qda.pred$class, Smarket[Year==2005,]$Direction) mean(qda.pred$class==Smarket[Year==2005,]$Direction) # KNN - k najblizih suseda # Za nju nam je potrebno prvo da napravimo odgovarajuce matrice. # Matrica koja sadrzi skup za poducavanje u odgovarajucim prediktorima (lag1 i lag2). obucavanje.X=cbind(Lag1, Lag2)[Year<2005,] # Matrica koja sadrzi kontrolni skup u odgovarajucim prediktorima. kontrolni.X=cbind(Lag1, Lag2)[Year==2005,] # Kategorije koje postoje u skupu za obucavanje. obucavanje.dir=Direction[Year<2005] # I sam broj k - koliko najblizih suseda gledamo. k=1 ?knn # Metodom "probaj pa sta ispadne" mozemo da vidimo da se najbolji rezultat dobije za vrednost k=2, 56% je pogodjeno tacno. # ali to je i dalje slabije od QDA metode, tako da mozemo da zakljucimo da u slucaju ovog problema najbolju ocenu # je dala metoda kvadratne diskrimatorne analize. model.knn=knn(obucavanje.X, kontrolni.X, obucavanje.dir, k=2) plot(model.knn) summary(model.knn) mean(model.knn==Smarket[Year==2005,]$Direction) table(model.knn, Smarket[Year==2005,]$Direction)