关于在训练/有效/测试集上减去均值的问题

机器算法验证 机器学习 交叉验证 数据预处理
2022-03-06 09:07:20

我正在做数据预处理,然后在我的数据上构建一个 Convonets。

我的问题是:假设我有一个包含 100 张图像的总数据集,我正在计算 100 张图像中每一张的平均值,然后从每张图像中减去它,然后将其分成训练集和验证集,我也这样做在给定测试集上处理的步骤,但根据此链接,这似乎不是正确的方法:http: //cs231n.github.io/neural-networks-2/#datapre

常见的陷阱。关于预处理的重要一点是,任何预处理统计信息(例如数据均值)只能在训练数据上计算,然后应用于验证/测试数据。例如计算均值并从中减去整个数据集中的每张图像,然后将数据拆分为训练/验证/测试分割是错误的。相反,必须仅在训练数据上计算平均值,然后从所有分割(训练/验证/测试)中平均减去。 "

我猜作者的意思是,不要计算平均值并在每个图像中减去它,而是计算整个图像集的平均值(即(image1 + ... + image100)/100)并将平均值减去每个图像。

不是很明白,谁能解释一下?并且还可能解释为什么我做错了(如果确实错了)。

1个回答

假设您总共有 100 张图像;90 个是训练数据,10 个是测试数据。

作者正确地断言,使用整个 100 个图像样本来计算样本均值μ^是错的。那是因为在这种情况下你会有信息泄露。来自“样本外”元素的信息将移至您的训练集。特别是对于估计μ^,如果您使用 100 个而不是 90 个图像,您可以让您的训练集具有比应有的更明智的平均值。因此,您的训练错误可能会低于应有的水平。

估计的μ^在整个培训/验证/测试过程中很常见。相同μ^用于将所有数据居中。(我稍后会提到这一点,因为我有轻微的印象,您使用每个单独图像的平均值来使该图像居中。)