如何在sklearn中使用支持向量机时实际使用验证集

时间:2014-01-26 03:09:28

标签: machine-learning cross-validation

在使用SVM时,我发现在原始数据集上执行三向分割是一种很好的做法,例如70/15/15分割。

此分割对应于培训的%70,测试的%15和所谓的“验证”的%15。

我很清楚为什么这是一个很好的做法,但我不确定实际执行此操作所需的细节。很多在线资源都在讨论重要性,但我似乎无法找到对该过程的明确(或至少是算法)描述。例如,sklearn讨论它here但在提供任何可靠工具之前就停止了。

这是我的想法:

  • 使用训练集
  • 训练算法
  • 使用测试集
  • 查找错误率
  • ?调整参数
  • 使用验证集
  • 再次获取错误率

如果有人能指出我的资源方向,我将不胜感激。

1 个答案:

答案 0 :(得分:1)

验证集在所有监督学习算法中的作用是找到算法参数的优化(如果有的话)。

将数据拆分为traing / validation / test数据后,训练算法的最佳做法是:

  1. 选择初始学习参数
  2. 使用训练集和参数训练算法
  3. 使用验证集(交叉验证测试)获得(验证)准确性
  4. 更改参数并继续2,直到找到的参数达到最佳验证准确度
  5. 使用测试集获得(测试)准确度,该测试集表示训练算法对新看不见的数据的实际预期准确度。
  6. 有一些高级方法可用于执行交叉验证测试。像libsvm这样的一些库包括它们: k-fold交叉验证

    在k-fold交叉验证中,您将列车数据随机分成k个相同大小的部分。您使用k-1部分训练并与剩余部分交叉验证。你用不同的子集做k次,最后用平均值。

    维基百科是一个很好的来源: