Parte 10 Selección de Modelos y Boosting

10.1 Validación Cruzada k-Fold Cross Validation

10.1.1 Intuición de la validación cruzada k-fold

Exercise 10.1

¿Qué es sesgo / varianza bajo / alto?

Estos conceptos son importantes para comprender la validación cruzada de k-Fold:

  • Bajo Sesgo es cuando las predicciones del modelo están muy cerca de los valores reales.
  • Alto Sesgo es cuando las predicciones del su modelo están lejos de los valores reales.
  • Baja varianza: cuando ejecutamos el modelo varias veces, las diferentes predicciones de sus puntos de observación no variarán mucho.
  • Alta varianza: cuando ejecutamos el modelo varias veces, las diferentes predicciones de sus puntos de observación variarán mucho.

Exercise 10.2

¿La validación cruzada de k-Fold mejora el modelo o es solo un método de validación?

La validación cruzada de k-Fold se utiliza para evaluar su modelo. No necesariamente mejora el modelo, pero mejora la comprensión del modelo. Sin embargo, puedes usarlo para mejorar el modelo combinándolo con algunas técnicas de ajuste de parámetros como la búsqueda de cuadrícula (siguiente sección).

Exercise 10.3

¿Cuál es la diferencia entre un parámetro y un hiperparámetro?

Los hiperparámetros y los parámetros son muy similares pero no exactamente lo mismo. Un parámetro es una variable configurable que es interna de un modelo cuyo valor se puede estimar a partir de los datos. Un hiperparámetro es un valor configurable externo a un modelo cuyo valor no puede ser determinado por los datos, y que estamos tratando de optimizar (encontrar el valor óptimo) a través de técnicas de ajuste de parámetros como la búsqueda aleatoria o la búsqueda de cuadrícula.

Exercise 10.4

¿Cuál es un valor bueno / el mejor de k para elegir al realizar la validación cruzada de k-Fold?

Normalmente se recomienda en torno a 10.

10.1.2 k-Fold Cross Validation en Python

Exercise 10.5

Me preguntaba si necesitábamos dividir los datos en X_train, y_train y X_test, y_test para aplicar el método de remuestreo (k-Fold) o ¿podemos aplicarlo directamente en X e y?

Puedes hacer ambas cosas. El buen método es:

  • Dividir el conjunto de datos en un conjunto de entrenamiento y un conjunto de prueba.
  • Realizar una validación cruzada de k-fold en el conjunto de entrenamiento.
  • Realizar la evaluación final de su modelo seleccionado en el conjunto de prueba.

Pero también podemos realizar k-fold Cross-Validation en todo el conjunto de datos (X, y).

Exercise 10.6

¿Qué nos dice exactamente esta desviación estándar?

La desviación estándar de la precisión del modelo simplemente muestra que la varianza de la precisión del modelo es del 6%. Esto significa que el modelo puede variar alrededor del 6%, lo que significa que si ejecuto mi modelo con datos nuevos y obtengo una precisión del 86%, sé que esto tiene una precisión del 80-92%. El sesgo y la precisión a veces no tienen una relación obvia, pero la mayoría de las veces puede detectar algún sesgo en la validación o prueba de su modelo cuando no funciona correctamente con datos nuevos.

Exercise 10.7

¿Cómo calcular el Recall, la Precision o el F1 Score a partir de la validación cruzada de k-Fold?

Puedes usar la librería de métricas de sklearn para esto. Aquí hay un link.

Exercise 10.8

¿Por qué solo Kernel SVM?

Podemos aplicar k-Fold Cross Validation a cualquier modelo de Machine Learning, y sería muy inteligente hacerlo para cada modelo que creemos Kernel SVM fue solo un ejemplo aquí para explicar cómo aplicar k-Fold Cross Validation.

10.1.3 k-Fold Cross Validation en R

Exercise 10.9

Usamos la matriz de confusión para determinar la precisión de cada pliegue (fold). ¿Qué usarías para los modelos de regresión? ¿R-cuadrado?

No, preferimos usar el MSE (error cuadrático medio), que mide la suma de las diferencias cuadráticas entre los resultados reales y las predicciones.

Exercise 10.10

El ejemplo de validación cruzada de k-Fold en R crea 10 modelos diferentes usando el conjunto de entrenamiento. ¿Cómo puede la media de 10 modelos diferentes evaluar el modelo original? ¿Necesitamos siquiera el modelo original?

A través de la validación cruzada de k-Fold, necesitamos estimar el “error imparcial” en el conjunto de datos de este modelo. La media es una buena estimación de cómo funcionará el modelo en el conjunto de datos. Luego, una vez que estamos convencidos de que el error promedio es aceptable, entrenamos el mismo modelo en todo el conjunto de datos.

Exercise 10.11

En R creamos pliegues a partir del conjunto de entrenamiento. ¿No deberíamos crearlos para todo el conjunto de datos? ¿Por qué solo el set de entrenamiento?

Solo usamos el set de entrenamiento para hacer nuestro modelo. El conjunto de prueba se considera algo que aún no tenemos con nosotros. (Aunque lo hagamos). Entonces usamos el conjunto de entrenamiento para hacer el mejor modelo y luego evaluamos su desempeño en el conjunto de prueba. Si ajustamos el rendimiento en el conjunto de prueba, entonces tenemos un modelo sesgado para funcionar bien en el conjunto de prueba, que es solo una instancia muy pequeña de todos los datos. Necesitamos que nuestro modelo funcione bien para los datos que aún no hemos visto.

10.3 XGBoost

10.3.1 Intuición del XGBoost

Exercise 10.21

¿Podrías proporcionar una buena fuente que explique cómo funciona XGBoost?

Recomendamos que leer primero sobre los algoritmos de gradient boosting mediante este excelente enlace. Entonces recomendamos ir al siguiente enlace para comprender XGBoost.

10.3.2 XGBoost en Python

Exercise 10.22

Tengo problemas para instalar XGBoost. ¿Cómo puedo instalarlo fácilmente?

Cuando se hizo la clase, no había ningún comando de instalación de conda. Pero ahora existe y es mucho más sencillo instalar el paquete XGBoost. Simplemente debe introduce el siguiente comando dentro de una terminal (o anaconda prompt para usuarios de Windows):

conda install -c conda-forge xgboost

Exercise 10.23

¿Se puede aplicar XGBoost tanto a la clasificación como a la regresión en Python?

Absolutamente. Para la clasificación, usa la clase XGBClassifier. Y para Regression, usa la clase XGBRegressor.

10.3.3 XGBoost en R

Exercise 10.24

En la sección de código de validación cruzada de k-Fold, línea 35, ¿no debería ser ‘training_fold’ en lugar de ‘training_set’?

¡En efecto! Gracias por darte cuenta. Por supuesto que es el pliegue del entrenamiento. Nuestras disculpas por el error. Por lo tanto, la sección de código correcta es:

classifier = xgboost(data = as.matrix(training_fold[-11]),
                     label = training_fold$Exited,
                     nrounds = 10)

Exercise 10.25

¿Se puede aplicar XGBoost tanto a la clasificación como a la regresión en R?

Absolutamente. Y usa la misma función xgboost() para Clasificación y Regresión.