Sobreajuste
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)
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla
Awesome!
Completion rate improved to 5.26
Sobreajuste
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)
¡Gracias por tus comentarios!