首页 > 解决方案 > 何时使用评分与指标来评估 ML 性能

问题描述

嗨,“评分”和“指标”之间的基本区别是什么。这些用于衡量性能,但它们有何不同?

如果你看到这个例子

在下面的交叉 val 使用 'neg_mean_squared_error' 进行评分

X = array[:, 0:13]
Y = array[:, 13]
seed = 7
kfold = model_selection.KFold(n_splits=10, random_state=seed)
model = LinearRegression()
scoring = 'neg_mean_squared_error'
results = model_selection.cross_val_score(model, X, Y, cv=kfold, scoring=scoring)
print("MSE: %.3f (%.3f)") % (results.mean(), results.std())

但在下面的 xgboost 示例中,我使用的是 metrics = 'rmse'

cmatrix = xgb.DMatrix(data=X, label=y)
params = {'objective': 'reg:linear', 'max_depth': 3}
cv_results = xgb.cv(dtrain=cmatrix, params=params, nfold=3, num_boost_round=5, metrics='rmse', as_pandas=True, seed=123)

print(cv_results)

标签: machine-learningmetricsscoring

解决方案


它们有何不同?

他们没有;这些实际上只是不同的术语,以声明同一件事。

准确地说,评分是根据某些指标(或score)衡量模型性能的过程。参数的 scikit-learn 术语选择(如您的第一个片段中所示)相当不幸(它实际上意味着评分函数),因为 MSE(及其变体,如负 MSE 和 RMSE)是指标分数。但实际上,如您的示例片段所示,这两个术语用作同义词并且经常互换使用。scoring

这里真正感兴趣的区别不是“分数”和“指标”之间的区别,而是损失(通常称为成本)和准确度(用于分类问题)等指标之间的区别;这通常是新用户混淆的根源。您可能会在以下线程中发现我的答案很有用(忽略某些标题中提到的 Keras,答案通常适用):


推荐阅读