El objetivo principal de cualquier modelo de aprendizaje automático es predecir el resultado de los datos en tiempo real. Para verificar si el modelo desarrollado es lo suficientemente eficiente como para predecir el resultado de un punto de datos no visto, la evaluación del rendimiento del modelo de aprendizaje automático aplicado se vuelve muy necesaria. La técnica de validación cruzada K-fold es básicamente un método para volver a muestrear el conjunto de datos para evaluar un modelo de aprendizaje automático. En esta técnica, el parámetro K se refiere al número de subconjuntos diferentes en los que se dividirá el conjunto de datos dado. Además, los subconjuntos K-1 se usan para entrenar el modelo y los subconjuntos que quedan fuera se usan como un conjunto de validación.
Pasos involucrados en la validación cruzada de K-fold en R:
- Dividir el conjunto de datos en K subconjuntos aleatoriamente
- Para cada uno de los subconjuntos de puntos de datos desarrollados
- Trata ese subconjunto como el conjunto de validación
- Use todos los demás subconjuntos para fines de entrenamiento
- Entrenamiento del modelo y evaluación en el conjunto de validación o conjunto de prueba
- Calcular error de predicción
- Repita el paso anterior K veces, es decir, hasta que el modelo no esté entrenado y probado en todos los subconjuntos.
- Genere un error de predicción general tomando el promedio de los errores de predicción en cada caso
Para implementar todos los pasos involucrados en el método K-fold, el lenguaje R tiene bibliotecas ricas y paquetes de funciones incorporadas a través de las cuales se vuelve muy fácil llevar a cabo la tarea completa. El siguiente es el procedimiento paso a paso para implementar la técnica K-fold como un método de validación cruzada en modelos de aprendizaje automático de clasificación y regresión.
Implementar la técnica K-fold en la clasificación
Se prefieren los modelos de aprendizaje automático de clasificación cuando la variable de destino consta de valores categóricos como spam, no spam, verdadero o falso, etc. Aquí se utilizará el clasificador Naive Bayes como clasificador probabilístico para predecir la etiqueta de clase de la variable de destino.
Paso 1: cargar el conjunto de datos y otros paquetes necesarios
El primer requisito es configurar el entorno R cargando todas las bibliotecas y paquetes necesarios para llevar a cabo el proceso completo sin fallas. A continuación se muestra la implementación de este paso.
R
# loading required packages # package to perform data manipulation # and visualization library(tidyverse) # package to compute # cross - validation methods library(caret) # loading package to # import desired dataset library(ISLR)
Paso 2: Explorar el conjunto de datos
Para realizar manipulaciones en el conjunto de datos, es muy necesario inspeccionarlo primero. Dará una idea clara sobre la estructura, así como los diversos tipos de datos presentes en el conjunto de datos. Para ello, el conjunto de datos debe asignarse a una variable. A continuación se muestra el código para hacer lo mismo.
R
# assigning the complete dataset # Smarket to a variable dataset <- Smarket[complete.cases(Smarket), ] # display the dataset with details # like column name and its data type # along with values in each row glimpse(dataset) # checking values present # in the Direction column # of the dataset table(dataset$Direction)
Producción:
Filas: 1250
Columnas: 9
$Año <dbl> 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, …
$Lag1 <dbl> 0,381, 0,959, 1,032, -0,623, 0,614, 0,213, 1,392, -0,403, 0,027, 1,303, 0,287, -0,498, -0,189, 0,680, 0,701, -0,562, -1,546
$Lag2 <dbl> -0.192, 0.381, 0.959, 1.032, -0.623, 0.614, 0.213, 1.392, -0.403, 0.027, 1.303, 0.287, -0.498, -0.189, 0.680, 0.701, -0.562
$Lag3 <dbl> -2.624, -0.192, 0.381, 0.959, 1.032, -0.623, 0.614, 0.213, 1.392, -0.403, 0.027, 1.303, 0.287, -0.498, -0.189, 0.680, -0.701, -0.701
$Lag4 <dbl> -1.055, -2.624, -0.192, 0.381, 0.959, 1.032, -0.623, 0.614, 0.213, 1.392, -0.403, 0.027, 1.303, 0.287, -0.498, -0.189, 0.680, …
$Lag5 <dbl> 5.010, -1.055, -2.624, -0.192, 0.381, 0.959, 1.032, -0.623, 0.614, 0.213, 1.392, -0.403, 0.027, 1.303, 0.287, -0.498, -0.189, …
$Volumen <dbl> 1.19130, 1.29650, 1.41120, 1.27600, 1.20570, 1.34910, 1.44500, 1.40780, 1.16400, 1.23260, 1.30900, 1.25800, 1.09850, 101, …
$Hoy <dbl> 0.959, 1.032, -0.623, 0.614, 0.213, 1.392, -0.403, 0.027, 1.303, 0.287, -0.498, -0.189, 0.680, 0.701, -0.562, 0.546, -1.747, 0.546, -1.747,…
$Dirección <fct> Arriba, Arriba, Abajo, Arriba, Arriba, Arriba, Abajo, Arriba, Arriba, Arriba, Abajo, Abajo, Arriba, Arriba, Abajo, Arriba, Abajo, Arriba, Abajo, Abajo, Abajo, Abajo, Arriba , Abajo, Abajo, Arriba…
> tabla(conjunto de datos$Dirección)
abajo arriba
602 648
De acuerdo con la información anterior, el conjunto de datos contiene 250 filas y 9 columnas. El tipo de datos de las variables independientes es < dbl> , que proviene de double y significa el número de punto flotante de precisión doble. La variable objetivo es del tipo de datos <fct> y es deseable para un modelo de clasificación. Además, la variable objetivo tiene 2 resultados, a saber, Abajo y Arriba , donde la proporción de estas dos categorías es casi 1:1, es decir, están equilibradas. Todas las categorías de la variable objetivo deben estar en aproximadamente la misma proporción para hacer un modelo sin sesgo.
Para ello, existen muchas técnicas como:
- Muestreo descendente
- Muestreo ascendente
- Muestreo híbrido usando SMOTE y ROSE
Paso 3: Construcción del modelo con el algoritmo K-fold
En este paso, se define la función para establecer el valor del parámetro K y luego se desarrolla el modelo según los pasos involucrados en la técnica K-fold. A continuación se muestra la implementación.
R
# setting seed to generate a # reproducible random sampling set.seed(123) # define training control which # generates parameters that further # control how models are created train_control <- trainControl(method = "cv", number = 10) # building the model and # predicting the target variable # as per the Naive Bayes classifier model <- train(Direction~., data = dataset, trControl = train_control, method = "nb")
Paso 4: Evaluación de la precisión del modelo
Después del entrenamiento y la validación del modelo, es hora de calcular la precisión general del modelo. A continuación se muestra el código para generar un resumen del modelo.
R
# summarize results of the # model after calculating # prediction error in each case print(model)
Producción:
bayesiana ingenua
1250 muestras
8 predictor
2 clases: ‘Abajo’, ‘Arriba’
Sin procesamiento previo
Remuestreo: validación cruzada (10 veces)
Resumen de tamaños de muestra: 1125, 1125, 1125, 1126, 1125, 1124, …
Resultados de remuestreo a través de parámetros de ajuste:
usekernel Precisión Kappa
FALSO 0.9543996 0.9083514
VERDADERO 0.9711870 0.9422498
El parámetro de sintonización ‘fL’ se mantuvo constante en un valor de 0
El parámetro de ajuste ‘ajustar’ se mantuvo constante en un valor de 1
Se utilizó la precisión para seleccionar el modelo óptimo utilizando el valor más grande.
Los valores finales utilizados para el modelo fueron fL = 0, usekernel = TRUE y ajuste = 1.
Implementar la técnica K-fold en regresión
Los modelos de aprendizaje automático de regresión se utilizan para predecir la variable objetivo que es de naturaleza continua, como el precio de un producto básico o las ventas de una empresa. A continuación se muestran los pasos completos para implementar la técnica de validación cruzada K-fold en modelos de regresión.
Paso 1: Importación de todos los paquetes necesarios
Configure el entorno R importando todos los paquetes y bibliotecas necesarios. A continuación se muestra la implementación de este paso.
R
# loading required packages # package to perform data manipulation # and visualization library(tidyverse) # package to compute # cross - validation methods library(caret) # installing package to # import desired dataset install.packages("datarium")
Paso 2: carga e inspección del conjunto de datos
En este paso, el conjunto de datos deseado se carga en el entorno R. Después de eso, se imprimen algunas filas del conjunto de datos para comprender su estructura. A continuación se muestra el código para llevar a cabo esta tarea.
R
# loading the dataset data("marketing", package = "datarium") # inspecting the dataset head(marketing)
Producción:
youtube facebook newspaper sales 1 276.12 45.36 83.04 26.52 2 53.40 47.16 54.12 12.48 3 20.64 55.08 83.16 11.16 4 181.80 49.56 70.20 22.20 5 216.96 12.96 70.08 15.48 6 10.44 58.68 90.00 8.64
Paso 3: Construcción del modelo con el algoritmo K-fold
El valor del parámetro K se define en la función y el modelo se desarrolla de acuerdo con los pasos mencionados en el algoritmo de la técnica de validación cruzada K-fold. A continuación se muestra la implementación.
R
# setting seed to generate a # reproducible random sampling set.seed(125) # defining training control # as cross-validation and # value of K equal to 10 train_control <- trainControl(method = "cv", number = 10) # training the model by assigning sales column # as target variable and rest other column # as independent variable model <- train(sales ~., data = marketing, method = "lm", trControl = train_control)
Paso 4: evaluar el rendimiento del modelo
Como se mencionó en el algoritmo de K-fold, ese modelo se prueba contra cada pliegue (o subconjunto) único del conjunto de datos y, en cada caso, se calcula el error de predicción y, por último, la media de todos los errores de predicción se trata como el rendimiento final. puntuación del modelo. Entonces, a continuación se muestra el código para imprimir el puntaje final y el resumen general del modelo.
R
# printing model performance metrics # along with other details print(model)
Producción:
Regresión lineal
200 muestras
3 predictor
Sin procesamiento previo
Remuestreo: validación cruzada (10 veces)
Resumen de tamaños de muestra: 181, 180, 180, 179, 180, 180, …
Resultados de remuestreo:
RMSE R cuadrado MAE
2.027409 0.9041909 1.539866
El parámetro de sintonización ‘intercepción’ se mantuvo constante en un valor de VERDADERO
Ventajas de la validación cruzada K-fold
- Velocidad de cálculo rápida.
- Un método muy eficaz para estimar el error de predicción y la precisión de un modelo.
Desventajas de la validación cruzada K-fold
- Un valor más bajo de K conduce a un modelo sesgado y un valor más alto de K puede generar variabilidad en las métricas de rendimiento del modelo. Por lo tanto, es muy importante usar el valor correcto de K para el modelo (generalmente es deseable K = 5 y K = 10).
Publicación traducida automáticamente
Artículo escrito por RISHU_MISHRA y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA