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 presenta sobreajuste al 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 en conjunto de entrenamiento y prueba
Se busca conocer cómo se desempeñará el modelo con instancias no vistas. Para ello, se requieren instancias no vistas con los valores verdaderos del objetivo. Estos valores solo están disponibles en el conjunto de entrenamiento. La solución consiste en dividir el conjunto de entrenamiento en dos subconjuntos: uno de entrenamiento y otro de prueba.
Ahora es posible 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 aproximadamente el 20-30% del conjunto de entrenamiento como conjunto de prueba, y el 70-80% restante como conjunto de entrenamiento. Scikit-learn proporciona una función sencilla para realizar la división 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 presenta sobreajuste al 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 en conjunto de entrenamiento y prueba
Se busca conocer cómo se desempeñará el modelo con instancias no vistas. Para ello, se requieren instancias no vistas con los valores verdaderos del objetivo. Estos valores solo están disponibles en el conjunto de entrenamiento. La solución consiste en dividir el conjunto de entrenamiento en dos subconjuntos: uno de entrenamiento y otro de prueba.
Ahora es posible 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 aproximadamente el 20-30% del conjunto de entrenamiento como conjunto de prueba, y el 70-80% restante como conjunto de entrenamiento. Scikit-learn proporciona una función sencilla para realizar la división 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!