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?

Bien, las métricas nos indican que la segunda es mejor. Entonces la utilizaremos para predecir nuevos valores. Necesitamos las predicciones para X_new = [0.2,0.5,2.7]. Pero cuando obtuvimos los valores reales del objetivo para los X_new que acabamos de predecir, resultó que el primer modelo tenía una predicción mucho mejor.

Esto se debe a que el segundo modelo sobreajusta el conjunto de entrenamiento. El sobreajuste ocurre cuando el modelo construido es demasiado complejo, de modo que puede ajustarse perfectamente a los datos de entrenamiento, pero no predice tan bien los casos no vistos.

Subajuste

Existe también otro concepto, subajuste. Ocurre cuando el modelo construido es tan simple que ni siquiera se ajusta bien a los datos de entrenamiento. En esos casos, las predicciones de las instancias no vistas también son incorrectas.

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

Ya sabemos que no podemos visualizar la Regresión Lineal Múltiple con muchas características. ¿Existe otra manera de determinar si el modelo presenta sobreajuste o subajuste? Resulta que sí la hay.

División de Entrenamiento y Prueba

Queremos saber cómo se desempeñará el modelo en instancias no vistas. Para ello, necesitamos instancias no vistas con los valores verdaderos del objetivo. Y solo tenemos los valores verdaderos del objetivo en el conjunto de entrenamiento. La forma adecuada es dividir el conjunto de entrenamiento en dos conjuntos, un conjunto de entrenamiento y un conjunto de prueba.

Ahora podemos construir el modelo utilizando el conjunto de entrenamiento, calcular las métricas en el conjunto de entrenamiento (instancias vistas) y luego calcular las métricas en el conjunto de prueba (instancias no vistas).

Es fundamental dividir el conjunto de entrenamiento de manera aleatoria. Por lo general, se recomienda utilizar alrededor del 20-30% del conjunto de entrenamiento como conjunto de prueba, y el otro 70-80% se deja como conjunto de entrenamiento. Scikit-learn proporciona una función sencilla para dividir el conjunto de manera aleatoria:

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 o 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

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?

Bien, las métricas nos indican que la segunda es mejor. Entonces la utilizaremos para predecir nuevos valores. Necesitamos las predicciones para X_new = [0.2,0.5,2.7]. Pero cuando obtuvimos los valores reales del objetivo para los X_new que acabamos de predecir, resultó que el primer modelo tenía una predicción mucho mejor.

Esto se debe a que el segundo modelo sobreajusta el conjunto de entrenamiento. El sobreajuste ocurre cuando el modelo construido es demasiado complejo, de modo que puede ajustarse perfectamente a los datos de entrenamiento, pero no predice tan bien los casos no vistos.

Subajuste

Existe también otro concepto, subajuste. Ocurre cuando el modelo construido es tan simple que ni siquiera se ajusta bien a los datos de entrenamiento. En esos casos, las predicciones de las instancias no vistas también son incorrectas.

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

Ya sabemos que no podemos visualizar la Regresión Lineal Múltiple con muchas características. ¿Existe otra manera de determinar si el modelo presenta sobreajuste o subajuste? Resulta que sí la hay.

División de Entrenamiento y Prueba

Queremos saber cómo se desempeñará el modelo en instancias no vistas. Para ello, necesitamos instancias no vistas con los valores verdaderos del objetivo. Y solo tenemos los valores verdaderos del objetivo en el conjunto de entrenamiento. La forma adecuada es dividir el conjunto de entrenamiento en dos conjuntos, un conjunto de entrenamiento y un conjunto de prueba.

Ahora podemos construir el modelo utilizando el conjunto de entrenamiento, calcular las métricas en el conjunto de entrenamiento (instancias vistas) y luego calcular las métricas en el conjunto de prueba (instancias no vistas).

Es fundamental dividir el conjunto de entrenamiento de manera aleatoria. Por lo general, se recomienda utilizar alrededor del 20-30% del conjunto de entrenamiento como conjunto de prueba, y el otro 70-80% se deja como conjunto de entrenamiento. Scikit-learn proporciona una función sencilla para dividir el conjunto de manera aleatoria:

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 o 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