Cette fois, j'ai essayé d'organiser l'indice d'évaluation (modèle de régression) du machine learning. Nous avons également résumé les points lors de l'utilisation de chaque indice d'évaluation.
Le facteur de décision $ R ^ 2 $ évalue l'ajustement du modèle de régression estimé. La formule est la suivante.
\begin{eqnarray}
R^2 = 1 - \sum \frac{(y_i - \hat{y_i})^2}{(y_i - \bar{y})^2}
\end{eqnarray}
$ y_i $: valeur mesurée de $ i $ e échantillon $ \ hat {y_i} $: valeur prédite de $ i $ e échantillon $ \ bar {y} $: moyenne des valeurs mesurées
article | Aperçu |
---|---|
Critère d'évaluation | ・ Plus il est proche de 1, meilleure est la valeur |
Interprétation | ・ Évaluer la qualité de l'ajustement du modèle de régression |
Caractéristique | ・ Lorsque le nombre de variables explicatives augmente, il s'approche de 1. ・ Le modèle non linéaire ne peut pas être évalué |
Le code python est ci-dessous.
#Bibliothèque pour le calcul des scores
from sklearn.metrics import r2_score
#true est la valeur vraie (valeur mesurée), pred est la valeur prédite
true = [1.0, 1.5, 2.0, 1.2, 1.8]
pred = [0.8, 1.5, 1.8, 1.3, 2.0]
#Calculer la valeur du coefficient de décision R2
r2_score(true, pred)
\begin{eqnarray}
MAE = \frac{1}{N} \sum|y_i - \hat{y_i}|
\end{eqnarray}
$ y_i $: valeur mesurée de $ i $ e échantillon $ \ hat {y_i} $: valeur prédite de $ i $ e échantillon $ N $: Nombre d'échantillons
article | Aperçu |
---|---|
Critère d'évaluation | ・ Plus la valeur est proche de 0, meilleure est la valeur |
Interprétation | ・ L'amplitude de l'écart moyen (erreur) entre la valeur prédite et la valeur mesurée |
Caractéristique | ・ Nous n'attachons pas beaucoup d'importance aux cas qui sont en grande partie hors de la prévision. ・ Si un bon modèle est sélectionné sur la base de MAE, l'erreur maximale a tendance à augmenter. |
Le code python est ci-dessous.
#Bibliothèque pour le calcul des scores
from sklearn.metrics import mean_absolute_error
#true est la valeur vraie (valeur mesurée), pred est la valeur prédite
true = [1.0, 1.5, 2.0, 1.2, 1.8]
pred = [0.8, 1.5, 1.8, 1.3, 2.0]
#Calculer la valeur de MAE
mean_absolute_error(true, pred)
\begin{eqnarray}
MSE = \frac{1}{N} \sum(y_i - \hat{y_i})^2
\end{eqnarray}
$ y_i $: valeur mesurée de $ i $ e échantillon $ \ hat {y_i} $: valeur prédite de $ i $ e échantillon $ N $: Nombre d'échantillons
article | Aperçu |
---|---|
Critère d'évaluation | ・ Plus la valeur est proche de 0, meilleure est la valeur |
Interprétation | ・予測値と実測値のズレの大きさとInterprétationできる ・ Similaire à MAE, mais différent de l'erreur moyenne réelle comme MAE |
Caractéristique | ・ L'accent est mis sur les cas qui sont largement hors prédiction ・ MSE a tendance à augmenter considérablement si la prévision est largement manquée. |
Le code python est ci-dessous.
#Bibliothèque pour le calcul des scores
from sklearn.metrics import mean_squared_error
#true est la valeur vraie (valeur mesurée), pred est la valeur prédite
true = [1.0, 1.5, 2.0, 1.2, 1.8]
pred = [0.8, 1.5, 1.8, 1.3, 2.0]
#Calculer la valeur de MSE
mean_squared_error(true, pred)
\begin{eqnarray}
RMSE = \sqrt{\frac{1}{N} \sum(y_i - \hat{y_i})^2}
\end{eqnarray}
$ y_i $: valeur mesurée de $ i $ e échantillon $ \ hat {y_i} $: valeur prédite de $ i $ e échantillon $ N $: Nombre d'échantillons
article | Aperçu |
---|---|
Critère d'évaluation | ・ Plus la valeur est proche de 0, meilleure est la valeur |
Interprétation | ・予測値と実測値のズレの大きさとInterprétationできる ・ Similaire à MAE, mais différent de l'erreur moyenne réelle comme MAE |
Caractéristique | ・ L'accent est mis sur les cas qui sont largement hors prédiction ・ Si la prévision est largement ratée, le RMSE a tendance à augmenter considérablement. |
Le code python est ci-dessous.
#Bibliothèque pour le calcul des scores
import numpy as np
from sklearn.metrics import mean_squared_error
#true est la valeur vraie (valeur mesurée), pred est la valeur prédite
true = [1.0, 1.5, 2.0, 1.2, 1.8]
pred = [0.8, 1.5, 1.8, 1.3, 2.0]
#Calculer la valeur RMSE
np.sqrt(mean_squared_error(true, pred))
\begin{eqnarray}
MAPE = \frac{1}{N} \sum|\frac{y_i - \hat{y_i}}{y_i}|
\end{eqnarray}
$ y_i $: valeur mesurée de $ i $ e échantillon $ \ hat {y_i} $: valeur prédite de $ i $ e échantillon $ N $: Nombre d'échantillons
article | Aperçu |
---|---|
Critère d'évaluation | ・ Plus la valeur est proche de 0, meilleure est la valeur |
Interprétation | ・ Rapport entre l'écart moyen (erreur) de la valeur prédite et la taille de la valeur mesurée |
Caractéristique | ・ L'accent est mis sur la taille du rapport entre l'erreur de prédiction et la valeur mesurée. ・ Ne peut pas être utilisé dans les cas où la valeur mesurée est 0 |
Le code python est ci-dessous.
#Bibliothèque pour le calcul des scores
import numpy as np
#true est la valeur vraie (valeur mesurée), pred est la valeur prédite
true = np.array([1.0, 1.5, 2.0, 1.2, 1.8])
pred = np.array([0.8, 1.5, 1.8, 1.3, 2.0])
#Calculez la valeur de MAPE
np.mean(np.abs((true - pred) / true)) * 100
\begin{eqnarray}
SMAPE = \frac{100}{N} \sum|\frac{2(y_i - \hat{y_i})}{(|y_i|+|\hat{y_i}|)}|
\end{eqnarray}
$ y_i $: valeur mesurée de $ i $ e échantillon $ \ hat {y_i} $: valeur prédite de $ i $ e échantillon $ N $: Nombre d'échantillons
article | Aperçu |
---|---|
Critère d'évaluation | ・ Plus la valeur est proche de 0, meilleure est la valeur |
Interprétation | ・ Rapport entre l'écart moyen (erreur) de la valeur prédite et la taille de la valeur mesurée |
Caractéristique | ・ L'accent est mis sur la taille du rapport entre l'erreur de prédiction et la valeur mesurée. ・ Contrairement à MAPE, il peut être utilisé même lorsque la valeur mesurée est 0. |
Le code python est ci-dessous.
#Bibliothèque pour le calcul des scores
import numpy as np
#true est la valeur vraie (valeur mesurée), pred est la valeur prédite
true = np.array([1.0, 1.5, 2.0, 1.2, 1.8])
pred = np.array([0.8, 1.5, 1.8, 1.3, 2.0])
#Calculer la valeur SMAPE
100/len(true) * np.sum(2 * np.abs(pred - true) / (np.abs(pred) + np.abs(true)))
Organisez le script jusqu'à présent.
#Bibliothèque pour le calcul des scores
import numpy as np
import pandas as pd
from sklearn.metrics import r2_score
from sklearn.metrics import mean_absolute_error
from sklearn.metrics import mean_squared_error
def calculate_scores(true, pred):
"""Calculer toutes les métriques
Parameters
----------
true : np.array
La valeur de mesure
pred : np.array
Valeur prédite
Returns
-------
scores : pd.DataFrame
Résultats de la synthèse de chaque indice d'évaluation
"""
scores = pd.DataFrame({'R2': r2_score(true, pred),
'MAE': mean_absolute_error(true, pred),
'MSE': mean_squared_error(true, pred),
'RMSE': np.sqrt(mean_squared_error(true, pred)),
'MAPE': mape(true, pred),
'SMAPE': smape(true, pred)},
index = ['scores'])
return scores
def mape(true, pred):
"""Calculer MAPE
Parameters
----------
true : np.array
La valeur de mesure
pred : np.array
Valeur prédite
Returns
-------
np.array :résultat du calcul de mape
"""
return np.mean(np.abs((true - pred) / true)) * 100
#Calcul SMAPE
def smape(true, pred):
"""Calculer SMAPE
Parameters
----------
true : np.array
La valeur de mesure
pred : np.array
Valeur prédite
Returns
-------
np.array :Calcul de smape
"""
return 100/len(true) * np.sum(2 * np.abs(pred - true) / (np.abs(pred) + np.abs(true)))
def main():
true = np.array([1.0, 1.5, 2.0, 1.2, 1.8])
pred = np.array([0.8, 1.5, 1.8, 1.3, 2.0])
scores = calculate_scores(true, pred)
print(scores)
if __name__ == "__main__":
main()
R2 | MAE | MSE | RMSE | MAPE | SMAPE | |
---|---|---|---|---|---|---|
scores | 0.808824 | 0.14 | 0.026 | 0.161245 | 9.888889 | 10.254971 |
Merci d'avoir lu jusqu'au bout. Si vous avez une demande de correction, nous vous serions reconnaissants de bien vouloir nous contacter.