Logo Studenta

Dataset Artificial Balanceado

¡Estudia con miles de materiales!

Vista previa del material en texto

Práctica: 
 
Desarrollo 
 
1. Crear un dataset artificial balanceado a partir de datos generados aleatoriamente 
con distribución normal de dimensiones [100,3]. Generar los primeros 50 patrones 
(perteneciente a la clase 1) con una distribución normal con media=8 y SD=2. Generar 
los 50 patrones restantes (perteneciente a la clase 0) con una distribución normal con 
media=11 y SD=2. 
 
set.seed(5086) 
X1<-c(rnorm(50,8,2),rnorm(50,11,2)) 
X2<-c(rnorm(50,8,2),rnorm(50,11,2)) 
clase<-c(rep(1,50),rep(0,50)) 
 
2. Almacenar el dataset en un data.frame con el nombre “dataset_all”. 
 
dataset_all <- data.frame(X1,X2,clase) 
save(dataset_all, file="dataset_all.Rdata") 
 
3. Graficar el dataset del punto anterior. Los patrones de la clase 1 con color rojo y los 
patrones de la clase 0 con azul. Colocar a la gráfica el título “Dataset All”. Etiquetar 
los ejes de la gráfica con “X1” y “X2”. Guardar la gráfica en formato PDF con el 
nombre “Grafica_dataset_all.pdf”. 
 
pdf("Grafica_dataset_all.pdf") 
plot(1:20,1:20, type="n", main="Dataset All",xlab="X1",ylab="X2") 
points(X1[1:50],X2[1:50],col="red") 
points(X1[51:100],X2[51:100],col="blue") 
dev.off() 
 
 
 
 
4. Aplicar al data frame el método Hold-Out con un 70% para entrenar y el resto 
para prueba. 
 
set.seed(5086) 
indice.test1<-sample(1:50,15) 
indice.test0<-sample(51:100,15) 
X1tr<-X1[-c(indice.test1,indice.test0)] 
X2tr<-X2[-c(indice.test1,indice.test0)] 
X1test<-X1[c(indice.test1,indice.test0)] 
X2test<-X2[c(indice.test1,indice.test0)] 
clase_tr<-clase[-c(indice.test1,indice.test0)] 
clase_test<-clase[c(indice.test1,indice.test0)] 
dataset_train<-data.frame(X1tr,X2tr,clase_tr) 
dataset_test<-cbind(X1test,X2test,clase_test) 
 
5. Guardar los datasets de entrenamiento y test con el nombre “dataset_train.Rdata” 
y “dataset_test.Rdata” respectivamente. 
 
save(dataset_train,file="Dataset_train.Rdata") 
save(dataset_test,file="Dataset_test.Rdata") 
 
 
6. Graficar el dataset de test (dataset_test.Rdata). Los patrones de la clase 1 con color 
rojo y los patrones de la clase 0 con azul. Colocar a la gráfica el título “Dataset Test”. 
Etiquetar los ejes de la gráfica con “X1” y “X2”. Guardar la gráfica en formato PDF 
con el nombre “Grafica_dataset_test.pdf”. 
 
pdf("Grafica_dataset_test.pdf") 
plot(1:20,1:20,type="n", xlab='X1', ylab='X2') 
points(dataset_test[1:15,1],dataset_test[1:15,2],col="red") 
points(dataset_test[16:30,1],dataset_test[16:30,2],col="blue") 
dev.off() 
 
 
 
 
 
7. Entrenar 10 veces una red neuronal con el algoritmo Back Propagation, la red debe 
tener 10 neuronas en la capa oculta, además se debe usar la derivada de la función de 
error como criterio de parada (la suma de errores cuadráticos) con un umbral igual a 
0.01 (umbral para las derivadas parciales de la función de error como criterio de 
parada.), función de activación logística (logistic) tanto para la capa oculta como para 
la capa de salida y learning rate =0.001. 
 
library('neuralnet') 
red<- 
neuralnet(clase_tr~X1tr+X2tr,dataset_train,hidden=10,algorithm="backprop",threshold=0.
05,learningrate=0.001, rep=10) 
print(red) 
 
8. Graficar la red aprendida. 
 
plot(red,rep="best") 
 
 
 
2.741711733 
0.04952899695 
 Steps: 64430 
 
 
 
 
 
9. Realizar las predicciones sobre el conjunto de prueba. Calcular el error de 
Clasificación. 
 
pred<-compute(red,dataset_test[,-3]) 
round(pred$net.result) 
sum(round(pred$net.result)!=dataset_test[,3])/length(dataset_test[,3]) 
predicciones<-round(pred$net.result) 
 
10. Graficar las predicciones obtenidas. Los patrones de la clase 1 con color rojo y los 
patrones de la clase 0 con azul. Colocar a la gráfica el título “Predicciones Dataset”. 
Etiquetar los ejes de la gráfica con “X1” y “X2”. Guardar la gráfica en formato PDF 
con el nombre “Grafica_predicciones_dataset.pdf”. 
 
pdf("Grafica_predicciones_dataset.pdf") 
plot(1:20,1:20,type="n", xlab='X1', ylab='X2') 
points(dataset_test[predicciones==1,1],dataset_test[predicciones==1,2],col="red") 
points(dataset_test[predicciones==0,1],dataset_test[predicciones==0,2],col="blue") 
dev.off() 
 
 
 
11. Compare la gráfica “Grafica_predicciones_dataset.pdf” con 
“Grafica_dataset_test.pdf” y escriba sus conclusiones. 
 
Conclusiones: Al aplicar el algoritmo BackPropagation, vemos que el proceso iterativo es 
lento y en 8 de los 10 entrenamientos que realizamos no convergió, esto quiere decir, que 
una tasa de impulso igual a uno se opone a la convergencia del proceso de iteración pero al 
menos en esos 8 casos, diverge con elegancia. El ajuste de la tasa de aprendizaje en el caso 
no lineal es más difícil que en el caso lineal, porque no hay explosión rápida del proceso de 
iteración. 
 
 
 
 
 
Podemos concluir que el error es un mínimo global, ya que un error de aproximadamente 
0,05 es representativo del modelo. En las gráficas podemos observar que hay 4 puntos en 
los que difieren el Test y las Predicciones, por lo que deberíamos ajustar algunos 
paramétros para que las Predicciones cometan una menor tasa de error, de manera en que el 
número de puntos en los que difieran sea menor. Hemos demostrado que backpropagation 
puede exhibir un comportamiento muy inestable en algunas combinaciones de parámetros

Continuar navegando

Materiales relacionados

4 pag.
IAC2016-Practica7_ANN_respuesta

UNAM

User badge image

benitoelmasbonito

8 pag.
TP7_IAC2016_

UNAM

User badge image

said343

111 pag.
estadistica-basica-con-R

User badge image

Contenidos Diversos