Son las métricas que se usan en problemas de regresión. Son casi las mismas que usábamos como funciones de coste.
Hay métricas que son exactamente iguales a las funciones de coste como MEA o MSE en los problemas de regresión MAE, MSE. Si ya las usamos como función de coste y queremos usarlas como métricas no es necesario indicarlas como métricas, se puede acceder a ellas de la siguiente forma:
Para mostrar la función de coste en el entrenamiento:
history.history['loss']
Para mostrar la función de coste en la validación:
history.history['val_loss']
Es igual que la función de coste de Mean Absolute Error (MAE), así que no explicaremos nada mas sobre ella excepto como se usa en Keras como métrica
Se define como:
metrics=[tf.keras.metrics.MeanAbsoluteError()] metrics=["mean_absolute_error"] metrics=["mae"]
y usarla como
history.history['mean_absolute_error'] history.history['val_mean_absolute_error'] history.history["mae"] history.history["val_mae"]
Mas información:
Es igual que la función de coste de Mean Squared Error (MSE), así que no explicaremos nada mas sobre ella excepto como se usa en Keras como métrica
Se define como:
metrics=[tf.keras.metrics.MeanSquaredError()] metrics=["mean_squared_error"] metrics=["mse"]
y usarla como
history.history['mean_squared_error'] history.history['val_mean_squared_error'] history.history["mse"] history.history["val_mse"]
Mas información:
Es igual que la función de coste de Distancia del coseno, así que no explicaremos nada mas sobre ella excepto como se usa en Keras como métrica
Se define en Keras como:
metrics=[tf.keras.metrics.CosineSimilarity()] metrics=["cosine_similarity"]
y se usa como
history.history['cosine_similarity'] history.history['val_cosine_similarity']
Mas información:
La Root Mean Squared Error (RMSE) o Raiz cuadrada del error cuadrático medio se calcula igual que el MSE pero se le aplica la raíz cuadrada.
Por lo tanto su fórmula es
$$RMSE = \sqrt{MSE}= \sqrt{\frac{1}{N} \sum\limits_{i=1}^{N}(y_{i} - \hat{y_{i}})^2}$$
Ahora vamos a explicar algunas cosas de RMSE.
Se define en Keras como:
metrics=[tf.keras.metrics.RootMeanSquaredError()]
y se usa como
history.history['root_mean_squared_error'] history.history['val_root_mean_squared_error']
Mas información:
El coeficiente de determinación o R² se calcula de la siguiente forma:
$$R^{2} = 1- \frac {\sum\limits_{i=1}^{N} (y_{i} - \hat{y_{i}})^2} {\sum\limits_{i=1}^{N} (y_{i} - \bar{y})^2}$$ $$\bar{y}=\frac {1}{N} \sum\limits_{i=1}^{N} y_{i}$$
Siendo:
Ahora vamos a explicar algunas cosas de R²
Se define en Keras como:
metrics=[tf.keras.metrics.R2Score()]
y se usa como
history.history['r2_score']
Mas información:
Como acabamos de comentar el Coeficiente de determinación tiene el problema de que tiende a 1 cuantos más características haya es decir cuantas más columnas tenga la hay. Se suele expresar como que hay una alta dimensionalidad.
Para evitar el problema del cálculo de R² en entornos de alta dimensionalidad (que suele ser lo normal en problemas de IA y Machine Learning) existe una nueva métrica que se llama R² ajustado y se escribe $\bar{R^2}$ o $R^2_{ajustado}$
La fórmula ahora es:
$$ \bar{R^2}=1-(1-R^2)\frac{n-1}{n-p-1} $$
Siendo:
x.shape[1]
s.shape[1]
Para usarlo en keras se usa también tf.keras.metrics.R2Score()
pero se le pasa el argumento num_regressors
. Siendo num_regressors
el número de características, es decir x.shape[1]
.
metrics=[tf.keras.metrics.R2Score(num_regressors=x.shape[1])]
R2Score()
no se le pasa ninguna valor a num_regressors
su valor por defecto es 0. Y eso no significa que haya 0 características sino que en ese caso no hay que calcular el valor de $\bar{R^2}$ sino $R^2$
La elección de una métrica u otra se puede ver en MAE, MSE, RMSE, Coefficient of Determination, Adjusted R Squared — Which Metric is Better? y Know The Best Evaluation Metrics for Your Regression Model