[PYTHON] Les pièges du RMSE (erreur quadratique moyenne), un indice d'évaluation de la régression!

introduction

RMSE (erreur quadratique moyenne) est souvent utilisée pour évaluer les modèles de régression d'apprentissage automatique. D'un autre côté, il est souvent indiqué dans l'introduction que RMSE est vulnérable aux valeurs aberrantes, mais il y a des cas où il est utilisé sans s'en soucier. Supprimons-le en tant qu'anti-modèle en pensant «À quel point est-il donc faible? Si vous écrivez d'abord la conclusion ** "À titre indicatif, s'il y a une valeur 10 fois ou plus de la moyenne, vous devez être prudent lors de son utilisation. Dans ce cas, il est préférable d'utiliser le RMSLE logarithmique" * *

① Qu'est-ce que RMSE (erreur quadratique moyenne)?

Eh bien, comme son nom l'indique. L'erreur, c'est-à-dire la différence entre la valeur réelle et la valeur prédite, est mise au carré, puis moyennée pour emprunter l'itinéraire.

\textrm{RMSE} = \sqrt{\frac{1}{N}\sum_{i=1}^{N}(y_{i}-\hat{y}_{i})^{2}}

La formule est assez proche de la valeur de l'écart, seul l'écart s'est transformé en erreur. Donc, si vous l'utilisez bien, vous pouvez faire une image que "ce modèle donnera à propos de cette erreur".

② Et si RMSE tourne mal? À propos de l'échelle des valeurs.

** RMSE ** est populaire et utilisé par de nombreuses personnes, mais il présente l'inconvénient que s'il existe une valeur aberrante, la valeur est facilement déplacée vers la valeur aberrante **. Je pense qu'il y a beaucoup de gens qui s'en moquent. Étant donné que seule la valeur en tant qu'erreur est incluse dans le calcul, l'erreur prédite comme ** "10 est 20" ** et l'erreur prédite comme ** "100 est 110" ** sont évaluées comme étant identiques. De plus, s'il y a une erreur dans la prédiction de ** «1 000 à 900» ** dans près de dizaines de données, elle sera traitée comme ** une donnée avec une importance complètement différente **.

import numpy as np
a = np.array([10]*100) #En supposant que 100 erreurs de 10 sont préparées
print(np.sqrt((a**2).mean())) #RMSE est bien sûr 10
a = np.append(a, [100]*1) #Ajouter 100 à 101e
print(np.sqrt((a**2).mean())) #RMSE est de 14.Montez à 07!

Puisqu'elle est au carré dans le calcul, une erreur d'échelle de 10 fois est 100 fois plus importante sur l'indice. S'il y avait 100 fois l'erreur moyenne, son importance serait de 10 000 fois l'erreur moyenne ou 10 000 enregistrements. Et comme il est plus difficile de prédire les valeurs aberrantes en apprentissage automatique, l'évaluation deviendra inévitablement instable s'il y a des valeurs aberrantes.

③ Alors quel devrait être l'indice d'évaluation?

Personnellement, je pense que ** RMSLE ** ou ** MAE **, qui peut être considéré comme un ratio, est bon. Je me demande si le modèle d'apprentissage automatique doit être considéré comme ** d'abord, commandez correctement **. ** RMSLE ** est la logarithmique de RMSE. Vous pouvez faire RMSLE en prenant un journal de y. De cette façon, je pense qu'il est facile de le traiter comme RMSE et de le rendre exp à la fin. ** MAE ** est la valeur absolue, et non le carré, lors du calcul de la moyenne. Cela empêchera l'amplification de l'erreur et sera plus résistant aux valeurs aberrantes. Cependant, il est difficile de l'utiliser comme coefficient de perte lors de la formation d'un modèle. Bien sûr, si vous dites ** "Il n'y a presque pas de valeurs aberrantes" ou "Le problème est une erreur dans une grande valeur" **, il n'y a aucun problème avec RMSE.

④ Présentation d'exemples

Dans un concours récent, ProbSpace Real Estate Transaction Price Forecast Competition a utilisé RMSE et les données contenaient plus de 100 fois la valeur moyenne. Il y a eu un gros changement dans le classement. "Sujets qui analysent combien RMSE change en fonction de la différence d'échelle" (connexion requise) Veuillez voir si vous êtes intéressé. Même dans un projet réel, j'ai vu que «je connaissais RMSE, mais je ne savais pas s'il était approprié pour l'évaluation du modèle lors de l'examen de la possibilité de valeurs aberrantes».

Conclusion

En conclusion, je pense que tout est question de ** "N'utilisez pas RMSE quand il y a une possibilité que des données d'échelles différentes viennent! Utilisez RMSLE!" **. Je pense que c'est dangereux de ne voir que RMSE autant que de ne voir que Accuracy dans le classement. À propos, le concours de prévision des prix de l'immobilier de ProbSpace mentionné ci-dessus a de nouveau eu lieu à la date limite du 11 août 2020 changer l'indice d'évaluation en RMSLE. Je vais. Je pense que c'est un concours recommandé pour les débutants car vous pouvez participer depuis l'état où il y a une solution pour la personne qui a participé la dernière fois. Je suis désolé de vous donner un exemple d'anti-pattern, mais je suis heureux que vous puissiez le rouvrir comme ça. Comme mentionné ci-dessus, si vous ne faites pas attention à l'indice d'évaluation, vous serez coincé dans un gros écueil, et au contraire, vous pourrez obtenir un bon classement dans la compétition simplement en faisant attention, donc cela vaut la peine de le noter.

Recommended Posts

Les pièges du RMSE (erreur quadratique moyenne), un indice d'évaluation de la régression!
Méthode d'évaluation du problème de régression d'apprentissage automatique (erreur quadratique moyenne et coefficient de décision)
Réglage de l'indice d'évaluation du test croisé (mémo, scikit-learn, cross_validation.cross_val_score)