我很难掌握如何使用交叉验证进行超参数调整和评估的标准方法。我尝试做10折简历。以下哪项是正确的方法?
所有数据都用于参数调整(例如,使用带有交叉验证的随机网格搜索)。这将返回最佳超参数。然后,使用这些超参数构造一个 new 模型,并可以通过进行交叉验证来对其进行评估(用于训练的九折,用于测试的九折,最后将诸如准确性或混淆矩阵之类的指标平均化)。
我发现的另一种方法是先将数据分为训练和测试集,然后仅对训练集执行交叉验证。然后将使用测试集进行评估。但是,据我了解,这将破坏交叉验证的整个概念,因为其背后的思想是独立于拆分,对吗?
最后,我的主管告诉我,我将使用八种训练方法,一种用于超参数估计,另一种用于测试(因此进行评估)。但是,我找不到使用这种方法的任何材料。这是一个标准程序,还是我刚刚才明白那里有什么问题?
答案 0 :(得分:1)
通常,您可以将数据分为3组。
测试集:
测试集是最简单的解释。
创建测试集后(数据的15-30%)。您可以将此数据集存储在某个位置,并且在您认为自己完成之前不要再触摸该数据集。
-原因很简单,一旦您开始关注此数据集(例如增加AUC或...),那么您就开始过度拟合数据...
对于验证集(+/-),也是如此。当您对参数等进行超调时,您将开始专注于此集合……这意味着您不再在泛化了。 (一个好的模型应该适用于所有数据,而不仅仅是测试和验证集)。
话虽如此,现在您只设置了培训和验证。
交叉验证:使用交叉验证的某些动机是为了更好地泛化和查看模型/数据(想象一下,某些特殊情况仅存在于验证集中,等等。)+您不会为理所当然。 -的主要缺点10倍交叉验证是...需要10倍的时间才能完成...但它给您带来更值得信赖的结果...(例如,如果您进行10倍交叉验证并且您的AUC在80 85 75 77 81 65之间波动...->那么您可能会有一些数据问题...在理想情况下,AUC之间的差异应该很小...
不过……我会怎么做(这还取决于您的资源,模型,时间,数据集大小)
创建10个随机折叠。 (并跟踪它们)
如果可能的话,进行10倍网格搜索(以大致了解每个参数的重要性,(您不必采取任何小步骤。例如,随机森林具有max_features参数,但是如果您会注意到,当该值为log2时,所有模型的性能都会下降,然后您就可以消除该超级参数)
,但对于每个新实验始终使用相同的折叠倍数,这样您就可以将模型彼此进行比较。 +通常,您会发现某些折痕比其他折痕更难,但是对于所有模型而言,它们都是困难的