为什么交叉验证重要?
在培训模型时,重要的是不要用过于复杂或太简单的算法过度装备或贴合它。您选择的培训集和测试集对于降低这种风险至关重要。但是,除以数据集以最大化测试结果的学习和有效性都很困难。这是交叉验证的实践的地方。交叉验证提供了多种技术,以不同地拆分数据,以找到模型的最佳算法。
交叉验证也有帮助选择最好的表演模型利用未进行训练的测试数据集计算误差。测试数据集有助于计算模型的准确性,以及它将如何与未来的数据进行泛化。
常见的交叉验证技术
许多技术可用于交叉验证。最常见的是:
- k-fold:将数据分区为k随机选择的子集(或折叠)大小的大小。一个子集用于验证使用剩余子集训练的模型。该过程重复k倍,使得每个子集完全用于验证一次。所有k分区的平均误差报告为ε。这是交叉验证最受欢迎的技术之一,但可能需要很长时间才能执行,因为模型需要重复培训。下面的图像说明了这个过程。
- 坚持:将数据按照指定的比例随机分成两个子集进行训练和验证。这种方法只执行一次训练和测试,这减少了在大数据集中的执行时间,但在小数据集中要谨慎解释报告的错误。
- 忽略:使用k-fold方法对数据进行划分,其中k等于数据中观察的总数,所有数据都将作为一个测试集使用一次。也称为留一交叉验证(LOOCV)。
- 重复随机业者:创建多个随机分区的数据,以用作使用培训集和测试集蒙特卡罗方法,并汇总所有运行的结果。这种技术与k-fold的想法类似,但每个测试集都是独立选择的,这意味着一些数据点可能会被用于多次测试。
- 分层:分区数据,使得训练和测试集两种训练和测试集在响应或目标中具有大致相同的类比例。
- 重组:不对数据进行分区,所有数据用于训练模型。通过将结果与实际值进行比较来评估误差。这种方法通常会对性能产生过于乐观的估计,如果有足够的数据,就应该避免使用这种方法。
交叉验证可能是一个计算密集型操作,因为训练和验证是多次完成的。然而,降低模型过拟合或过拟合的风险是模型开发的关键步骤。因为每个分区集都是独立的,所以可以并行执行这个分析,以加快进程。对于更大的数据集,建议使用像holdout或resubstitution这样的技术,而其他技术更适合于较小的数据集,如k倍和重复随机子抽样。
与matlab交叉验证
马铃薯®万博1manbetx支持交叉验证和机器学习。您可以使用其中一些这些交叉验证技术分类学习者应用和回归学习者应用程序。
要加速计算密集型操作,可以在多核计算机,GPU和集群上执行并行计算并行计算工具箱™。
有关使用交叉验证的更多信息机器学习问题,见统计和机器学习工具箱™和深度学习工具箱™使用MATLAB。