如何测试我的分类器是否过度拟合?

Sim*_*ely 1 python artificial-intelligence classification machine-learning scikit-learn

我在此处提供了 .tsv 文件中的一组数据。我编写了几个分类器来决定给定的网站是短暂的还是常青的。

现在,我想让他们变得更好。通过与人们交谈,我知道我的分类器“过度拟合”了数据;我正在寻找一种可靠的方法来证明这一点,以便下次编写分类器时,我将能够运行测试并查看是否过度拟合或拟合不足。

这样做的最佳方法是什么?我愿意接受所有建议!

我花了几周的时间在谷歌上搜索这个主题,但没有发现任何规范或可信的方法可以有效地做到这一点,因此任何回应将不胜感激。我将对这个问题悬赏

编辑:

假设我的分类器输出一个 .tsv 包含:

the website UID<tab>the likelihood it is to be ephemeral or evergreen, 0 being ephemeral, 1 being evergreen<tab>whether the page is ephemeral or evergreen
Run Code Online (Sandbox Code Playgroud)

lej*_*lot 5

检查分类器“效率”的最简单方法是执行交叉验证:

  • 拿走你的数据,我们称它们为X
  • 将 X 分成 K 个大小相等的批次
  • 对于每个 i=1 到 K:
    • 在所有批次上训练你的分类器,但我
    • 在 i 上测试
  • 返回平均结果

一个更重要的方面 - 如果您的分类器使用任何未经训练的参数、一些常量、阈值等,而是由用户给出的,您不能只选择在上述过程中给出最佳结果的参数。这必须在“在除第 i 之外的所有批次上训练你的分类器”中以某种方式自动化。换句话说 - 您不能使用测试数据来拟合您的模型的任何参数。一旦完成此操作,有四种可能的结果:

  • 训练误差较低,但远低于测试误差——过拟合
  • 两个错误都很低 - 好的
  • 两个错误都很高 - 欠拟合
  • 训练误差很高,但测试很低 - 实施错误或数据集非常小