我们应该一直做简历吗?


9

我的问题:即使是相对较大的数据集,我也应该进行简历吗?

我有一个相对较大的数据集,我将对数据集应用机器学习算法。

由于我的电脑运行不快,因此CV(和网格搜索)有时会花费很长时间。特别是,由于许多调整参数,SVM永远都不会停止。因此,如果我进行简历,那么我需要选择一个相对较小的数据。

另一方面,验证集也应该很大,因此我认为使用与训练集大小相同(或更大)的验证集是个好主意。(也就是说,我使用大型验证集代替CV进行参数调整。)

所以我现在至少有两个选择。

  1. 对小数据集进行简历。
  2. 使用相对较大的训练集和验证集而不使用简历。
  3. 其他想法。

最好的主意是什么?无论是理论上还是实践上的意见都值得欢迎。


1
这个问题显然应该是CW。
H. Shindoh

1
大什么?有多少个观察?有多少个特征/变量/回归变量?
吉姆(Jim)

1
这取决于PC。也就是说,我不是在考虑需要数台计算机的“大数据”。
H. Shindoh

Answers:


3

通常,您不必一直使用交叉验证。CV的目的是获得仅使用一个测试集即可得到的分类器可概括性的更稳定的估计。如果您的数据集非常庞大,则不必使用CV,因此将数据添加到训练集中不会改善您的模型,并且测试集中很少的错误分类只是随机的,不会真正改变您的性能指标。

通过设置小的训练集和较大的测试集,您的估计将有偏差。因此,这可能会比使用更多训练数据和发现的最佳超参数对于更大的数据集可能会有所不同的结果更糟,这仅仅是因为更多的数据将需要较少的正则化。

但是,获得最佳的超参数并不是最重要的部分,并且不会显着提高性能。您应该集中精力理解问题,创建良好的功能以及使数据保持良好状态。

您可以考虑以下几点来加快速度:

  1. 用更少的功能训练它。使用特征选择和/或降维来减小问题的大小
  2. 对SVM使用预缓存的内核
  3. 使用不需要在网格中选择超级参数的算法。尤其是线性模型,例如具有脊/套索/弹性净罚分的逻辑回归,甚至线性SVM。根据实现的不同,这些分类器可以拟合选定路径中所有超参数的模型,而仅需拟合一个即可
  4. 针对您的问题类型使用更快的实现方式(您必须通过Google搜索)

即使电脑速度较慢,您也可以:

  1. 使用更多核心
  2. 使用GPU

2

交叉验证是一种工具,用于评估由于数据(以及不确定性的学习算法)中的随机性而导致的性能指标差异。

因此,如果您仅使用一个分组,例如80%的训练+ 20%的测试,并从该单个实验报告您的性能指标,则极有可能有人尝试使用完全相同的参数来重现您的实验,但会发现不同的性能指标(有时非常不同)。除非您提供相同的精确拆分,否则毫无意义。

回到您的问题,我认为您绝对应该使用CV 报告您的绩效(例如,做10倍CV并报告绩效指标的平均值和标准偏差)。现在,为了调整算法,您可以使用从训练集中采样的更小的验证集(确保它不包含在测试集中)。

如果您担心无法使用较小的集合找到最佳的超参数,则可能是使算法过度适合了数据集的细节。如果您无法使用较小的样本找到能够在所有折叠中提供合理性能的配置,则该算法在实践中可能不是很有用。

还请记住,某些算法太慢/在某些配置中无法很好地扩展。这也是实际模型选择的一部分。

由于您提到了SVM,因此,当尝试通过网格搜索为非线性内核查找参数时,大多数实现当然会很慢。网格搜索具有指数复杂性,因此仅需很少的参数即可使用。还请记住,大多数库都提供了合理的默认参数(或者至少您设置了一个参数,并且有试探法来设置其他参数)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.