我相当确定答案是否定的,但想确认一下…
在训练神经网络或其他学习算法时,我们会计算成本函数J(θ),作为算法对训练数据拟合程度的表达(数值越高表示拟合得越差)。在训练算法时,我们通常期望看到J(θ)随着梯度下降的每次迭代而下降。
但我只是好奇,是否有计算J(θ)对我们的测试数据的价值?
我认为答案是否定的,因为我们只评估一次测试数据,我们只会得到一个J(θ)的值,我认为这个值除了与其他值比较外是没有意义的。
回答:
你的问题触及了一个关于术语的常见模糊点:即验证集和测试集之间的区别(维基百科条目和这个Cross Validated帖子可能有助于解决这个问题)。
所以,假设你确实指的是测试集而不是验证集,那么:
-
你说的对,这个集合只在整个建模过程结束时使用一次
-
一般来说,你假设我们不在这组数据上计算成本J(θ)是不正确的。
关于(2)的进一步说明:实际上,测试集的唯一用途正是为了评估我们的最终模型,在一个完全没有用于拟合过程各个阶段的数据集上(请注意,验证集已经被间接使用,即用于模型选择);为了评估它,我们显然必须计算成本。
我认为可能的混淆来源是你可能只考虑了分类设置(尽管你没有在问题中指定这一点);确实,在这种情况下,我们通常对模型在业务指标(例如准确率)上的表现感兴趣,而不是优化成本J(θ)本身。但在回归设置中,优化成本和业务指标很可能是同一件事(例如RMSE、MSE、MAE等)。而且,正如我希望已经清楚的那样,在这种设置下,在测试集上计算成本绝不是没有意义的,尽管我们不与其他值进行比较(它为我们的最终模型提供了一个“绝对”的性能指标)。
你可能会发现这个和这个我的回答对于区分损失和准确率很有帮助;引用这些回答中的内容:
损失和准确率是不同的东西;大致来说,从业务角度来看,我们真正感兴趣的是准确率,而损失是从数学角度来看,学习算法(优化器)试图最小化的目标函数。更粗略地说,你可以将损失视为业务目标(准确率)到数学领域的“翻译”,这种翻译在分类问题中是必要的(在回归问题中,通常损失和业务目标是相同的,或者至少在原则上可以是相同的,例如RMSE)…