Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Sobreajuste | Elegir el Mejor Modelo
Regresión Lineal con Python

bookSobreajuste

Sobreajuste

Considere las dos líneas de regresión a continuación. ¿Cuál es mejor?

Las métricas sugieren que el segundo modelo es mejor, por lo que lo utilizamos para predecir X_new = [0.2, 0.5, 2.7]. Pero después de comparar las predicciones con los valores reales, el primer modelo tiene un mejor desempeño.

Esto ocurre porque el segundo modelo sobreajusta: es demasiado complejo y se ajusta demasiado a los datos de entrenamiento, sin lograr generalizar a nuevos casos.

Subajuste

El subajuste ocurre cuando un modelo es demasiado simple para ajustarse incluso a los datos de entrenamiento, lo que también conduce a malas predicciones sobre datos no vistos.

Por lo tanto, podemos intentar determinar visualmente si el modelo presenta subajuste o sobreajuste.

Dado que no podemos visualizar modelos de alta dimensión, necesitamos otra forma de detectar el sobreajuste o el subajuste.

División de entrenamiento y prueba

Para estimar el rendimiento en datos no vistos, se divide el conjunto de datos en un conjunto de entrenamiento y un conjunto de prueba con objetivos conocidos.

Se entrena con el conjunto de entrenamiento y se calculan métricas tanto en el conjunto de entrenamiento como en el de prueba para comparar el rendimiento.

La división debe ser aleatoria. Normalmente, el 20–30% se destina al conjunto de prueba y el 70–80% se utiliza para entrenamiento. Scikit-learn proporciona una forma sencilla de realizar esto.

Por ejemplo, para dividir el conjunto de entrenamiento en 70% entrenamiento/30% prueba, puedes usar el siguiente código:

from sklearn.model_selection import train_test_split # import the function
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)
question-icon

Basándose en los valores de MSE de los modelos, determina si sobreajustan/subajustan el conjunto de entrenamiento (el conjunto de datos es el mismo).

Model 1: Training set's MSE=0.2, Test set's MSE=0.215 .
Model 2: Training set's MSE=0.14, Test set's MSE=0.42
.
Model 3: Training set's MSE=0.5, Test set's MSE=0.47
.

Click or drag`n`drop items and fill in the blanks

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 4. Capítulo 2

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

Suggested prompts:

Can you explain more about how overfitting and underfitting affect model performance?

What are some ways to prevent overfitting in machine learning models?

How do I choose the right train-test split ratio for my dataset?

Awesome!

Completion rate improved to 5.26

bookSobreajuste

Desliza para mostrar el menú

Sobreajuste

Considere las dos líneas de regresión a continuación. ¿Cuál es mejor?

Las métricas sugieren que el segundo modelo es mejor, por lo que lo utilizamos para predecir X_new = [0.2, 0.5, 2.7]. Pero después de comparar las predicciones con los valores reales, el primer modelo tiene un mejor desempeño.

Esto ocurre porque el segundo modelo sobreajusta: es demasiado complejo y se ajusta demasiado a los datos de entrenamiento, sin lograr generalizar a nuevos casos.

Subajuste

El subajuste ocurre cuando un modelo es demasiado simple para ajustarse incluso a los datos de entrenamiento, lo que también conduce a malas predicciones sobre datos no vistos.

Por lo tanto, podemos intentar determinar visualmente si el modelo presenta subajuste o sobreajuste.

Dado que no podemos visualizar modelos de alta dimensión, necesitamos otra forma de detectar el sobreajuste o el subajuste.

División de entrenamiento y prueba

Para estimar el rendimiento en datos no vistos, se divide el conjunto de datos en un conjunto de entrenamiento y un conjunto de prueba con objetivos conocidos.

Se entrena con el conjunto de entrenamiento y se calculan métricas tanto en el conjunto de entrenamiento como en el de prueba para comparar el rendimiento.

La división debe ser aleatoria. Normalmente, el 20–30% se destina al conjunto de prueba y el 70–80% se utiliza para entrenamiento. Scikit-learn proporciona una forma sencilla de realizar esto.

Por ejemplo, para dividir el conjunto de entrenamiento en 70% entrenamiento/30% prueba, puedes usar el siguiente código:

from sklearn.model_selection import train_test_split # import the function
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)
question-icon

Basándose en los valores de MSE de los modelos, determina si sobreajustan/subajustan el conjunto de entrenamiento (el conjunto de datos es el mismo).

Model 1: Training set's MSE=0.2, Test set's MSE=0.215 .
Model 2: Training set's MSE=0.14, Test set's MSE=0.42
.
Model 3: Training set's MSE=0.5, Test set's MSE=0.47
.

Click or drag`n`drop items and fill in the blanks

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 4. Capítulo 2
some-alt