交叉验证

评估和改进模型的预测性能

交叉验证是一种模型评估技术,用于评估机器学习该算法在未经训练的新数据集上进行预测的性能。这是通过对已知数据集进行分区来完成的,使用子集来训练算法,并使用剩余数据进行测试。

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

为什么交叉验证很重要?

在培训模型时,重要的是不要用过于复杂或太简单的算法过度装备或贴合它。您选择的培训集和测试集对于降低这种风险至关重要。但是,除以数据集以最大化测试结果的学习和有效性都很困难。这是交叉验证的实践的地方。交叉验证提供了多种技术,以不同地拆分数据,以找到模型的最佳算法。

交叉验证也有帮助选择性能最佳的模型通过使用测试数据集计算错误,该数据集未用于训练。测试数据集有助于计算模型的准确性以及如何通过未来数据概括。

常见的交叉验证技术

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

  • K-Fold.:将数据划分为大小大致相同的k个随机选择的子集(或折叠)。一个子集用于验证使用剩余子集训练的模型。此过程重复k次,以便每个子集仅用于一次验证。所有k个分区的平均误差报告为ε。这是交叉验证中最流行的技术之一,但可能需要很长时间才能执行,因为模型需要反复训练。下图说明了该过程。
  • 坚持:将数据随机分割为训练和验证的指定比率的两个子集。此方法仅执行一次培训和测试,这在大型集上削减了执行时间,但在小数据集上小心解释报告的错误。
  • 发酵剂:使用k折叠方法分区数据,其中k等于数据中的观察总数,并且所有数据将作为测试集使用一次。也称为休假交叉验证(LOOCV)。
  • 重复随机子采样:使用创建多个随机数据分区,以用作训练集和测试集蒙特卡洛方法论和聚合会导致所有运行。该技术具有类似的思想与k折叠相似,但是每个测试集被独立选择,这意味着一些数据点可能用于测试多次。
  • 分层:对数据进行分区,使训练集和测试集在响应或目标中具有大致相同的类比例。
  • 重新替代:没有分区数据,所有数据都用于培训模型。通过比较对实际值的结果来评估错误。这种方法通常会产生过度乐观的性能估计,如果有足够的数据,应避免。

由于培训和验证完成了多次,交叉验证可以是计算密集型操作。但是,它是模型开发的关键步骤,以降低过度装备或磨损模型的风险。因为每个分区集是独立的,所以您可以并行执行此分析以加快过程。对于较大的数据集,建议使用熔断或重新提交的技术,而其他数据则更适合较小的数据集,例如K折叠和重复的随机子采样。

MATLAB交叉验证

MATLAB®万博1manbetx支持交叉验证和机器学习。您可以将其中一些交叉验证技术用于分类学习者应用程序回归学习者应用程序.

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

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

为了加快计算密集型操作的速度,您可以使用并行计算工具箱™.

有关使用交叉验证的详细信息,请参见机器学习问题,请参阅统计和机器学习工具箱™深度学习工具箱™与matlab一起使用。

另见:统计和机器学习工具箱,机器学习,监督学习,特征选择,正则化,线性模型,ROC曲线