sklearn.metrics.mean_squared_error越大越好(否定)?

Eda*_*ame 16 python metrics scikit-learn mean-square-error

一般来说,mean_squared_error越小越好.

当我使用sklearn指标包时,它在文档页面中说:http://scikit-learn.org/stable/modules/model_evaluation.html

所有得分对象都遵循以下惯例:较高的返回值优于较低的返回值.因此,测量模型和数据之间距离的度量(如metrics.mean_squared_error)可用作neg_mean_squared_error,它返回度量的否定值.

在此输入图像描述

但是,如果我去:http://scikit-learn.org/stable/modules/generated/sklearn.metrics.mean_squared_error.html#sklearn.metrics.mean_squared_error

它说它是Mean squared error regression loss,没有说它被否定了.

如果我查看源代码并检查那里的例子:https://github.com/scikit-learn/scikit-learn/blob/a24c8b46/sklearn/metrics/regression.py#L183它是正常的mean squared error,即越小越好.

所以我想知道我是否错过了关于文档中否定部分的任何内容.谢谢!

Viv*_*mar 26

实际的功能"mean_squared_error"对负面部分没有任何意义.但是当您尝试'neg_mean_squared_error'时实现的功能将返回分数的否定版本.

请检查源代码,了解它在源代码中的定义:

neg_mean_squared_error_scorer = make_scorer(mean_squared_error,
                                        greater_is_better=False)
Run Code Online (Sandbox Code Playgroud)

观察param greater_is_better的设置方式False.

现在所有这些得分/损失都用于其他各种事情,如cross_val_score,cross_val_predict,GridSearchCV等.例如,在'accuracy_score'或'f1_score'的情况下,得分越高越好,但如果出现损失(错误),则降低得分更好.要以相同的方式处理它们,它返回负数.

因此,该实用程序用于以相同方式处理分数和损失,而无需更改特定丢失或分数的源代码.

所以,你没有错过任何东西.您只需要处理要使用损失函数的场景.如果您只想计算mean_squared_error,则只能使用mean_squared_error.但是,如果您想使用它来调整模型,或者使用scikit中的实用程序进行cross_validate,请使用'neg_mean_squared_error'.

也许添加一些细节,我会解释更多.

  • 对于负值,“更大”是指幅​​度较大还是幅度较小?按照惯例,对于负值,越大应该意味着幅度越小,但这里是这样吗? (2认同)