我一直在寻找夜晚而没有解决方案。
功能太多会导致参数太多,但参数数量与摇摆曲线之间的关系是什么?
答案 0 :(得分:9)
在机器学习中,您将数据拆分为训练集和测试集。训练集用于拟合模型(调整模型参数),测试集用于评估模型在看不见的数据上的表现。
过度拟合意味着您的模型在训练集上比在测试集上做得更好。它很好地适应了训练数据并且总体上很糟糕。
过度拟合可能有很多原因,通常是以下几种组合:
答案 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答案中提到的三个原因可以缩小为“稀疏数据”。这是一个重要的概念,因为数据的稀疏性取决于要素的数量。
如果您以最简单的形式想到任何概念并找到一种可视化的方法,那么总是容易理解。
因此,让我们首先看看稀疏数据如何使用二维图解决一个参数问题。如果您的假设是一个高阶多项式并且数据点的数量很小,那么它将只适合数据。如果您有更多数据点,尽管它不会过拟合,因为它必须使许多数据点的平均误差最小化(超出其可能超出的水平),这将导致它从“中间”传递出去。
尽管我们后来了解到在同一问题中还有一个附加功能。这将意味着现有训练集的每个数据点也具有描述它的第二个值,即第二特征的值。如果我们现在尝试绘制它,我们可能会看到类似以下的内容:
这意味着我们之前看到的只是数据点在y,θ1平面上的投影,这就是我们错误地认为我们有足够的数据点的原因。现在,我们已经全面了解了问题,可以说数据点还不够,数据稀疏。
因此,通过添加一项附加功能,我们扩展了问题的空间,从而为其增加了一个维度,并且扩展了该空间一部分的数据点。
因此,如果我们尝试对数据进行假设拟合,我们可能会得到类似的结果,这可能是过度拟合。
总而言之,添加更多功能会扩大假设空间,从而使数据更加稀疏,这可能会导致过度拟合的问题。
答案 5 :(得分:0)
@dimyG
我相信您的回答非常准确。对于需要总结为什么太多功能会导致过度拟合问题的人,流程如下:
1)太多的特征导致维数诅咒
2)维数的诅咒会导致数据稀疏(尤其是数据点太少时)
3)数据稀疏会导致模型过度拟合