为什么太多的功能导致过度拟合?

时间:2016-06-12 16:04:36

标签: machine-learning

我一直在寻找夜晚而没有解决方案。

功能太多会导致参数太多,但参数数量与摇摆曲线之间的关系是什么?

6 个答案:

答案 0 :(得分:9)

在机器学习中,您将数据拆分为训练集和测试集。训练集用于拟合模型(调整模型参数),测试集用于评估模型在看不见的数据上的表现。

过度拟合意味着您的模型在训练集上比在测试集上做得更好。它很好地适应了训练数据并且总体上很糟糕。

过度拟合可能有很多原因,通常是以下几种组合:

  • 太强大的型号:例如你允许多项式达到100度。多项式达到5度你会得到一个功能强大得多的模型,它不太容易过度拟合
  • 数据不足:获取更多数据有时可以解决过度拟合问题
  • 功能太多:您的模型可以通过单个功能识别单个数据点,并为单个数据点构建特殊情况。例如,考虑分类问题和决策树。如果你有具有二进制特征和n个点的特征向量(x1,x2,...,xn),并且每个特征向量只有一个1,那么树可以简单地将其用作标识符。

答案 1 :(得分:1)

这只是一个例子,一般来说 - 为了适应非常复杂的数据集(嘈杂的数据集),你需要非常“歪斜”的曲线(因为你的功能通常是平滑的)。这不是真的,它总是看起来像这样,给定特定类的近似值,你可以得到不同的现象,如“尖刺”功能等。重点是 - 更多可调参数,更多复杂函数,并且当你有训练集时,指定函数的实际值 - 函数可以采用任何形状外部训练集,这就是为什么它被绘制为“wigly”。

然而,它不起作用。如果你只有很少的参数,你仍然可以过度拟合,并具有“wigly”功能,请考虑例如

unstack(x, as.character(val)~key)
如果w足够大,你可以使余弦任意“密集”,从而适合几乎任何-1,+ 1的数据标记

答案 2 :(得分:1)

拥有很多功能就像拥有很多尺寸一样。实际上,这意味着您的数据更加稀疏,因此您更有可能最终得出不合理的结论。

想象一下,你必须决定一个统治者需要多长时间,因为你在商店里卖它们。如果唯一的尺寸是长度,那么你可以通过制作5个或6个不同的标尺来看看它们的销售情况。

现在想象一下,你要决定卖什么尺寸的盒子。现在你有3个维度。如果5种不同的尺寸足以在单一尺寸上进行测试,那么现在可能需要5 * 3 = 125种不同的尺寸。如果您的数据只有20个不同的框,那么您可能会得出人们想要的大小的错误结论。

幸运的是,您可以减少维度。例如,如果盒子可以侧面转动(比如它是一个移动的盒子,而你只需要底部不会掉出来),你可能会发现人们只关心它们。“

答案 3 :(得分:1)

假设我们有n+1变量来适应和m个训练样例。 我们还假设m < n+1(意味着更少的训练数据)。假设我们使用线性回归。所以我们可以说我们有m个方程式 =&GT; theta0*x0_i + theta1*x1_i ... + thetaN*xN_i = y_i (for i = 1,...m)。 所以我们有更多的变量和更少的方程。因此,如果我们将(n + 1-m)变量设置为零并求解m个变量,我们可以得到一个给出零误差(最小)的模型。因此,通过更多功能,您的梯度下降或任何其他优化算法可以将函数clost移动到0,这相当于求解m方程,这绝对是一个很差的泛化。 但是如果m > n+1,则很难找到完全满足m方程的变量。 我希望它能清除你的怀疑。

答案 4 :(得分:1)

我有完全相同的问题,并且由于我无法根据现有答案真正理解原因,因此我做了一些额外的搜索并考虑了一段时间。这是我发现的。随时纠正我哪里出错了。

过度拟合的主要原因是稀疏数据(对于给定的模型)。

对于您给定的问题,this答案中提到的三个原因可以缩小为“稀疏数据”。这是一个重要的概念,因为数据的稀疏性取决于要素的数量。

如果您以最简单的形式想到任何概念并找到一种可视化的方法,那么总是容易理解。

因此,让我们首先看看稀疏数据如何使用二维图解决一个参数问题。如果您的假设是一个高阶多项式并且数据点的数量很小,那么它将只适合数据。如果您有更多数据点,尽管它不会过拟合,因为它必须使许多数据点的平均误差最小化(超出其可能超出的水平),这将导致它从“中间”传递出去。 enter image description here

现在,假设我们还有另一个问题,显然数据不是稀疏的。 enter image description here

尽管我们后来了解到在同一问题中还有一个附加功能。这将意味着现有训练集的每个数据点也具有描述它的第二个值,即第二特征的值。如果我们现在尝试绘制它,我们可能会看到类似以下的内容: enter image description here

这意味着我们之前看到的只是数据点在y,θ1平面上的投影,这就是我们错误地认为我们有足够的数据点的原因。现在,我们已经全面了解了问题,可以说数据点还不够,数据稀疏。

因此,通过添加一项附加功能,我们扩展了问题的空间,从而为其增加了一个维度,并且扩展了该空间一部分的数据点。

因此,如果我们尝试对数据进行假设拟合,我们可能会得到类似的结果,这可能是过度拟合。

enter image description here

如果我们有更多的数据点,尽管最终可能会得到如下所示: enter image description here

总而言之,添加更多功能会扩大假设空间,从而使数据更加稀疏,这可能会导致过度拟合的问题。

答案 5 :(得分:0)

@dimyG

我相信您的回答非常准确。对于需要总结为什么太多功能会导致过度拟合问题的人,流程如下:

1)太多的特征导致维数诅咒

2)维数的诅咒会导致数据稀疏(尤其是数据点太少时)

3)数据稀疏会导致模型过度拟合