SVM 参数的重要性是否因数据子样本而异?

数据挖掘 机器学习 分类 支持向量机
2022-02-11 17:30:28

我正在对 100.000 个观察值训练支持向量机分类器 (SVM)。我想使用交叉验证尝试不同的参数组合(包括内核类型)。然而,对这些不同的参数值进行优化在计算上是昂贵的。因此,我想在验证集上的 5.000 个观察值的子集上测试它们,然后根据这些结果选择在 100.000 个观察值上训练的最终模型的参数。

那么我的问题是,这些参数中是否存在某些内在因素会使这种方法出现问题。更具体地说,是否有一个参数,在整个数据集上的训练需要不同的值才能获得最佳性能?

我正在使用以下内核及其括号中的参数:

  • rbf (伽马, C)
  • 聚(度,C)
  • 乙状结肠(伽马,C)
  • 线性(伽玛)。
1个回答

理论上,如果您的数据集有足够大的随机样本,它应该代表较大数据群中会影响参数值和性能之间关系的特征。在我看来,的数据样本对于您想要做的事情来说可能太小了。当我对测试/开发数据集执行交叉验证时,我通常在附近的某个地方留出留出测试/评估数据,并使用5%10%90%对于我的开发工作,但是,正如您所指出的,考虑到您所面临的计算限制,这可能太大了。根据您正在处理的应用程序类型,您可以查看采样数据中的特征分布,并将其与更大群体中的特征分布进行比较。如果这两组具有可比性,那么您可能可以进行开发。处理较小的数据集。我说这取决于您正在开发的应用程序的类型,因为许多统计学家会认为这是作弊,因为查看保留数据通常不是好的模型评估实践。这是我推荐的程序:

  1. 分离出的数据用于保留评估。10%
  2. 将剩余的分成参数优化,剩余部分用于最终参数 eval。90%5%10%
  3. 比较参数优化和最终参数评估数据集的特征分布,如果它们不可比较,则重新绘制样本(在90%开发样本)
  4. 当你有一个好的子样本时,在小参数优化数据集上运行你的参数优化实验。
  5. 使用您的最终参数设置,在90%组合参数优化和最终参数评估数据集。
  6. 通过训练进行最终模型分析90%数据集和分类10%保留评估集。

可能还值得考虑优化您的分析管道。例如,文件 I/O、特征生成和特征提取是您正在使用的工作流程的一部分,还是您是否已离线完成所有这些工作并且只关心 SVM 评估部分?