Métricas
Al construir un modelo, es fundamental medir su rendimiento.
Se requiere una puntuación asociada al modelo que describa con precisión qué tan bien se ajusta a los datos. Esta puntuación se conoce como una métrica, y existen numerosas métricas disponibles.
En este capítulo, nos centraremos en las más utilizadas.
Utilizaremos la siguiente notación:
Ya conocemos una métrica, SSR (Sum of Squared Residuals), que minimizamos para identificar los parámetros óptimos.
Utilizando nuestra notación, podemos expresar la fórmula de SSR de la siguiente manera:
o igualmente:
Esta métrica era adecuada para comparar modelos con el mismo número de instancias. Sin embargo, no proporciona una comprensión de qué tan bien funciona el modelo. Aquí está la razón:
Suponga que tiene dos modelos en diferentes conjuntos de entrenamiento (mostrados en la imagen a continuación).
Se puede observar que el primer modelo se ajusta bien pero aún tiene un SSR mayor que el segundo modelo, que visualmente se ajusta peor a los datos. Esto ocurrió únicamente porque el primer modelo tiene muchos más puntos de datos, por lo que la suma es mayor, pero en promedio, los residuos del primer modelo son menores. Por lo tanto, tomar el promedio de los residuos al cuadrado como métrica describiría mejor el modelo. Eso es precisamente lo que es el Error Cuadrático Medio (MSE).
MSE
o de igual manera:
Para calcular la métrica MSE utilizando Python, puedes emplear las funciones de NumPy:
mse = np.mean((y_true-y_pred)**2)
O puedes utilizar el método mean_squared_error()
de Scikit-learn:
from sklearn.metrics import mean_squared_error
mse = mean_squared_error(y_true, y_pred)
Donde y_true
es un arreglo de valores reales del objetivo y y_pred
es un arreglo de valores predichos del objetivo para las mismas características.
El inconveniente es que el error que muestra está al cuadrado. Por ejemplo, supongamos que el MSE del modelo que predice precios de casas es 49 dollars². Nos interesa el precio, no el precio al cuadrado, como lo proporciona el MSE, por lo que preferimos tomar la raíz cuadrada del MSE y obtener 7 dollars. Ahora tenemos una métrica con la misma unidad que el valor predicho. Esta métrica se denomina Root Mean Squared Error (RMSE).
RMSE
Para calcular la métrica RMSE utilizando Python, puedes emplear las funciones de NumPy:
rmse = np.sqrt(np.mean((y_true-y_pred)**2))
O puedes utilizar el método mean_squared_error()
de Scikit-learn con squared=False
:
from sklearn.metrics import mean_squared_error
rmse = mean_squared_error(y_true, y_pred, squared=False)
MAE
En SSR, se elevaron al cuadrado los residuos para eliminar el signo. La segunda alternativa consiste en tomar los valores absolutos de los residuos en lugar de elevarlos al cuadrado. Esta es la idea detrás del Error Absoluto Medio (MAE).
o de igual manera
Es igual que el MSE, pero en lugar de elevar al cuadrado los residuos, tomamos sus valores absolutos.
Aunque el MAE es similar al MSE, al utilizar los valores absolutos de los residuos, es más robusto frente a valores atípicos, ya que no amplifica tanto los errores grandes como lo hace el MSE. Como resultado, el MAE suele ser una mejor opción cuando el conjunto de datos contiene valores atípicos, ya que su valor no aumenta de manera desproporcionada debido a unos pocos errores extremos.
Para calcular la métrica MAE usando Python, puedes utilizar las funciones de NumPy:
mae = np.mean(np.fabs(y_true-y_pred))
O puedes usar el método mean_absolute_error()
de Scikit-learn:
from sklearn.metrics import mean_absolute_error
mae = mean_absolute_error(y_true, y_pred)
Para elegir los parámetros, utilizamos la métrica SSR. Esto se debe a que es adecuada para cálculos matemáticos y nos permitió obtener la Ecuación Normal. Sin embargo, para comparar los modelos, se puede utilizar cualquier otra métrica.
Para comparar modelos, SSR, MSE y RMSE siempre seleccionarán de manera idéntica cuál modelo es mejor y cuál es peor. MAE, en ocasiones, puede preferir un modelo diferente al de SSR/MSE/RMSE, ya que estas últimas penalizan mucho más los residuos altos. Generalmente, se recomienda elegir una métrica a priori y centrarse en minimizarla.
Ahora se puede afirmar con certeza que el segundo modelo es mejor, ya que todas sus métricas son más bajas. Sin embargo, métricas más bajas no siempre significan que el modelo sea mejor.
¡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
Can you explain why lower metrics do not always mean a better model?
What are some other metrics used to evaluate model performance?
When should I use MAE instead of MSE or RMSE?
Awesome!
Completion rate improved to 5.26
Métricas
Desliza para mostrar el menú
Al construir un modelo, es fundamental medir su rendimiento.
Se requiere una puntuación asociada al modelo que describa con precisión qué tan bien se ajusta a los datos. Esta puntuación se conoce como una métrica, y existen numerosas métricas disponibles.
En este capítulo, nos centraremos en las más utilizadas.
Utilizaremos la siguiente notación:
Ya conocemos una métrica, SSR (Sum of Squared Residuals), que minimizamos para identificar los parámetros óptimos.
Utilizando nuestra notación, podemos expresar la fórmula de SSR de la siguiente manera:
o igualmente:
Esta métrica era adecuada para comparar modelos con el mismo número de instancias. Sin embargo, no proporciona una comprensión de qué tan bien funciona el modelo. Aquí está la razón:
Suponga que tiene dos modelos en diferentes conjuntos de entrenamiento (mostrados en la imagen a continuación).
Se puede observar que el primer modelo se ajusta bien pero aún tiene un SSR mayor que el segundo modelo, que visualmente se ajusta peor a los datos. Esto ocurrió únicamente porque el primer modelo tiene muchos más puntos de datos, por lo que la suma es mayor, pero en promedio, los residuos del primer modelo son menores. Por lo tanto, tomar el promedio de los residuos al cuadrado como métrica describiría mejor el modelo. Eso es precisamente lo que es el Error Cuadrático Medio (MSE).
MSE
o de igual manera:
Para calcular la métrica MSE utilizando Python, puedes emplear las funciones de NumPy:
mse = np.mean((y_true-y_pred)**2)
O puedes utilizar el método mean_squared_error()
de Scikit-learn:
from sklearn.metrics import mean_squared_error
mse = mean_squared_error(y_true, y_pred)
Donde y_true
es un arreglo de valores reales del objetivo y y_pred
es un arreglo de valores predichos del objetivo para las mismas características.
El inconveniente es que el error que muestra está al cuadrado. Por ejemplo, supongamos que el MSE del modelo que predice precios de casas es 49 dollars². Nos interesa el precio, no el precio al cuadrado, como lo proporciona el MSE, por lo que preferimos tomar la raíz cuadrada del MSE y obtener 7 dollars. Ahora tenemos una métrica con la misma unidad que el valor predicho. Esta métrica se denomina Root Mean Squared Error (RMSE).
RMSE
Para calcular la métrica RMSE utilizando Python, puedes emplear las funciones de NumPy:
rmse = np.sqrt(np.mean((y_true-y_pred)**2))
O puedes utilizar el método mean_squared_error()
de Scikit-learn con squared=False
:
from sklearn.metrics import mean_squared_error
rmse = mean_squared_error(y_true, y_pred, squared=False)
MAE
En SSR, se elevaron al cuadrado los residuos para eliminar el signo. La segunda alternativa consiste en tomar los valores absolutos de los residuos en lugar de elevarlos al cuadrado. Esta es la idea detrás del Error Absoluto Medio (MAE).
o de igual manera
Es igual que el MSE, pero en lugar de elevar al cuadrado los residuos, tomamos sus valores absolutos.
Aunque el MAE es similar al MSE, al utilizar los valores absolutos de los residuos, es más robusto frente a valores atípicos, ya que no amplifica tanto los errores grandes como lo hace el MSE. Como resultado, el MAE suele ser una mejor opción cuando el conjunto de datos contiene valores atípicos, ya que su valor no aumenta de manera desproporcionada debido a unos pocos errores extremos.
Para calcular la métrica MAE usando Python, puedes utilizar las funciones de NumPy:
mae = np.mean(np.fabs(y_true-y_pred))
O puedes usar el método mean_absolute_error()
de Scikit-learn:
from sklearn.metrics import mean_absolute_error
mae = mean_absolute_error(y_true, y_pred)
Para elegir los parámetros, utilizamos la métrica SSR. Esto se debe a que es adecuada para cálculos matemáticos y nos permitió obtener la Ecuación Normal. Sin embargo, para comparar los modelos, se puede utilizar cualquier otra métrica.
Para comparar modelos, SSR, MSE y RMSE siempre seleccionarán de manera idéntica cuál modelo es mejor y cuál es peor. MAE, en ocasiones, puede preferir un modelo diferente al de SSR/MSE/RMSE, ya que estas últimas penalizan mucho más los residuos altos. Generalmente, se recomienda elegir una métrica a priori y centrarse en minimizarla.
Ahora se puede afirmar con certeza que el segundo modelo es mejor, ya que todas sus métricas son más bajas. Sin embargo, métricas más bajas no siempre significan que el modelo sea mejor.
¡Gracias por tus comentarios!