交叉验证

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

交叉验证是一个评估技术用来评估模型机器学习算法的性能在预测新数据集,它没有训练。分区已知的数据集,这是通过使用一个子集训练算法和剩余的数据进行测试。

每一轮的交叉验证涉及到原始数据集随机划分为一训练集和一个测试组。然后使用训练集来训练监督式学习算法和测试集是用来评估其性能。这个过程重复几次,平均交叉验证错误作为性能指标。

交叉验证为什么重要?

训练模型时,重要的是不要overfit或者underfit算法太复杂或太简单。你所选择的训练集和测试集是至关重要的减少这种风险。然而,划分数据集最大化学习和测试结果的有效性是很困难的。这就是交叉验证来付诸实践。交叉验证提供了许多技术,将不同的数据,找到最好的算法模型。

交叉验证也有助于选择表现最好的模型通过计算错误使用的测试数据集,它没有被训练使用。测试数据集可以帮助计算的准确性与未来的数据模型和如何推广。

常见的交叉验证技术

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

  • k-fold:数据分区到k随机选择的子集(或折叠)大致相等的大小。一个子集用于验证模型训练使用剩下的子集。这个过程被重复k次这样每个子集到底一旦用于验证。据所有k分区的平均误差ε。这是一个最受欢迎的交叉验证的技术,但需要很长时间来执行,因为需要反复训练模型。下图说明了这个过程。
交叉验证图像的例子
  • 坚持:分区数据随机分成两个子集指定比率的培训和验证。这个方法执行培训和测试一次,减少执行时间在大型集,但小心解释错误报告在小数据集。
  • Leaveout:分区数据使用k-fold方法k等于总数的观测数据,所有数据将作为测试集使用一次。也被称为分析交叉验证(LOOCV)。
  • 重复随机业者:创建多个随机分区的数据作为训练集和测试集使用蒙特卡罗所有运行方法和聚合的结果。这种技术也有类似的想法k-fold但每个独立测试集选择,这意味着一些数据点可能不止一次用于测试。
  • 分层:分区数据,训练集和测试集都有大致相同的类比例或目标的响应。
  • Resubstitution:不分区数据,所有数据用于训练模型。的错误评估结果与实际值进行比较。这种方式常常产生过于乐观估计性能和应避免如果有足够的数据。

交叉验证可以计算密集型操作,因为训练和验证完成几次。然而,它是一个关键的步骤,模型开发减少过度拟合的风险或underfitting模型。因为每个分区组是独立的,你可以执行这个分析并行加速这个过程。对于更大的数据集,坚持技术或resubstitution推荐,而另一些则更适合更小的数据集随机业者k-fold和重复等。

交叉验证与MATLAB

MATLAB®支持交叉验证和机器学习。你可以使用其中的一些交叉验证技术分类学习者应用回归学习者应用

分类学习者应用培训

分类学习者应用培训、验证和优化分类模型。历史列表中显示了各种分类器类型。

回归学习者应用培训

回归学习者应用培训、验证和优化回归模型。历史列表中包括各种回归模型类型。

速度计算密集型操作,你可以多核计算机上执行并行计算,gpu和集群并行计算工具箱™

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

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

Baidu
map