Construir un modelo de aprendizaje automático no es solo el objetivo de todos los científicos de datos.
Puede que estés comenzando en este campo de la IA y quieras saber que métricas puedes utilizar para evaluar el modelo. También es probable que hayas descubierto que existen diferentes métricas para elegir el mejor modelo de regresión lineal. Siendo así, a continuación analizaremos diferentes métricas de puntuación algorítmica y cómo implementarlas en nuestro script de Python.
¿Qué es regresión?
El análisis de regresión es una parte del aprendizaje automático supervisado. Su propósito es establecer un modelo de la relación entre un conjunto de características y una variable continua objetivo.
En los problemas de regresión buscamos obtener una respuesta cuantitativa, como por ejemplo, predicciones sobre precios de inmuebles, calificaciones, ocupación de camas, entre otras.
¿Cuáles son las métricas que podemos utilizar para un Análisis de Regresión?
A medida que comenzamos a desarrollar e implementar nuestros modelos de aprendizaje automático, debemos de considerar la búsqueda de una métrica que nos ayude a mejorar el rendimiento.
Es fundamental obtener precisión en los datos de entrenamiento, pero también es importante que este resultado sea confiable y aproximado para datos desconocidos para los cuales los algoritmos no pueden ser 100% eficientes, debido a que estaría sesgado y tendría un sobreajuste.
Si la métrica es correcta, no hay necesidad de buscar otra métrica, por lo que debemos entender cómo funciona para verificar qué métricas se ajustan mejor al conjunto de datos.
1. Error Absoluto Medio (MAE)
Es la diferencia entre el valor pronosticado y el valor real en cada punto pronosticado, conceptualmente la métrica de evaluación más fácil para problemas de regresión. Responde a la pregunta: "¿En qué medida te equivocaste en tus predicciones, en promedio?"
Para comprenderlo mejor tomemos el siguiente ejemplo: consideremos que estamos pronosticando los precios de vehículos usados. El precio real de un vehículo usado es de $10k. Después de aplicar un modelo de Machine Learning predijimos que el precio es de $12k, ahora podemos observar que la diferencia es de $2k entre ambos precios de venta. Esta diferencia se llama error absoluto.
(Δ y) = | y i — ŷ |
y i : representa el valor real
ŷ : representa el valor predicho
El caso anterior representa el error absoluto para una sola observación. Pero en la práctica tendremos muchos datos para predecir la salida. Por lo tanto, usamos para obtener el error absoluto medio (MAE), es decir, la media de los errores absolutos de toda la observación.
Se formula de la siguiente forma:
n : representa el número de observaciones
y i : representa el valor real
ŷ i : representa el valor predicho
Ventajas de MAE
Es una métrica de evaluación fácil de calcular.
Todos los errores se ponderan en la misma escala ya que se toman valores absolutos.
Es útil si los datos de entrenamiento tienen valores atípicos, ya que MAE no penaliza los errores elevados causados por los valores atípicos.
Proporciona una medida uniforme de qué tan bien está funcionando el modelo.
Desventajas de MAE
MAE sigue una medida de precisión dependiente de la escala en la que utiliza la misma escala que los datos que se están midiendo. Por lo tanto, no puede usarse para comparar series usando diferentes medidas.
Una de las principales desventajas de MAE es que no es diferenciable en cero. Muchos algoritmos de optimización tienden a utilizar la diferenciación para encontrar el valor óptimo de los parámetros en la métrica de evaluación.
Puede ser un desafío calcular gradientes en MAE.
Ejemplo de aplicación con Python:
# MAE
from sklearn.metrics import mean_absolute_error
mae = mean_absolute_error(
y_test,
predicciones)
print(mae)
2. Error Cuadrático Medio (MSE)
Es una de las funciones de pérdida de regresión más comunes. En el error cuadrático medio, también conocido como pérdida L2, calculamos el error elevando al cuadrado la diferencia entre el valor predicho y el valor real y promediando el conjunto de datos.
Entonces, arriba estamos encontrando la diferencia absoluta y aquí estamos encontrando la diferencia al cuadrado.
¿Qué representa realmente el MSE?
Representa la distancia al cuadrado entre los valores reales y predichos. realizamos al cuadrado para evitar la cancelación de términos negativos y es útil elevar al cuadrado el error porque da un mayor peso a los valores atípicos, lo que da como resultado un gradiente suave para errores pequeños. Los algoritmos de optimización aprovechan esta gran penalización de error porque es útil para encontrar valores de parámetros óptimos.
Consideraciones
MSE nunca será negativo ya que los errores se elevan al cuadrado
El valor del error varía de cero a infinito
MSE aumenta exponencialmente con un aumento en el error
Un buen modelo tendrá un valor MSE más cercano a cero.
De esta forma se expresa la formula:
Ventajas del MSE
Los valores de MSE se expresan en ecuaciones cuadráticas. Por lo tanto, cuando lo graficamos, obtenemos un descenso de gradiente con solo un mínimo global.
Para errores pequeños, converge a los mínimos de manera eficiente. No hay mínimos locales.
MSE penaliza el modelo por tener grandes errores al elevarlos al cuadrado.
Es particularmente útil para eliminar valores atípicos con grandes errores del modelo al ponerles más peso.
Desventajas del MSE
El valor que obtiene después de calcular MSE es una unidad de salida al cuadrado. por ejemplo, la variable de salida está en metros (m), luego de calcular el MSE, la salida que obtenemos está en metros cuadrados.
Si tiene valores atípicos en el conjunto de datos, los penaliza más y el MSE calculado es mayor. Entonces, en resumen la ventaja se puede convertir en desventaja cuando hay una mala predicción, la sensibilidad a los valores atípicos magnifica los errores elevados al elevarlos al cuadrado.
Ejemplo de aplicación con Python:
#MSE
from sklearn.metrics import mean_squared_error
mse = mean_squared_error(
y_true= y_test,
y_pred = predicciones)
print(mse)
3. Raíz del Error Cuadrático Medio (RMSE)
Se calcula tomando la raíz cuadrada de MSE. Es conocida también como la desviación cuadrática media. Mide la magnitud promedio de los errores y se ocupa de las desviaciones del valor real. Es una estadística imperfecta para la evaluación, pero es muy común. Si te importa penalizar errores grandes, no es una mala opción. Es una excelente opción para una métrica de pérdida cuando se ajustan los HiperParametros o se entrena por bloque una red neuronal profunda.
Consideraciones:
RMSE con valor 0 indica que el modelo tiene un ajuste perfecto.
Cuanto menor sea el RMSE, mejor será el modelo y sus predicciones.
Se fórmula de la siguiente forma:
Ventajas del RMSE
RMSE es fácil de entender.
Sirve como una heurística para entrenar modelos. Es computacionalmente simple y fácilmente diferenciable, lo que desean muchos algoritmos de optimización.
RMSE no penaliza los errores tanto como lo hace MSE debido a la raíz cuadrada.
Desventajas del RMSE
No es tan resistente a los valores atípicos en comparación con MAE.
RMSE aumenta con un aumento en el tamaño de la muestra de prueba. Este es un problema cuando calculamos los resultados en diferentes muestras de prueba.
Ejemplo de aplicación con Python:
#RMSE
mse = mean_squared_error(
y_true= y_test,
y_pred = predicciones)
print(np.sqrt(mse))
4. Coeficiente Determinación (R2)
También conocido como prueba de bondad de ajuste, es una métrica que indica el rendimiento del modelo, nos indica que tanta variación tiene la variable dependiente que se puede predecir desde la variable independiente. En otras palabras, representa la fuerza del ajuste de que tan bien se ajusta el modelo a las observaciones reales que tenemos, sin embargo, no dice nada sobre el modelo en sí, no indica si es bueno malo, si los datos están sesgados o si hemos elegido el método correcto.
Consideraciones:
El valor de R² varía de 0 a 1; los valores más altos indican un ajuste fuerte y los valores más bajos indican un ajuste débil.
R² < 0,5 → Ajuste débil
0,5 ≤ R² ≤ 0,8 → Ajuste moderado
R² > 0,8 → Ajuste fuerte
Probablemente tengas curiosidad de que significa ¿fuerza de ajuste? Básicamente es en promedio, sus valores predichos no se desvían mucho de sus datos reales.
De esta forma se expresa la fórmula:
y i : valores de la variable dependiente
ŷ i : valores predichos del modelo
ȳ i : la media de y
Ventajas del R²
Da una indicación de qué tan bueno es el ajuste del modelo.
Desventajas del R²
Agregar predictores al modelo puede aumentar el valor de R² debido al azar, lo que hace que los resultados sean engañosos.
Agregar predictores al modelo puede causar un "sobreajuste", donde el modelo intenta predecir el "ruido" en los datos. Esto disminuye su capacidad para funcionar mejor con datos 'nuevos' que no ha visto antes².
R² no tiene significado para modelos no lineales.
Ejemplo de aplicación con Python:
#R2
from sklearn.metrics import r2_score
r2 = r2_score(
y_true=y_test,
y_pred = predicciones)
print(r2)
5. R² ajustado (R² adj.)
R² ajustado mide lo mismo que R² (variabilidad explicada por el modelo), pero teniendo en cuenta el número de variables independientes. Aumentar el número de variables independientes dará como resultado una disminución en el R² ajustado. El R² ajustado siempre es menor que el valor de R², ya que penaliza el uso excesivo de variables.
Se formula de la siguiente forma:
n: es el número de filas
k: es el número de variables en el modelo
Ventajas R² ajustado:
Da más información sobre el problema del sobreajuste.
Disminuye el efecto de la aleatoriedad en el valor de R² (es decir, si es alto debido a la aleatoriedad, la R² ajustada lo reflejará)
Contras R² ajustado:
Todavía tiene los otros problemas asociados con R²
Ejemplo de aplicación con Python:
# R2 Ajustado
n = len(y_test) # Cantidad de Filas del test
k = X_test.shape[1] #Cantidad de Columnas (variables independientes)
r2_adj = 1-((1-r2)*(n-1)/(n-k-1))
print(r2_adj)