En général, le mean_squared_error
est le plus petit, mieux c'est.
Lorsque j'utilise le package de métriques sklearn, il est indiqué dans les pages du document: http://scikit-learn.org/stable/modules/model_evaluation.html
Tous les objets marqueurs suivent la convention voulant que les valeurs de retour plus élevées soient meilleures que les valeurs de retour plus basses. Ainsi, les métriques qui mesurent la distance entre le modèle et les données, telles que metrics.mean_squared_error, sont disponibles sous la forme neg_mean_squared_error qui renvoie la valeur annulée de la métrique.
Cependant, si je vais à: http://scikit-learn.org/stable/modules/generated/sklearn.metrics.mean_squared_error.html#sklearn.metrics.mean_squared_error
Il dit que c'est le Mean squared error regression loss
, n'a pas dit qu'il est nié.
Et si j’ai regardé le code source et vérifié l’exemple à cet endroit: https://github.com/scikit-learn/scikit-learn/blob/a24c8b46/sklearn/metrics/regression.py#L183 c’est le cas le mean squared error
normal, c'est-à-dire le plus petit, mieux c'est.
Je me demande donc si j'ai oublié quelque chose à propos de la partie annulée dans le document. Merci!
La fonction actuelle "mean_squared_error"
ne contient rien sur la partie négative. Mais la fonction implémentée lorsque vous essayez 'neg_mean_squared_error' renverra une version négative de la partition.
Veuillez vérifier le code source pour savoir comment il est défini dans le code source :
neg_mean_squared_error_scorer = make_scorer(mean_squared_error,
greater_is_better=False)
Observez comment param greater_is_better
est défini sur False
.
Maintenant, tous ces scores/pertes sont utilisés dans diverses autres choses comme cross_val_score, cross_val_predict, GridSearchCV, etc. Par exemple, dans les cas de 'precision_score' ou de 'f1_score', le score le plus élevé est le meilleur, mais en cas de pertes (erreurs), le plus bas Le score est meilleur. Pour les traiter tous les deux de la même manière, il renvoie le négatif.
Donc, cet utilitaire est conçu pour gérer les scores et les pertes de la même manière sans changer le code source pour la perte ou le score spécifique.
Donc, vous n'avez rien manqué. Vous devez juste vous occuper du scénario dans lequel vous souhaitez utiliser la fonction de perte. Si vous voulez seulement calculer le mean_squared_error, vous pouvez utiliser mean_squared_error
uniquement. Mais si vous souhaitez l'utiliser pour ajuster vos modèles, ou cross_validate à l'aide des utilitaires présents dans scikit, utilisez 'neg_mean_squared_error'
.
Peut-être ajouter quelques détails à ce sujet et je vais expliquer plus.
C'est une convention pour implémenter votre propre objet scoring [ 1 ]. Et cela doit être positif, car vous pouvez créer une fonction sans perte pour calculer un score positif personnalisé. Cela signifie qu'en utilisant une fonction de perte (pour un objet score), vous obtenez une valeur négative.
La plage d'une fonction de perte est la suivante: (optimum) [0. ... +] (e.g. unequal values between y and y')
. Par exemple, vérifiez la formule de l'erreur quadratique moyenne, elle est toujours positive:
Source de l'image: http://scikit-learn.org/stable/modules/model_evaluation.html#mean-squared-error