Qu'est-ce que RMSE? Aussi connu sous le nom de MSE, RMD ou RMS. Quel problème résout-il?
Si vous comprenez RMSE: (erreur quadratique moyenne), MSE: (erreur quadratique moyenne) RMD (écart quadratique moyen) et RMS: (moyenne quadratique quadratique), alors demander une bibliothèque pour calculer cela pour vous est inutile sur-ingénierie . Toutes ces métriques sont une seule ligne de code python d'au plus 2 pouces de long. Les trois métriques rmse, mse, rmd et rms sont fondamentalement identiques sur le plan conceptuel.
RMSE répond à la question: « Comment similaires, en moyenne, sont les nombres list1
à list2
? ». Les deux listes doivent être de la même taille. Je veux "effacer le bruit entre deux éléments donnés, effacer la taille des données collectées et avoir une impression de nombre unique pour le changement au fil du temps".
Intuition et ELI5 pour RMSE:
Imaginez que vous apprenez à lancer des fléchettes sur un jeu de fléchettes. Chaque jour, vous pratiquez pendant une heure. Vous voulez savoir si vous vous améliorez ou si vous empirez. Ainsi, chaque jour, vous effectuez 10 lancers et mesurez la distance entre la cible et l'endroit où votre fléchette a frappé.
Vous faites une liste de ces chiffres list1
. Utilisez l'erreur quadratique moyenne entre les distances au jour 1 et a list2
contenant tous les zéros. Faites de même le 2ème et le nième jour. Ce que vous obtiendrez est un chiffre unique qui, espérons-le, diminuera avec le temps. Lorsque votre numéro RMSE est égal à zéro, vous touchez à chaque fois des bullsey. Si le nombre RMSE augmente, vous vous empirez.
Exemple de calcul de l'erreur quadratique moyenne racine en python:
import numpy as np
d = [0.000, 0.166, 0.333] #ideal target distances, these can be all zeros.
p = [0.000, 0.254, 0.998] #your performance goes here
print("d is: " + str(["%.8f" % elem for elem in d]))
print("p is: " + str(["%.8f" % elem for elem in p]))
def rmse(predictions, targets):
return np.sqrt(((predictions - targets) ** 2).mean())
rmse_val = rmse(np.array(d), np.array(p))
print("rms error is: " + str(rmse_val))
Quelles impressions:
d is: ['0.00000000', '0.16600000', '0.33300000']
p is: ['0.00000000', '0.25400000', '0.99800000']
rms error between lists d and p is: 0.387284994115
La notation mathématique:
Légende des glyphes: n
est un entier positif représentant le nombre de lancers. i
représente un compteur entier positif qui énumère la somme. d
représente les distances idéales, le list2
contenant tous les zéros dans l'exemple ci-dessus. p
représente la performance, list1
dans l'exemple ci-dessus. exposant 2 signifie numérique au carré. d i est le ième indice de d
. p i est le i'ième indice de p
.
Le rmse fait par petites étapes pour qu'il puisse être compris:
def rmse(predictions, targets):
differences = predictions - targets #the DIFFERENCEs.
differences_squared = differences ** 2 #the SQUAREs of ^
mean_of_differences_squared = differences_squared.mean() #the MEAN of ^
rmse_val = np.sqrt(mean_of_differences_squared) #ROOT of ^
return rmse_val #get the ^
Comment fonctionne chaque étape de RMSE:
Soustraire un nombre d'un autre vous donne la distance qui les sépare.
8 - 5 = 3 #absolute distance between 8 and 5 is +3
-20 - 10 = -30 #absolute distance between -20 and 10 is +30
Si vous multipliez un nombre par lui-même, le résultat est toujours positif car le nombre négatif multiplié par le négatif est positif:
3*3 = 9 = positive
-30*-30 = 900 = positive
Ajoutez-les tous, mais attendez, alors un tableau avec de nombreux éléments aurait une erreur plus grande qu'un petit tableau, alors faites la moyenne par le nombre d'éléments.
Mais attendez, nous les avons tous mis au carré plus tôt pour les forcer à être positifs. Annulez les dégâts avec une racine carrée!
Cela vous laisse un nombre unique qui représente, en moyenne, la distance entre chaque valeur de list1 et sa valeur d'élément correspondante de list2.
Si la valeur RMSE diminue avec le temps, nous sommes satisfaits car la variance diminue.
RMSE n'est pas la stratégie d'ajustement de ligne la plus précise, le total des moindres carrés est:
L'erreur quadratique moyenne mesure la distance verticale entre le point et la ligne, donc si vos données ont la forme d'une banane, plates près du bas et raides près du sommet, alors le RMSE rapportera des distances plus grandes aux points hauts, mais des distances courtes à points bas alors qu'en fait les distances sont équivalentes. Cela provoque un biais où la ligne préfère être plus proche des points hauts que bas.
S'il s'agit d'un problème, la méthode des moindres carrés du total corrige ceci:
https://mubaris.com/posts/linear-regression
Gotchas qui peuvent casser cette fonction RMSE:
S'il y a des valeurs nulles ou infinies dans l'une ou l'autre des listes d'entrée, la valeur rmse de sortie n'aura pas de sens. Il existe trois stratégies pour gérer les valeurs nulles / les valeurs manquantes / les infinis dans l'une ou l'autre des listes: ignorer ce composant, le remettre à zéro ou ajouter une meilleure estimation ou un bruit aléatoire uniforme à tous les pas de temps. Chaque remède a ses avantages et ses inconvénients en fonction de la signification de vos données. En général, il est préférable d'ignorer tout composant avec une valeur manquante, mais cela biaise le RMSE vers zéro, ce qui vous fait penser que les performances se sont améliorées alors qu'elles ne l'ont pas vraiment été. L'ajout d'un bruit aléatoire sur une meilleure estimation pourrait être préférable s'il y a beaucoup de valeurs manquantes.
Afin de garantir l'exactitude relative de la sortie RMSE, vous devez éliminer toutes les valeurs nulles / infinies de l'entrée.
RMSE a une tolérance zéro pour les points de données aberrants qui n'appartiennent pas
Les carrés d'erreur quadratique moyenne reposent sur le fait que toutes les données sont exactes et toutes sont comptées comme égales. Cela signifie qu'un point errant qui se trouve dans le champ gauche va totalement ruiner tout le calcul. Pour gérer les points de données aberrants et ignorer leur énorme influence après un certain seuil, consultez Estimateurs robustes qui intègrent un seuil de rejet des valeurs aberrantes.