La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Clase 11: knn,pca,lda,qda y pca+lda

Presentaciones similares


Presentación del tema: "Clase 11: knn,pca,lda,qda y pca+lda"— Transcripción de la presentación:

1 Clase 11: knn,pca,lda,qda y pca+lda
Rodrigo Assar, PhD L A B O R A T O R I O D E B I O I N F O R M Á T I C A Y M A T E M Á T I C A D E L G E N O M A - U N I V E R S I D A D D E C H I L E

2 knn: k-nearest neighbour
Se decide la clase de un dato segun la clase “mayoritaria cercana”: de los k datos de entrenamiento mas cercanos Cercanos: Respecto a las variables consideradas Con distancia euclideana

3 Paquete de R class en repositorio CRAN. Funcion knn(): References:
knn(train, test, cl, k = 1, l = 0, prob = FALSE, use.all = TRUE) References: Ripley, B. D. (1996) Pattern Recognition and Neural Networks. Cambridge. Venables, W. N. and Ripley, B. D. (2002) Modern Applied Statistics with S. Fourth edition. Springer. L A B O R A T O R I O D E B I O I N F O R M Á T I C A Y M A T E M Á T I C A D E L G E N O M A - U N I V E R S I D A D D E C H I L E

4 Ejemplo data(iris) cS <- as.character(Sp <- iris$Species)
train=sample(1:150, 75) test=setdiff(1:150,train) Resknn=knn(iris[train,1:4], iris[test,1:4], cS[train], k = 3, prob=TRUE) table(Resknn,iris[test,5]) Resknn setosa versicolor virginica setosa versicolor virginica L A B O R A T O R I O D E B I O I N F O R M Á T I C A Y M A T E M Á T I C A D E L G E N O M A - U N I V E R S I D A D D E C H I L E

5 Ejecutando print(Resknn)
[1] setosa setosa setosa setosa [5] setosa setosa setosa setosa [9] setosa setosa setosa setosa [13] setosa setosa setosa setosa [17] setosa setosa setosa setosa [21] setosa setosa setosa setosa [25] setosa setosa setosa setosa [29] versicolor versicolor versicolor versicolor [33] versicolor versicolor versicolor versicolor [37] virginica versicolor versicolor versicolor [41] versicolor versicolor versicolor versicolor …

6 Continuacion print(Resknn)
attr(,"prob") [1] [5] [9] [13] [17] [21] [25] [29] [33] [37] [41] …

7 Validando con leave-one-out
Se construye tantos predictores knn como datos de entrenamiento, en cada uno una de las filas no se considera (se usa como validacion). Finalmente se constroye el predictor por mayoria. Resknncv=knn.cv(iris[,1:4], cS, k = 3, prob=TRUE) table(Resknncv,iris[,5]) Resknncv setosa versicolor virginica setosa versicolor virginica prediccionRFvalid L A B O R A T O R I O D E B I O I N F O R M Á T I C A Y M A T E M Á T I C A D E L G E N O M A - U N I V E R S I D A D D E C H I L E

8 Comparemos ambos clasificadores
table(Resknncv[test],Resknn) Resknn setosa versicolor virginica setosa versicolor virginica

9 Otros clasificadores: LDA (An.Disc.Lineal), QDA, PCA+LDA
Package MASS: Funciones lda(), tambien qda() para cuadratico. Iris <- data.frame(rbind(iris3[,,1], iris3[,,2], iris3[,,3]),Sp = rep(c("s","c","v"), rep(50,3))) Reslda=lda(Sp~ ., Iris, prior = c(1,1,1)/3, subset = train) Prediccioneslda=predict(Reslda,Iris[test,])$class Resqda=qda(Sp~ ., Iris, prior = c(1,1,1)/3, subset = train) Prediccionesqda=predict(Resqda,Iris[test,])$class

10 Revisando resultados table(Prediccioneslda,Prediccionesqda) Prediccionesqda Prediccioneslda c s v c s v table(Prediccioneslda,Iris$Sp[valid]) Prediccioneslda c s v c s v table(Prediccionesqda,Iris$Sp[valid]) Prediccionesqda c s v c v

11 Comparemos con knn table(resknn,Prediccioneslda) Prediccioneslda
Para poder comparar, uniformamos los nombres de las clases: resknn=as.character(Resknn) resknn[resknn=="virginica"]=“v” resknn[resknn=="versicolor"]=“c” resknn[resknn=="setosa"]="s" table(resknn,Prediccionesqda) Prediccionesqda resknn c s v c s v table(resknn,Prediccioneslda) Prediccioneslda resknn c s v c

12 PCA+LDA Transformando la matriz de datos con PCA:
respca=princomp(~ ., data = iris[,1:4], cor = TRUE) Iris_pca <- data.frame(respca$scores,Sp = rep(c("s","c","v"), rep(50,3))) Aplicando lda a los nuevos datos: Reslda_pca=lda(Sp~ ., Iris_pca, prior = c(1,1,1)/3, subset = train) Prediccioneslda_pca=predict(Reslda_pca,Iris_pca[te st,])$class

13 Mirando resultados Respecto a realidad: Respecto a lda:
table(Prediccioneslda_pca,Iris$Sp[test]) Prediccioneslda_pca c s v c s v Respecto a lda: table(Prediccioneslda_pca,Iris$Sp[valid]) Prediccioneslda_pca c s v

14 Pero la gracia es reducir variables con el pca
Trabajando con las 3 primeras componentes: Iris_pca3 <- data.frame(respca$scores[,1:3],Sp = rep(c("s","c","v"), rep(50,3))) Reslda_pca3=lda(Sp~ ., Iris_pca3, prior = c(1,1,1)/3, subset = train) Prediccioneslda_pca3=predict(Reslda_pca3,Iris_pca3[t est,])$class

15 Mirando resultados: perdemos
table(Prediccioneslda_pca3,Iris$Sp[valid]) Prediccioneslda_pca c s v c s v table(Prediccioneslda_pca3,Prediccioneslda_pca) Prediccioneslda_pca Prediccioneslda_pca c s v c v


Descargar ppt "Clase 11: knn,pca,lda,qda y pca+lda"

Presentaciones similares


Anuncios Google