La primera línea de código que aparece a continuación utiliza la función trainControl() para controlar los parámetros que se utilizan para el entrenamiento del algoritmo. El argumento del método especifica la técnica de remuestreo. En este caso, utilizamos la validación cruzada repetida. El argumento number especifica el número de pliegues o iteraciones de remuestreo, que en este caso es diez. El argumento repeat especifica el número de conjuntos completos de pliegues a calcular, que en este caso es cinco. Podemos echar un vistazo al conjunto completo de argumentos con el comando ?trainControl.
La segunda línea de código de abajo entrena el algoritmo de la red neural usando el algoritmo nnet. El argumento preProcess realiza la estandarización de las variables numéricas.
12345678train_params <- trainControl(method = "repeatedcv", number = 10, repeats=5)nnet_model <- train(train[,-6], train$approval_status, method = "nnet", trControl= train_params, preProcess=c("scale", "center"), na.action = na.omit)
{r}
El entrenamiento del algoritmo se ha completado, y el siguiente paso es la evaluación del modelo. Comencemos computando la precisión de la línea de base usando el código de abajo. Dado que la clase mayoritaria de las variables objetivo tiene una proporción de 0,68, la precisión de la línea base es del 68 por ciento.
1prop.table(table(train$approval_status)) #Precisión de la línea de base. {r}Salida:
12 No Sí 0.3166667 0.6833333Evaluemos ahora el rendimiento del modelo, que debería ser mejor que la precisión de la línea de base. Empezamos con los datos de entrenamiento, donde la primera línea de código genera predicciones sobre el tren. La segunda línea de código crea la matriz de confusión, y la tercera línea imprime la precisión del modelo en los datos de entrenamiento usando la matriz de confusión. La precisión del conjunto de datos de entrenamiento llega al 96 por ciento.
Repetiremos este proceso en los datos de la prueba, y la precisión será del 87,2 por ciento.
12345678910111213# Predicciones sobre el entrenamiento setnnet_predictions_train <-predict(nnet_model, train)# Matriz de confusión sobre el entrenamiento datatable(train$approval_status, nnet_predictions_train)(278+125)/nrow(train) #Predicciones sobre el test setnnet_predictions_test < -predict(nnet_model, test)# Matriz de confusión en la tabla de pruebas(test$approval_status, nnet_predictions_test)157/nrow(test){r}
Salida:
1234567891011121314151617# Matriz de confusión y exactitud en los datos del tren nnet_predictions_train No Sí No 125 8 Sí 9 278[1] 0,9595238# Matriz de confusión y exactitud en los datos de la prueba nnet_predictions_test No Sí No 42 15 Sí 8 115[1] 0,8722222