我什么时候使用评分与指标来评估 ML 性能

When do I use scoring vs metrics to evaluate ML performance

嗨,'scoring' 和 'metrics' 之间的基本区别是什么?这些用于衡量性能,但它们有何不同?

如果你看到这个例子

在下面的交叉验证中使用 '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)

how do they differ?

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

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

这里真正感兴趣的区别不是"score"和"metric"之间,而是loss之间(通常称为cost ) 和准确性等指标(用于分类问题);这通常是新用户混淆的根源。您可能会在以下主题中发现我的答案很有用(忽略某些标题中提到的 Keras,答案通常适用):