交叉验证

评估和提高模型的预测性能

交叉验证是用于评估A的模型评估技术机器学习算法在对其尚未培训的新数据集进行预测方面的性能。这是通过划分已知的数据集来完成的,使用子集培训算法和剩余数据进行测试。

每一轮交叉验证都涉及将原始数据集随机分区为a培训集和一个测试组.然后用训练集来训练a监督学习算法和测试集用于评估其性能。此过程重复几次,并且平均交叉验证误差用作性能指示符。

为什么交叉验证重要?

在训练模型时,重要的是不要用太复杂或太简单的算法进行过拟合或不充分拟合。您对训练集和测试集的选择对于降低这种风险至关重要。然而,划分数据集以最大化测试结果的学习和有效性是困难的。这就是交叉验证开始实施的地方。交叉验证提供了几种不同分割数据的技术,以找到模型的最佳算法。

交叉验证也有帮助选择最好的表演模型通过使用测试数据集计算误差,该数据集没有被用于训练。测试数据集有助于计算模型的准确性,以及它将如何利用未来的数据进行泛化。

常见的交叉验证技术

许多技术可用于交叉验证。最常见的是:

  • k-fold:将数据分区为k随机选择的子集(或折叠)大小的大小。一个子集用于验证使用剩余子集训练的模型。该过程重复k倍,使得每个子集完全用于验证一次。所有k分区的平均误差报告为ε。这是交叉验证最受欢迎的技术之一,但可能需要很长时间才能执行,因为模型需要重复培训。下面的图像说明了这个过程。
  • 坚持:将数据随机划分为两个指定比例的子集,用于训练和验证。这种方法只执行一次训练和测试,在大数据集上减少了执行时间,但在小数据集上谨慎地解释报告的错误。
  • 忽略:使用k-fold方法对数据进行分区,其中k等于数据中的观测总数,所有数据将作为测试集使用一次。也称为遗漏一交叉验证(LOOCV)。
  • 重复随机业者:创建多个随机分区的数据,以用作使用培训集和测试集蒙特卡罗方法和汇总所有运行的结果。这种技术与k折的想法类似,但每个测试集都是独立选择的,这意味着一些数据点可能被用于不止一次的测试。
  • 分层:分区数据,使得训练和测试集两种训练和测试集在响应或目标中具有大致相同的类比例。
  • 重组:不对数据进行分区,所有数据都用于训练模型。误差是通过将结果与实际值进行比较来评估的。这种方法通常会对性能产生过于乐观的估计,如果有足够的数据,应该避免使用这种方法。

交叉验证可能是一个计算密集型操作,因为训练和验证要进行多次。然而,在模型开发中,降低模型过拟合或欠拟合的风险是至关重要的一步。因为每个分区集都是独立的,所以可以并行执行此分析以加快进程。对于较大的数据集,推荐使用拒绝或重替换等技术,而其他技术更适合于较小的数据集,如k-fold和重复随机子抽样。

与matlab交叉验证

马铃薯®金宝app支持交叉验证和机器学习。您可以使用其中一些这些交叉验证技术分类学习者应用回归学习者应用程序

分类学习者用于培训,验证和调整分类模型的应用程序。历史列表显示各种分类器类型。

回归学习者应用程序进行培训,验证和调整回归模型。历史列表包括各种回归模型类型。

要加速计算密集型操作,可以在多核计算机,GPU和集群上执行并行计算并行计算工具箱™

有关使用交叉验证的更多信息机器学习问题,见统计和机器学习工具箱™深度学习工具箱™用于MATLAB。

也可以看看:统计和机器学习工具箱机器学习监督学习功能选择正则化线性模型ROC曲线