Weka 上的测试准确性与训练时间
Test accuracy vs Training time on Weka
据我所知,随着训练时间的增加(达到某个点),测试准确率应该会增加;但是用 weka 进行试验却产生了相反的结果。我想知道是否误解了某些事情。
我使用 diabetes.arff 进行分类,其中 70% 用于训练,30% 用于测试。我使用了 MultilayerPerceptron 分类器并尝试训练 100,500,1000,3000,5000 次。
这是我的结果,
Training time Accuracy
100 75.2174 %
500 75.2174 %
1000 74.7826 %
3000 72.6087 %
5000 70.4348 %
10000 68.6957 %
这可能是什么原因?谢谢!
你得到了一个很好的过度拟合的例子。
这里是对发生的事情的简短解释:
您的模型(无论是多层感知器、决策树还是其他任何东西都无关紧要)可以通过两种方式拟合训练数据。
第一个是概括 - 模型试图找到模式和趋势并使用它们进行预测。第二个是记住训练数据集中的确切数据点。
想象一下计算机视觉任务:将图像分为两类——人类与卡车。好的模型会发现人类图片中存在但卡车图片中没有的共同特征(平滑曲线、肤色表面)。这是一个概括。这样的模型将能够很好地处理新图片。糟糕的模型,过度拟合的模型,只会记住训练数据集的精确图像、精确像素,并且不知道如何处理测试集上的新图像。
如何防止过拟合?
处理过拟合的常用方法很少:
- 使用更简单的模型。参数越少,模型就越难记住数据集
- 使用正则化。约束模型的权重and/or在你的感知器中使用 dropout。
- 停止训练过程。再次拆分您的训练数据,这样您将拥有三部分数据:训练、开发和测试。然后仅使用训练数据训练您的模型,并在开发集上的错误停止减少时停止训练。
阅读有关过度拟合的良好起点是维基百科:https://en.wikipedia.org/wiki/Overfitting
据我所知,随着训练时间的增加(达到某个点),测试准确率应该会增加;但是用 weka 进行试验却产生了相反的结果。我想知道是否误解了某些事情。 我使用 diabetes.arff 进行分类,其中 70% 用于训练,30% 用于测试。我使用了 MultilayerPerceptron 分类器并尝试训练 100,500,1000,3000,5000 次。 这是我的结果,
Training time Accuracy
100 75.2174 %
500 75.2174 %
1000 74.7826 %
3000 72.6087 %
5000 70.4348 %
10000 68.6957 %
这可能是什么原因?谢谢!
你得到了一个很好的过度拟合的例子。
这里是对发生的事情的简短解释:
您的模型(无论是多层感知器、决策树还是其他任何东西都无关紧要)可以通过两种方式拟合训练数据。
第一个是概括 - 模型试图找到模式和趋势并使用它们进行预测。第二个是记住训练数据集中的确切数据点。
想象一下计算机视觉任务:将图像分为两类——人类与卡车。好的模型会发现人类图片中存在但卡车图片中没有的共同特征(平滑曲线、肤色表面)。这是一个概括。这样的模型将能够很好地处理新图片。糟糕的模型,过度拟合的模型,只会记住训练数据集的精确图像、精确像素,并且不知道如何处理测试集上的新图像。
如何防止过拟合?
处理过拟合的常用方法很少:
- 使用更简单的模型。参数越少,模型就越难记住数据集
- 使用正则化。约束模型的权重and/or在你的感知器中使用 dropout。
- 停止训练过程。再次拆分您的训练数据,这样您将拥有三部分数据:训练、开发和测试。然后仅使用训练数据训练您的模型,并在开发集上的错误停止减少时停止训练。
阅读有关过度拟合的良好起点是维基百科:https://en.wikipedia.org/wiki/Overfitting