Sunteți pe pagina 1din 2

Modelos de predicciones en R

Troya Jiménez Byron Troya

Introducción

Los modelos para predecir datos son muy empelados en el ambiente laboral, de estos modelos tenemos en
conocimiento dos, regresión lineal y redes neuronales estos mismos serán puesto a prueba en la siguiente
práctica. Para ello se hará uso del conjunto de datos iris incluido en las librerías de R, el conjunto de datos no
tendrá la variable de clase Species.

Desarrollo

Mediante el modelo de redes neuronales hemos realizado el entrenamiento del modelo basado en la validación
cruzada (k-fold) que consiste en tomar un parte de los datos de forma aleatoria para entrenamiento del modelo
y los demás para prueba.

indices.test=sample(nrow(iris1),nrow(iris1)/15)
validacion = iris1[indices.test, ]
entrenamiento = iris1[-indices.test, ]

para buscar nuestro modelo debemos tener en cuenta que librería usaremos para generar la red neuronal, en
esta ocasión será nnet que recibirá como parámetros un máximo de iteraciones, las variables que explicara a la
varible dependiente y el conjunto de datos para entrenamiento. Esta irá cambiando en cada iteración hasta
lograr encontrar el valor mas cercano a uno según la métrica Roc.

modelo <- nnet(Petal.Width ~ Sepal.Length + Sepal.Width + Petal.Length,


data=entrenamiento,rang=0.5,size=9,linout=T,decay=10e-2,maxit=2000)
pred = predict(modelo,validacion,rep = 1)
cor1=cor(entrenamiento$Petal.Width,modelo$fitted.values)
roc <- colMeans(colAUC(pred,validacion[,4], plotROC=TRUE))

se almacenará el modelo con el valor de ROC más cercano a uno. Cuenso ya se haya encontrado el modelo
podemos usarlo para predecir de la siguiente manera.

> resultadosRNA
Real Predicted Error
55 1.5 1.4719259 0.01871606
122 2.0 1.8159132 0.09204339
23 0.2 0.1225917 0.38704170
74 1.2 1.6174355 0.34786289
115 2.4 1.8706706 0.22055392
110 2.5 2.1891178 0.12435286
32 0.4 0.2283125 0.42921866
64 1.4 1.6350101 0.16786436
17 0.4 0.2060678 0.48483046
45 0.4 0.4260451 0.06511275

Ahora que tenemos nuestro modelo con la calificación mas alta, podemos usarlo para predecir. En nuestro
ejemplo solo usamos 10 datos pero podría ser todo el conjunto. Al ver los resultados de predicción vemos que
el modelo ha trabajo muy bien.

Para el modelo de regresión lineal usamos los mismo pasos del kfol, definido los datos pre prueba y
entrenamiento podemos contrario cvn que tarda demasiado, pero es normal.
indices.test=sample(nrow(iris1),nrow(iris1)/15)
validacionRL = iris1[indices.test, ]
entrenamientoRL = iris1[-indices.test, ]

Nuevamente almacenaremos el valor de la métrica Roc por cada iteración de tal forma que encuentre el mejor
modelo de predicción, esta forma de entrenamiento – prueba se debe ejecutar 14 veces y encontrar el mejor.

train_control = trainControl(method="cv", number=10)


modeloRL = train(Petal.Width~., data=entrenamientoRL, trControl=train_control, method="lm")
predict.rpartRL = predict(modeloRL,validacionRL,rep = 1)
rocRL = colMeans(colAUC(predict.rpartRL,validacionRL$Petal.Width, plotROC=TRUE))

una vez obtenido el mejor modelo y la mejor calificación de la métrica Roc, podemos poner a predecir nuestro
modelo
redict.rpartRL2 = predict(modeloRL,validacionRL2,rep = 1)
predict.rpartRL2 = predict(modeloRL2,iris1,rep = 1)
resultadosRL=data.frame(Real = validacionRL2$Petal.Width, Predicted = predict.rpartRL, Error =
abs(validacionRL2$Petal.Width - predict.rpartRL)/validacionRL2$Petal.Width)
resultadosRL

> resultadosRL
Real Predicted Error
1 1.4 0.22055063 0.84246383
43 0.4 0.24045757 0.39885607
36 0.1 0.06885976 0.31140237
105 0.4 2.12306239 4.30765597
14 0.5 0.11121717 0.77756565
78 2.4 1.66623249 0.30573646
34 1.9 0.29805589 0.84312848
123 2.5 2.30834890 0.07666044
38 0.2 0.28282513 0.41412565
35 1.5 0.22269851 0.85153433

Estos resultados son a primera vista mucho mas erróneos que los de modelo de redes neuronales.
Pero para ello podemos verlos en una grafica.

Si nos damos cuenta los datos están un poco mas dispersos en el modelo lineal esto debido a que los datos no
cumplen con los supuestos del modelo lineal. La métrica ROC nos indica que el modelo de red neuronal tiene
un valor de 0.93 por lo tanto es mejor que el de regresión lineal que indica un 0.92 en la métrica ROC.

S-ar putea să vă placă și