machine-learning - 分割训练和测试数据

标签 machine-learning classification

有人可以推荐机器学习中训练数据和测试数据划分的最佳百分比是多少吗?如果我将训练数据和测试数据分成 30-70% 会有什么缺点?

最佳答案

不幸的是,没有一种“正确的方法”来分割你的数据,人们使用不同的值,这些值是根据不同的启发法、直觉和个人经验/偏好选择的。一个好的起点是 Pareto principle (80-20)。

有时,使用简单的分割并不是一种选择,因为您可能拥有太多数据 - 在这种情况下,如果您的算法计算复杂,您可能需要对数据进行采样或使用较小的测试集。一个重要的部分是随机选择您的数据。权衡非常简单:测试数据较少 = 算法的性能会有更大的方差。 训练数据较少 = 参数估计会有较大方差。

对我个人来说,比分割大小更重要的是,您显然不应该总是在同一个测试分割上只执行一次测试,因为它可能会有偏差(您的分割可能是幸运的,也可能是不幸的)。这就是为什么您应该对多种配置进行测试(例如,您运行测试 X 次,每次选择不同的 20% 进行测试)。在这里,您可能会遇到所谓的模型方差的问题 - 不同的分割将导致不同的值。这就是为什么您应该多次运行测试并对结果进行平均。

使用上述方法,您可能会发现测试所有可能的拆分很麻烦。一种行之有效的数据分割方法是所谓的cross validation。正如您在 wiki 文章中所读到的,它有多种类型(详尽的和非详尽的)。请特别注意k 折交叉验证

关于machine-learning - 分割训练和测试数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31771627/

相关文章:

python - RandomizedSearchCV 使用相同的 random_state 给出不同的结果

audio - 如何使用 MFCC 向量对单个音频文件进行分类?

machine-learning - Weka OneR 给出?作为分类器模型

TDD 和贝叶斯垃圾邮件过滤器问题

python - 在keras中生成多类分类的混淆矩阵

python - 在 Keras 中将多个输入样本映射到单个输出样本

artificial-intelligence - Church 编程语言的应用

machine-learning - 机器学习: training model from test data

python - 分类:使用 sklearn 的 PCA 和逻辑回归

python - 使用高斯混合模型和 scikit learn 进行多类分类