时间序列的蒙特卡罗交叉验证

网站建设2年前发布
18 00

交叉验证应用于时间序列需要注意是要防止泄漏和获得可靠的性能估计本文将介绍蒙特卡洛交叉验证。这是一种流行的TimeSeriesSplits方法的替代方法。,时间序列的蒙特卡罗交叉验证,TimeSeriesSplit通常是时间序列数据进行交叉验证的首选方法。下图1说明了该方法的操作方式。可用的时间序列被分成几个大小相等的折叠。然后每一次折首先被用来测试一个模型,然后重新训练它。除了第一折只用于训练。,时间序列的蒙特卡罗交叉验证,使用TimeSeriesSplit进行交叉验证的主要好处如下:,TimeSeriesSplit的主要缺点是跨折叠的训练样本量是不一致的。这是什么意思?,假设将该方法应用于图1所示的5次分折。在第一次迭代中,所有可用观测值的20%用于训练。但是,这个数字在上次迭代中是80%。因此,初始迭代可能不能代表完整的时间序列。这个问题会影响性能估计。,那么如何解决这个问题?,蒙特卡罗交叉验证(MonteCarloCV)是一种可以用于时间序列的方法。这个想法是在不同的随机起点来获取一个时间周期的数据,下面是这种方法的可视化描述:,时间序列的蒙特卡罗交叉验证,像TimeSeriesSplit一样,MonteCarloCV也保留了观测的时间顺序。它还会保留多次重复估计过程。,MonteCarloCV与TimeSeriesSplit的区别主要有两个方面:,MonteCarloCV最初由Picard和Cook使用。详细信息可以查看参考文献。,经过详细研究MonteCarloCV。这包括与TimeSeriesSplit等其他方法的比较。MonteCarloCV可以获得更好的估计,所以我一直在使用它。你可以在参考文献[2]中查看完整的研究。,不幸的是,scikit-learn不提供MonteCarloCV的实现。所以,我们决定自己手动实现它:,MonteCarloCV接受四个参数:,每次迭代的训练和验证大小取决于输入数据。我发现一个0.6/0.1的分区工作得很好。也就是说,在每次迭代中,60%的数据被用于训练。10%的观察结果用于验证。,下面是配置的一个例子:,该实现也与scikit-learn兼容。以下是如何结合GridSearchCV:,我希望你发现MonteCarloCV有用!,

© 版权声明

相关文章