为什么我们更关心机器学习中的测试错误而不是预期的测试错误?

机器算法验证 机器学习 期望值 损失函数 条件期望
2022-02-03 13:23:29

在 Hastie、Tibshirani 和 Friedman (2013) The Elements of Statistic Learning 的第 7.2 节中,我们有目标变量和一个估计损失记为,然后作者定义测试误差: 和预期的测试错误: 然后作者声明:Yf^(X)T={Y1,...,YN,X1,...,XN}L(Y,f^(X))

ErrT=E[L(Y,f^(X))|T],
Err=E(ErrT).

的估计将是我们的目标......ErrT

我的问题:为什么我们更关心而不是ErrTErr

我会认为衡量预期损失的数量,无论使用什么训练样本,都会比一个特定训练样本的预期损失更有趣。我在这里想念什么?

另外,我在这里读过这个答案(基于我可能不正确的阅读)似乎同意我的观点,即是感兴趣的数量,但建议我们经常谈论因为它可以通过交叉验证来估计。但这似乎与教科书的第 7.12 节相矛盾,该节(再次通过我可能不正确的阅读)似乎表明交叉验证ErrErrTErrErrT

我在这个问题上绕圈子,所以我想我会在这里问。

3个回答

为什么我们更关心ErrT比 Err?

我只能猜测,但我认为这是一个合理的猜测。

前者涉及我们现在拥有的训练集的错误。它回答“如果我要使用这个数据集来训练这个模型,我会期望什么样的错误?”。很容易想到想要知道这个数量的人的类型(例如数据科学家、应用统计学家,基本上任何使用模型作为达到目的的手段的人)。这些人并不关心模型在新训练集本身上的属性,他们只关心他们制作的模型将如何执行。

将此与后一个错误进行对比,后者是前一个错误在所有训练集中的预期。它回答“如果我要收集无限序列的新训练示例,我要计算ErrT 对于无限序列中的每个训练集,该错误序列的平均值是多少?”。很容易想到关心这个数量的人的类型(例如研究人员、理论家等)。这些人他们不关心模型的任何一个实例(与上一段中的人相反),他们对模型的一般行为感兴趣。

那么为什么是前者而不是后者呢?本书主要关注当读者手头有一个数据集并想知道该模型如何在新数据上执行时,如何拟合和验证模型。

+1 对Demetri Pananos 的回答

很可能我们应用了相同的模型f到两个不同的训练数据集TT. ErrT可能与ErrT- 要么低得多,要么高得多。当我们实际申请时,这可能具有更大的重要性f比预期的错误Err尽一切可能Ts。

例如,我对超市补货进行预测,并将我的模型应用于很多很多训练数据集(本质上是一种产品在一家商店的历史销售)。损失直接转化为必要的安全存量。了解每种产品和商店的必要安全库存比了解“总体”安全库存要重要得多。

计算学习理论,通常关注的是限制Err,例如VC 维度(不依赖于训练集)。支持向量机是一个这样的界限的近似实现(尽管恕我直言,使它运作良好的是正则化,而不是铰链损失部分)。或许可以这么说Err在学习算法的设计中很重要,其中ErrT将它们应用于特定问题/数据集时更相关。