Todo en machine learning es lograr equilibrio entre el sesgo y la varianza.
Paso a paso del proceso de k-fold cross-validation:
Primero: duplicar el conjunto de datos en subconjuntos de igual tamaño. Por ejemplo, si k=10, dividimos el conjunto de datos en 10 subconjuntos.
Segundo: tomar cada subconjunto y dividirlo en dos, unos datos para entrenamiento y otros para validación. Tomar el segundo subconjunto y hacer lo mismo, pero ahora, todos los datos que se utilizaron como validación en el cojunto previo deben ser para entrenamiento, y los de validación, deben ser para entrenamiento. Este proceso se repite hasta que todos los subconjuntos hayan sido divididos en entrenamiento y validación, y los datos de validación, nunca se repiten entre los diferentes subconjuntos.
Tercero: estimamos el modelo en los datos de entrenamiento y lo evaluamos utilizando los datos de validación.
Fialmente: se obtiene un valor promedio del desempeño del modelo en los datos de validación. Esta media nos proporciona una mejor aproximación del rendimiento del modelo, ya que el modelo ha sido evaluado en diferentes subconjuntos del conjunto de datos, en datos que no fueron utilizados para entrenamiento.
https://scikit-learn.org/stable/modules/cross_validation.html
https://www.tmwr.org/resampling.html
Para hacer validación cruzada necesitamos utilizar un objeto que contenga la información separada en diferentes cajas.
Tip
Cost_complexity: es una medida de la penalización que se aplica al árbol en función de su complejidad. Un valor más alto de cost_complexity implica una penalización más fuerte, lo que lleva a un árbol más pequeño y menos profundo.
Tree_depth (profundidad del árbol): se refiere a la longitud máxima del camino más largo desde la raíz hasta una hoja en un árbol de decisión.
Min_n (mínimo número de muestras para dividir un nodo): Min_n es un parámetro que controla el número mínimo de datos requeridas para dividir un nodo en un árbol de decisión.
Debemos especificar valors para los hiperparámetros que queremos ajustar.
Una vez se ha definido cuáles son los valores que queremos probar, se estima el modelo en los diferetes conjuntos de datos.
Filtrar los rultados para utilizar la combinación de hiperparámetros que mejor desempeño tuvo, y estimar el modelo.
tree_val <- fit_resamples(
final_tree, PYALC ~ .,
crossvalidation,
metrics= metric_set(accuracy))
tree_results_h <- tree_val |>
collect_metrics() |>
mutate(model="Árbol Sintonizado")
lm_model_val <- fit_resamples(
lm_model, PYALC ~ .,
crossvalidation,
metrics= metric_set(accuracy))
lm_results <- lm_model_val |>
collect_metrics() |>
mutate(model="Regresión lineal")
tree_spec_val <- fit_resamples(
tree_spec, PYALC ~ .,
crossvalidation,
metrics= metric_set(accuracy))
tree_results <- tree_spec_val|>
collect_metrics() |>
mutate(model="Árbol")
rbind(lm_results, tree_results, tree_results_h) |>
select(model, mean)
Los árboles de decisión sufren de muchos problemas, en especial de sobreajuste. Esto se puede entender como un problema de varianza, y por lo tanto se pueden hacer cosas para minimizarlo. Por ejemplo, podríamos construir muchos árboles de decisión y promediar sus predicciones. Este es el concepto detrás de los Random Forests.
Especificar un modelo
Estimar un modelo
Obtener sus predicciones
Estos dos conceptos son cruciales para entender el equilibrio entre la complejidad del modelo y su capacidad para generalizar a nuevos datos.
Sesgo (Bias): a. Definición: El sesgo es la diferencia entre la predicción promedio de nuestro modelo y el valor verdadero que intentamos predecir.El sesgo, en términos estadísticos, se refiere a la diferencia sistemática entre la esperanza (o promedio) de las estimaciones que produce un estimador y el valor real del parámetro que se desea estimar. Un modelo con alta varianza es muy sensible a pequeñas variaciones en los datos de entrenamiento, lo que puede resultar en un sobreajuste. Es decir, el modelo se ajusta muy bien a los datos de entrenamiento, pero tiene un rendimiento deficiente en datos no vistos o de prueba.
Varianza (Variance): a. Definición: La varianza es la cantidad de variabilidad en las predicciones del modelo para un punto de datos dado. b. Ejemplo: Un modelo de árbol de decisión muy profundo podría tener alta varianza, ya que es muy sensible a pequeñas variaciones en los datos de entrenamiento. c. Implicaciones: Un modelo con alta varianza tiende a sobreajustarse a los datos de entrenamiento, lo que resulta en un buen rendimiento en el conjunto de entrenamiento pero un bajo rendimiento en el conjunto de prueba.
El objetivo en Machine Learning es equilibrar el sesgo y la varianza para minimizar el error de predicción general en el modelo a. Objetivo: Encontrar un equilibrio entre sesgo y varianza que minimice el error total de predicción. b. Estrategias: Seleccionar un modelo con la complejidad adecuada, usar técnicas de regularización, y validar el modelo con conjuntos de datos de entrenamiento y prueba separados.
Aumentar la complejidad del modelo: Un modelo más complejo puede capturar mejor la estructura subyacente de los datos. Por ejemplo, en lugar de utilizar una regresión lineal simple, podrías probar una regresión polinomial o un modelo de árbol de decisión.
Añadir más variables: A veces, el sesgo puede ser el resultado de no tener en cuenta variables importantes que influyen en la variable objetivo. Añadir más variables relevantes puede ayudar a reducir el sesgo del modelo.
Utilizar técnicas de “ingeniería de predictores”: Transformar o combinar las variables existentes para crear nuevas características puede ayudar a capturar mejor la relación entre las variables de entrada y salida. Por ejemplo, si estás trabajando en un problema de predicción de precios de viviendas, podrías crear una nueva característica que represente la relación entre el tamaño de la casa y el número de habitaciones.
Aumentar el tamaño del conjunto de datos: Si tu conjunto de datos es pequeño o no es representativo de la población general, es posible que el modelo tenga un sesgo alto. Aumentar el tamaño del conjunto de datos y asegurarte de que es representativo puede ayudar a reducir el sesgo.
Utilizar ensembles de modelos: Combinar varios modelos en un ensemble puede ayudar a reducir el sesgo, ya que cada modelo puede capturar diferentes aspectos de la relación entre las variables de entrada y salida. Por ejemplo, puedes utilizar métodos de ensemble como Bagging, Boosting o Stacking.
La base de datos trae información que no es buena para la predicción y a la vez, tiende a subestimar la variabilidad del mundo exterior. Regularizar es introducir un poco de sesgo para dar cuenta de las limitaciones del conjunto de datos.
Reducir la complejidad del modelo: Un modelo más simple tiende a tener una menor varianza y es menos propenso al sobreajuste. Por ejemplo, se puede limitar la profundidad de un árbol de decisión.
Utilizar regularización: La regularización es una técnica que añade una penalización a los coeficientes del modelo para evitar que se ajusten demasiado a los datos de entrenamiento.Por ejemplo, regularización L1 (Lasso) y L2 (Ridge).
Aumentar el tamaño del conjunto de datos: Si dispones de más datos, el modelo será menos sensible a pequeñas variaciones en los datos de entrenamiento y tendrá una menor varianza.
Eliminar características ruidosas: Si el modelo incluye características que no están relacionadas con la variable objetivo o que contienen mucho ruido, estas pueden aumentar la varianza del modelo. Realizar un análisis de importancia de características y eliminar las características poco importantes puede ayudar a reducir la varianza.
Validación cruzada (cross-validation): Utilizar la validación cruzada, como k-fold cross-validation, te permite evaluar el rendimiento del modelo en diferentes subconjuntos del conjunto de datos de entrenamiento. Esto puede ayudarte a identificar si el modelo está sobreajustando los datos y ajustar la complejidad del modelo en consecuencia.
Utilizar diferentes modelos: Combinar varios modelos en un ensemble puede ayudar a reducir la varianza, ya que la variabilidad de cada modelo individual se promedia. Por ejemplo, puedes utilizar métodos de ensemble como Bagging (Bootstrap Aggregating) o Random Forest, que promedian las predicciones de múltiples árboles de decisión entrenados en subconjuntos aleatorios de los datos.
Machine Learning