谁能告诉我交叉验证分析给出的确切结果吗?它仅仅是平均精度,还是可以提供参数经过调整的任何模型?
因为,我在某处听说交叉验证用于参数调整。
谁能告诉我交叉验证分析给出的确切结果吗?它仅仅是平均精度,还是可以提供参数经过调整的任何模型?
因为,我在某处听说交叉验证用于参数调整。
Answers:
添加到乔纳森的答案。
但是,如果将交叉验证用于参数调整,则实际上样本将成为模型的一部分。因此,您需要另一个独立的样本来正确衡量最终模型的性能。
交叉验证用于测量模型性能,它不仅可以测量平均精度:交叉验证可以衡量
的第二件事是与更改训练数据有关的模型稳定性:交叉验证建立了许多“代理”模型,这些模型可以通过训练集略有不同。如果模型稳定,则所有这些替代模型都是等效的;如果训练不稳定,则替代模型相差很大。您可以量化此“大量变化”,例如,作为同一样本的不同替代模型的预测的方差(在迭代/重复交叉验证中),或例如作为替代模型参数的方差。
为了增加以前的答案,我们将从头开始:
有几种方法可以使模型过度拟合训练数据,有些方法很明显,有些则不太合适。首先,最重要的一个是将训练参数(权重)与数据过度拟合(逻辑回归中的曲线拟合参数,神经网络中的网络权重等)。然后,您将对数据中的噪声进行建模-如果过度拟合,您不仅会捕获底层的生成函数,还会捕获由于样本量以及样本不能完全代表种群这一事实而引起的随机性。通过惩罚模型的某些属性(通常较为复杂),可以在某种程度上缓解这种过度拟合的情况。这可以通过以下方法来完成:一旦训练样本的性能不再显着提高,就停止训练;通过从神经网络中删除一些神经元(称为辍学),https://ieeexplore.ieee.org/document/614177/)等。但是,这些正则化策略本身已参数化(何时停止?要去除多少神经元?等)。此外,大多数机器学习模型都有许多超参数,需要在训练开始之前进行设置。这些超参数在参数调整阶段进行调整。
这将我们带到了第二种更为微妙的过度拟合类型:超参数过度拟合。交叉验证可用于查找“最佳”超参数,方法是在k-1折的样本上从头开始反复训练模型,并在最后一折进行测试。
那到底是怎么做到的呢?根据搜索策略(由tenshi提供),您可以设置模型的超参数,并使用不同的测试折叠每次k次训练模型。您可以“记住”模型在所有测试折叠上的平均性能,并对另一组超参数重复整个过程。然后,选择与交叉验证期间的最佳性能相对应的一组超参数。如您所见,此过程的计算成本在很大程度上取决于需要考虑的超参数集的数量。这就是为什么已经开发出一些选择该集合的策略的原因(在这里,我将概括一下tenshi所说的内容):
但是,这还不是故事的结局,因为超参数可能(也将会)过拟合数据。在大多数情况下,您可以使用它,但是,如果您想最大化模型的泛化能力,则可能还想尝试并规范化超参数。首先,您可以使用嵌套网格搜索更好地评估样本外数据的性能(详细信息:http : //scikit-learn.org/stable/auto_examples/model_selection/plot_nested_cross_validation_iris.html,讨论:嵌套交叉验证用于模型选择),或仅使用未用于超参数调整的验证集。至于超参数空间中的正则化,这或多或少是一个悬而未决的问题。有些想法不是选择最佳的超参数值集,而是选择接近中间值的东西。理由如下:最佳超参数值很可能会过拟合数据,仅是因为其性能优于其他火车数据,不良参数只是不良,但是中间的参数可能比最佳参数具有更好的泛化性。 。吴安德(Andrew Ng)撰写了一篇有关它的论文。另一个选择是限制搜索空间(通过在此处引入强烈的偏见来进行正则化-显然不会选择搜索空间之外的值)。
旁注:在大多数情况下,将准确性用作性能指标是一个非常糟糕的主意,请查看f1和f_beta得分-这些指标在大多数情况下将更好地反映您实际尝试在二进制分类问题中进行优化的内容。
总结一下:交叉验证本身可以用来评估模型在样本外数据上的性能,但也可以与超参数空间中的一种搜索策略结合使用来调整超参数。寻找良好的超参数可以避免或至少减少过度拟合,但是请记住,超参数也可能使数据过度拟合。
如果您来自scikit学习背景,那么此答案可能会有所帮助。
k倍交叉验证用于将数据拆分为多个k
分区,然后在k-1
分区上训练估计器,然后在分区上进行测试kth
。这样,选择哪个分区应该是kth
分区,就有k
可能。因此,您可以获得估算器k
所有k
可能性的结果。
这些是计算上昂贵的方法,但是如果您要尝试使用不同的估计器,则可以尝试使用这三种方法与CV一起进行超参数调整:
一世。GridSearchCV-所有估计量的超参数的所有可能P和C的详尽列表。最后,使用特定估算器CV均值的均值给出最佳超参数。
ii。RandomizedSearchCV-不执行超参数的所有P和C,而是采用随机方法,给出最可能的精确估计量,从而节省更多计算量。
iii。BayesSearchCV-不属于scikit-learn
贝叶斯优化,但用于进行随机搜索和拟合结果的贝叶斯优化。
tl:dr:由于要传递的数据,CV仅用于避免估计器的高偏差和高方差。希望对您有所帮助。