The original version by Jason Brownlee link | Translated and Editted by MonkeeYe
导读:blog原文信息量不大,干货不多,阅读时重点主要集中在名词了解上,可以了解一些古典方法的名称。引文[1]和[2]是同一个作者,也是那个大赛的冠名者,怎么感觉有点王婆卖瓜。。。引文[3]讲的是机器学习方法的对比。
总的来说,时序预测问题有很多有意思的问题,也体现了前辈们很多迷人的哲学思想。时序分析是各行各业都会用到的工具,查阅资料时发现文中介绍的古典算法多用于工业界、金融界,解决的问题相对比较简单,全是单变量模型,属于趋势预测模型,对于高维数据肯定无法胜任。高维数据的解决方案肯定是ML算法,人很难理解超过3个维度的数据,更别说找联系和预测了。
个人认为古典算法对使用者的专业知识要求更高,因为参数的选取是预测的关键,只有真正了解你的数据,才能得到好的结果。而ML方法(Machine Learning)的优势在于强大算力和其普适性,即便没有很强的专业知识,也可以通过参数搜索等方式得到一个较好的结果。
古典算法的优点是强迫你去思考数据本身,去学习领域知识,去思考,缺点就是已经不适合这个时代了,如文中提到的,可以作为baseline来测试新算法,但注定要随着时代的前进逐渐被取代,或是以新的方式再呈现。
ML算法是时代的产物,符合目前这个时代的生产力,缺点是容易让人变成调参侠,从而忽略了数据本身的一些统计学特征。
殊途同归,如果真的想透彻地研究某个问题,最终两方面肯定都会涉及到,其背后的统计学知识是相通的,一定要针对你的具体问题去分析、思考。
这世上本没有什么好的方法,适合你的问题,就是好的方法。
越来越多的人认为机器学习是解决所有预测问题的终极解决方案。但最近的一项研究对比了几种具有代表性的古典算法、机器学习算法、深度学习算法,测试了它们在众多迥异的单变量时间序列预测问题上的表现。结果表明:线性方法、指数平滑法等原理简单的古典方法表现出了更好的性能,优于决策树、多层感知机、长短时记忆网络等复杂精细的新方法。这一发现强调了古典算法的重要性,提出应当把古典算法的结果作为评价新算法的基础,确保新算法真的在增加预报复杂度的同时提高了预报效果。
Spyros Makridakis于2018年发表的论文[1:1]对比了古典算法与现代机器学习算法在真实世界数据上的表现,该论文分为7个部分:
该研究的目标是清楚地展示古典算法和机器学习算法(ML算法)在大量特征迥异的时序问题上的预测能力,是针对大量盲目崇拜ML算法文章的回应,作者认为这些文章使用的数据有限,很难说明ML算法优势的普遍性。作者在文中指出:
从字面上看,数百篇论文都提出了新的机器学习算法,论述了它们在方法上的进步和准确性上的提高。然而,关于它们作为通用预测工具的客观证据却十分有限。
对于这些文章最后得出的结论,作者提出了3点质疑:
为了回答这些疑问,Spyros对比了8种古典算法和10种ML方法,选取了1045个月度数据集,分别进行了单步和多步预测检验。虽然论文最后对于方法的好坏评价并不是适合所有情况,但大量的结果数据确实具有一定的参考价值。
文章[1:2]中使用的是第三届Makridakis大赛[4]的部分数据集进行评估的,共选取了1045个数据集,时间分辨率均为月间隔。M3大赛中用到的数据集来源于工业、金融、社会学等领域界,均为真实世界数据,M3比赛的数据及数量为3003个,时间分辨率上包括了小时间隔、月间隔、年间隔等。
下面的表格描述了这3003个数据集的行业和时间分辨率情况。

M3大赛专注于寻找时序预测中的优秀算法,2000年的一篇论文[2:1]记录了M3比赛的结果,论述在单变量时序问题的预测上,简单的方法优于复杂的方法(包括神经网络),论文[2:2]中这样写到:
通过本文、前两届M3竞赛和许多其他研究证明,新的ML模型都是基于详尽的理论构建和复杂的方法构架,它们能够更好地将统计模型与特定问题的历史数据结合起来,但在后续数据的预测效果上,这些方法并没有表现出更多的优势。
文章[1:3]共对比了8种古典算法和10种ML算法,古典算法包括:
其中前8种ML算法来自2010年的一篇文章[3:1],文章[1:4]试图重现这些算法:
最后2种ML算法属于现代架构下的神经网络模型:
数据预备的方法来自文章[3:2]:每一组数据都进行了幂变换、去周期、去趋势。并且,受到这些处理方式的启发,作者在使用多层感知机前,采用了5种不同的数据预处理方式:
结果表明,幂变换+去周期是效果最好的,有时还需要结合去趋势性。
参考sMAPE指标,最好的组合是7号(Box-Cox幂变换+去周期性),而根据MASE指标,最好的组合是10号(Box-Cox幂变换+去周期性+去趋势性)。
—— Statistical and Machine Learning forecasting methods: Concerns and ways forward, 2018.
所有模型都进行了单步预测的检验,检验的方法是将最后18个观测值作为测试数据,使用之前的观测真值进行预测,结果表明MLP和BNN在ML方法中效果最好,出人意料的是2个立足于现代神经网络框架下的涉设计RNN和LSTM模型表现的竟然很糟糕。最终在所有的方法里,古典算法都表现得更好,其中ETS和ARIMA的表现最佳,这与之前的其他一些研究结果吻合,最终的结果如下图所示:

多步预测才用了3种方式:
古典方法再次打败了ML方法,这次表现的最好的是Theta,ARIMA和Comb(一个指数平滑的组合)。
该研究表明了在单变量时序预测问题上,不论是单步预测还是多步预测,古典算法均具有一定优势。ML算法不仅表现更差,计算也更耗时。这一研究结果是让我们重新审视了古典算法的价值,至少应该把古典算法当做ML算法的测试基准。文章同时还表达了数据预处理的重要性。
但该研究没有考虑到的情况包括:
这一研究提出既然ML算法在其他AI领域都表现优异,没有理由在单变量时序预测问题上表现这么差,算是对ML从业人员提出了小疑问。作者还点评了LSTM和RNN,这两个方法是经常被用于时序预测问题的深度学习方法,但在本研究中,它们的表现很差。表现出了过拟合的特性。
古典算法深入阅读:
M4比赛: