我有一个6维训练数据集,其中有一个完美的数字属性,它以这种方式分离所有训练样例:如果TIME <200则该示例属于class1,如果TIME&gt; = 200,则示例属于class2。 J48创建一个只有1级的树,并将此属性作为唯一节点。
但是,测试数据集不遵循此假设,并且所有示例都被错误分类。我无法弄清楚这种情况是否被认为是过度拟合。我会说这不是因为数据集那么简单,但据我所知,过度拟合的定义,它意味着对训练数据的高度拟合,而这就是我所拥有的。有什么帮助吗?
答案 0 :(得分:1)
但是,测试数据集不遵循此假设,并且所有示例都被错误分类。我无法弄清楚这种情况是否被认为是过度拟合。我会说这不是因为数据集那么简单,但据我所知,过度拟合的定义,它意味着对训练数据的高度拟合,而这就是我所拥有的。有什么帮助吗?
通常很好的训练分数和糟糕的测试意味着过度拟合。但是这假设了数据的IID,并且您明显违反了这个假设 - 您的训练数据与测试数据完全不同(训练数据有明确的规则,对测试数据没有意义)。换句话说 - 您的火车/测试分裂是不正确的,或者您的整个问题不遵循使用统计ml的基本假设。当然,在你的情况下,我们经常使用模型而没有关于数据的有效假设 - 最自然的方法是删除一个违反假设最多的特征 - 用于构造节点的特征。这种“专家决策”应该在构建任何分类器之前完成,你必须考虑“测试场景与训练分类器相比有什么不同”并删除显示这种差异的东西 - 否则你的数据会有很大的偏差收集,因此统计方法将失败。
答案 1 :(得分:1)
是的,这是一个过度装备。创建训练集的第一条规则是使其尽可能与其他任何集合一样。您的训练组明显不同于其他训练组。它有嵌入其中的答案,而你的测试集没有。任何学习算法都可能找到与答案的相关性并使用它,就像J48算法一样,将其他变量视为噪声。该软件相当于Clever Hans。
您可以通过删除变量或通过训练从整个可用集中随机绘制的集合来解决此问题。但是,由于您知道存在嵌入主要提示的子集,因此应删除提示。
你很幸运。有时这些提示可能非常微妙,在您开始将模型应用于未来数据之前,您将无法发现这些提示。