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.2 Grid Search
10.2.1 Grid Search en Python
Exercise 10.12
No puedo importarGridSearchCV
en mi ordenador ¿Alguna otra opción para este paquete?
Depende del sistema y la versión del paquete, pero intenta reemplazar:
from sklearn.model_selection import GridSearchCV
por:
from sklearn.cross_validation import GridSearchCV
Exercise 10.13
¿Qué es este parámetro de penalización C?El parámetro de penalización C es un parámetro de regularización que puede permitirle hacer dos cosas:
- reducir el sobreajuste,
- anular valores atípicos.
Es igual a \(\frac{1}{\lambda}\) en donde \(\lambda\) es el parámetro de regularización clásico usado en las Regresiones Ridge, Lasso, Elastic Net…
Exercise 10.14
¿Se puede extender Grid Search a ANN también?Sí, la búsqueda en cuadrícula también es posible en ANN. Lo cubrimos en nuestro curso Deep Learning de la A a la Z.
Exercise 10.15
¿Cómo sabemos qué valores debemos probar en Grid Search?Un buen comienzo es tomar valores predeterminados y experimentar con valores a su alrededor. Por ejemplo, el valor predeterminado del parámetro de penalización C es 10, por lo que algunos valores relevantes para probar serían 1, 10 y 100.
Exercise 10.16
En esta sección de Python, estamos ajustando parámetros en Grid Search para producir la precisión óptima en el conjunto de entrenamiento con k-Fold Cross Validation? ¿Cómo podemos asegurarnos de que estos parámetros serán los más óptimos cuando trabajemos con el equipo de prueba?Estos parámetros serán los más óptimos cuando se trabaja con el conjunto de prueba porque demostraron ser óptimos en diez conjuntos de prueba diferentes (los diez conjuntos de prueba se pliegan en el proceso de validación cruzada).
10.2.2 Grid Search en R
Exercise 10.17
¿Cómo usar el valor C y sigma calculado en Grid Search?Una vez que haya encontrado el valor C y sigma óptimo, puede poner estos valores en los argumentos del modelo SVM y obtener una precisión óptima para su modelo.
Exercise 10.18
¿Cuáles son las ventajas y desventajas de usar el paquete caret en R?Ventajas de caret:
- Al hacer Grid Search, no tenemos que elegir valores de hiperparámetros para probarlo usted mismo, encontrará algunos óptimos para usted.
- Tiene muchas otras funciones además de ser un conveniente contenedor de métodos de aprendizaje automático.
- Tiene su propia división en conjuntos de entrenamiento y prueba y contiene una función que crea división con series de tiempo.
- También tiene herramientas para la limpieza de datos, y todas tienen una implementación muy eficiente.
- Si lo usamos para ajustar un modelo, puede hacer bootstrapping de los datos para mejorar el modelo.
Desventajas:
- Es un paquete grande y ocupa una parte de la memoria.
- La función de bootstrapping es muy intensiva en computación.
En conclusión, caret es un paquete R increíble para la selección de modelos.
Exercise 10.19
¿Qué es este valor de Kappa que vemos en R?Ese es el kappa de Cohen. Es una métrica que se usa para evaluar el desempeño de un clasificador y también ayuda a evaluar los clasificadores entre ellos. Para obtener más información, consulta esta buena referencia.
Exercise 10.20
Al hacer Grid Search en R, ¿no podemos saber si los datos son linealmente separables o no, como en Python?Claro, al igual que en Python, puede ver qué Kernel SVM le brinda la mejor precisión usando Grid Search con signo de intercalación. Si el Kernel es lineal, entonces sus datos probablemente sean linealmente separables. Y si el Kernel no es lineal, es probable que los datos no se puedan separar linealmente.
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.