我们会在*测试*集上计算成本J(θ)吗?

我相当确定答案是否定的,但想确认一下…

在训练神经网络或其他学习算法时,我们会计算成本函数J(θ),作为算法对训练数据拟合程度的表达(数值越高表示拟合得越差)。在训练算法时,我们通常期望看到J(θ)随着梯度下降的每次迭代而下降。

但我只是好奇,是否有计算J(θ)对我们的测试数据的价值?

我认为答案是否定的,因为我们只评估一次测试数据,我们只会得到一个J(θ)的值,我认为这个值除了与其他值比较外是没有意义的。


回答:

你的问题触及了一个关于术语的常见模糊点:即验证集和测试集之间的区别(维基百科条目这个Cross Validated帖子可能有助于解决这个问题)。

所以,假设你确实指的是测试集而不是验证集,那么:

  1. 你说的对,这个集合只在整个建模过程结束时使用一次

  2. 一般来说,你假设我们不在这组数据上计算成本J(θ)是不正确的。

关于(2)的进一步说明:实际上,测试集的唯一用途正是为了评估我们的最终模型,在一个完全没有用于拟合过程各个阶段的数据集上(请注意,验证集已经被间接使用,即用于模型选择);为了评估它,我们显然必须计算成本。

我认为可能的混淆来源是你可能只考虑了分类设置(尽管你没有在问题中指定这一点);确实,在这种情况下,我们通常对模型在业务指标(例如准确率)上的表现感兴趣,而不是优化成本J(θ)本身。但在回归设置中,优化成本和业务指标很可能是同一件事(例如RMSE、MSE、MAE等)。而且,正如我希望已经清楚的那样,在这种设置下,在测试集上计算成本绝不是没有意义的,尽管我们不与其他值进行比较(它为我们的最终模型提供了一个“绝对”的性能指标)。

你可能会发现这个这个我的回答对于区分损失和准确率很有帮助;引用这些回答中的内容:

损失和准确率是不同的东西;大致来说,从业务角度来看,我们真正感兴趣的是准确率,而损失是从数学角度来看,学习算法(优化器)试图最小化的目标函数。更粗略地说,你可以将损失视为业务目标(准确率)到数学领域的“翻译”,这种翻译在分类问题中是必要的(在回归问题中,通常损失和业务目标是相同的,或者至少在原则上可以是相同的,例如RMSE)…

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注