我正在处理的数据集总共有81条记录。其中,我把训练分成54条记录,其余的分给测试用。我注意到了一些事情:
这是正常还是我做错了什么?
发布于 2016-09-22 07:01:38
在某些情况下这是完全正常的。如果您从统计的角度考虑学习问题,那么学习就是通过尝试估计给定输入变量的输出变量的条件估计来完成的。当你在学习的时候,你基本上需要主要的组成部分:来自训练的样本数据和学习算法,你使用这两者来建立一个对上述条件概率的估计。现在考虑每个分量与期望的估计概率之间的关系。
培训数据只是所有可能的数据中的一个样本。你没有所有可能的数据,因为如果你有它,你就不需要学习,对吗?所以一个样本只是数据的一小部分。此示例可以或多或少涵盖整个可能的数据域。一个即时的想法是,一个更大的样本比一个更小的样本更好。作为一个极端的例子来说明这一想法是只有一个观察。但样本的大小并不是全部。有可能你想要估计的概率非常复杂。这个空间的复杂性也需要比一个简单的概率空间更多的数据。举个例子,考虑学习美国男性平均身高的问题。如果假设是正态分布的话,有一个小的随机样本就足够了。另一方面,以学习识别语言为例。因为对个人来说发音是不一样的,所以你需要一个很大的样本来揭示预测和丢弃数据中无用的东西所需要的有用的关系。
没有任何模型适合于表达你所学习到的信号的真实模型。例如,如果您的真实信号类似于二次多项式,那么除了某些特殊情况外,不可能适当地与线性模型相匹配。因此,这个模型也有一个复杂性,它可以与你想要在学习过程中估计的条件概率的复杂性进行比较。即使你知道真正的模型,并且你的学习模型能够描述它,有时你需要更多的数据来使模型符合。作为另一个例子,考虑一个随机森林,它估计一个简单的线。随机森林是非常灵活的,因为底层的统计模型基本上是一个常数,给定输入空间中的一个局部区域。考虑到这一点,即使模型能够估计出真实的模型,因为模型是一个局部近似,你需要在空间的每一个有用区域中都有大量的数据来学习一个很好的近似。
我们考虑了单个组件的比较和你想要估计的概率。但你两者都有。这使得我们更难理解在学习的围墙背后发生了什么。因此,对于给定的模型,没有通用的判断数据是否足够的方法。因此,通常情况下,对于不同的训练集大小,一种算法可以有不同的精度,而对于不同的算法,所需的训练集大小可以具有近似相等的精度。
我在实践中经常尝试的一件事是,给出一个学习模型,以检查随着学习样本数量的增加,准确性是如何演变的。如果您的培训样本足够大,则通常有一个小样本大小的区域,其中由于数据不足而误差很大。在此之后,您将有一个区域,其中的错误几乎保持不变,这也许是您的模型做的最好的地方。对于某些模型来说,更大的样本规模也有可能导致性能下降,可能是由于模型无法描述存在什么,或者是由于过度拟合或其他情况。
您可以使用某种引导验证来跟踪这类行为,在这种情况下,用于培训的示例被反复地用于增加长度。大约有20个5%大小的样本,20个10%大小的样本,等等。这种信息可以给你一个概念,样本大小与你的学习问题之间的关系,为一个给定的算法。
发布于 2016-09-23 08:38:41
您的培训和测试错误受培训规模的影响。看看这个情节,通常被称为学习曲线:

在这个例子中,我们计算了一个朴素贝叶斯模型的训练分数和测试分数(交叉验证分数),因为我们在训练数据集中增加了样本数。分数越高,模型的表现就越好。
更大的训练集降低了分数,因为学习算法更难学习一个正确表示所有训练数据的模型。然而,随着我们增加训练集的大小,测试分数也会增加,这是由于模型的泛化能力的提高。
正如您所看到的,这两行在图中达到了一个适当的大小限制。这意味着,为了正确地学习,一个算法需要足够的数据,足以让我们到达这个图的右边。一旦我们达到这个渐近线,我们就不能通过使用更多的训练数据来提高测试分数。
现在,请注意,这个图只指训练集的大小,而不是测试集的大小,但是从它推断,我可能假设当您在测试集中只使用2-3个示例时,您没有足够的测试数据来确定您的测试分数。对于其他2-3个不同的测试示例,您甚至可能得到完全不同的结果。因此,我假设较大测试集的30%测试错误是最可行的值。
似乎,为了提高模型的性能,您必须寻找其他原因:您的特性定义得很好吗?你有足够的训练数据吗?
https://datascience.stackexchange.com/questions/14152
复制相似问题