在线性或逻辑回归中,如果我们找到一个完全适合训练集的假设函数,那么这应该是一件好事,因为在这种情况下,我们已经使用了 100% 的信息来预测新信息。
虽然它被称为过度拟合并被称为坏事。
通过使假设函数更简单,我们实际上可能会增加而不是减少噪声。
为什么会这样?
6 回答
因为你实际上并没有从你的训练集中“学习”任何东西,你只是适应了你的数据。
想象一下,你有一个一维回归
x_1 -> y_1
...
x_n -> y_1
以这种方式定义的函数
y_n, if x = x_n
f(x)=
0, otherwise
会给你完美的配合,但它实际上是无用的。
希望,这有点帮助:)
当您尝试“太努力”以使训练集中的示例符合分类规则时,就会发生过度拟合。
它被认为是坏事,主要有两个原因:
- 数据可能有噪音。过于努力地对 100% 的示例进行正确分类,会使噪音变得重要,并在忽略这种噪音的同时给你一个坏规则——通常会好得多。
- 请记住,分类训练集只是真实数据的一个样本。如果您容忍一些错误分类的样本,此解决方案通常比您得到的解决方案更复杂。根据Occam's Razor,您应该更喜欢更简单的解决方案,因此忽略一些样本会更好,
示例:
根据奥卡姆剃刀,您应该容忍错误分类的样本,并假设它是噪声或不显着,并采用该数据集中的简单解决方案(绿线):
假设您的回归解释了数据中所有偏差的来源,那么您可能会争辩说您的回归完全适合数据。但是,如果您知道系统中的所有(我的意思是所有)影响,那么您可能不需要回归。您可能有一个可以完美预测新信息的分析解决方案。
实际上,你所掌握的信息还达不到这个完美的水平。噪声(测量误差、部分可观测性等)会导致数据出现偏差。作为回应,回归(或其他拟合机制)应寻求数据的总体趋势,同时尽量减少噪声的影响。
实际上,该陈述并不完全正确。如果您的假设函数是线性的,那么匹配 100% 的数据是完全可以的。每个连续非线性函数都可以通过一个线性函数在局部近似,该线性函数给出了关于它的局部行为的重要信息。
如果数据匹配 100%,则将 100 个数据点与二次曲线匹配也很好。您可以确信您没有过度拟合数据,因为数据始终显示二次行为。
但是,通过使用足够高的多项式函数,总是可以得到 100% 的拟合。但是,即使没有其他人指出的噪音,您也不应该假设您的数据具有某种高度多项式行为,而没有对该假设进行某种理论或实验确认。表明多项式行为的两个良好指标是:
- 您有一些理论上的理由期望数据在方向限制之一中增长为 x^n。
- 随着越来越多的数据被收集,您的数据一直支持固定次数多项式拟合。
但是请注意,即使指数和倒数关系可能具有符合足够高阶多项式的数据,但它们并不倾向于遵守上述两个条件中的任何一个。
关键是您的数据拟合需要对预测有用。您总是知道线性拟合会在本地提供信息,但是拟合的点越多,该信息就越有用。即使只有两个点和噪声,线性拟合仍然可以给出迄今为止收集的数据的最佳理论外观,并建立数据的第一个期望值。但是,除此之外,对三点使用二次拟合或对四点使用三次拟合并不能有效地提供更多信息,因为它假设局部和渐近行为信息都加上一个点。你需要为你的假设函数提供理由。这种理由可以来自更多观点或理论。
(有时会出现的第三个原因是
- 您有理论和实验理由相信误差和噪声的贡献不会超过某些界限,并且您可以采用多项式假设来查看局部导数以及匹配数据所需的行为。
这通常用于理解数据以构建理论模型,而没有良好的理论起点。您仍然应该努力使用尽可能小的多项式次数,并寻找用它们在无限级数中可能表示的(倒数、指数、高斯等)来替换系数中的模式。)
尝试以这种方式想象它。您有一个函数,您可以从中选择n
不同的值来表示样本/训练集:
y(n) = x(n), n is element of [0, 1]
但是,既然你想建立一个健壮的模型,你想给你的训练集添加一点噪音,所以你实际上在生成数据时添加了一点噪音:
data(n) = y(n) + noise(n) = x(n) + u(n)
其中,u(n)
我用平均 0 和标准偏差 1 标记了一个均匀的随机噪声:U(0,1)
。很简单,它是一个噪声信号,它最有可能取一个值0
,而不太可能取一个远离它的值0
。
然后你画出 10 个点作为你的训练集。如果没有噪音,他们都将躺在一条线上y = x
。由于存在噪声,可以表示它们的多项式函数的最低阶可能是 10 阶的,函数如下:y = a_10 * x^10 + a_9 * x^9 + ... + a_1 * x + a_0
.
如果您考虑,仅使用来自训练集的信息的估计,您可能会得到一个比 10 阶多项式函数更简单的函数,并且它会更接近真实函数。
进一步考虑,您的真实函数可以具有[0, 1]
区间之外的值,但由于某种原因,只能从该区间收集训练集的样本。现在,在训练集的区间之外,一个简单的估计可能会表现得更好,而如果我们要完美地拟合训练集,我们会得到一个过度拟合的函数,整个函数都有很多起伏:)
过度拟合被称为坏的,因为它对真正的解决方案有一定的影响。过拟合的解决方案是 100% 拟合所使用的训练数据,但添加任何小数据点后,模型将发生巨大变化。这称为模型的方差。因此,我们尝试在这两个因素之间取得平衡,以便模型不会在小的数据变化时发生剧烈变化,但也可以合理地正确预测输出。