machine-learning - 何时使用评分与指标来评估 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)
解决方案
它们有何不同?
他们没有;这些实际上只是不同的术语,以声明同一件事。
准确地说,评分是根据某些指标(或score)衡量模型性能的过程。参数的 scikit-learn 术语选择(如您的第一个片段中所示)相当不幸(它实际上意味着评分函数),因为 MSE(及其变体,如负 MSE 和 RMSE)是指标或分数。但实际上,如您的示例片段所示,这两个术语用作同义词并且经常互换使用。scoring
这里真正感兴趣的区别不是“分数”和“指标”之间的区别,而是损失(通常称为成本)和准确度(用于分类问题)等指标之间的区别;这通常是新用户混淆的根源。您可能会在以下线程中发现我的答案很有用(忽略某些标题中提到的 Keras,答案通常适用):
推荐阅读
- wordpress - 在 Wordpress 上更改滚动页面的背景颜色
- delphi - 在 Delphi (VCL/Windows) 中更改之前清除 TBitmap
- c# - 具有多种身份验证方案的 .NET Core API 测试
- c# - 难以理解的警告
- pdf - 创建旋转的地理空间 PDF
- python-3.x - UnicodeDecodeError:“charmap”编解码器无法解码位置 805 中的字节 0x81:字符映射到
- python - 数据框迭代不会增加变量
- java - 修复 Jackson 无法构造 Java.time.LocalDate 的实例
- html - 如何突出显示div中的搜索文本
- php - 转义包含 < 和 > 的 HTML 属性