可预测性
你说得对,这是一个可预测性的问题。在IIF 面向从业者的期刊Foresight中有几篇关于可预测性的文章。(全面披露:我是副主编。)
问题是在“简单”情况下已经很难评估可预测性。
几个例子
假设您有这样的时间序列,但不会说德语:
您将如何模拟 4 月的大高峰,以及如何将这些信息包含在任何预测中?
除非您知道这个时间序列是瑞士连锁超市的鸡蛋销售量,它在西方日历复活节前达到顶峰,否则您将没有机会。此外,随着复活节在日历中的移动多达六周,任何不包括复活节具体日期的预测(假设这只是明年某个特定周会再次出现的一些季节性高峰)可能会很差。
同样,假设您有下面的蓝线,并且想要对 2010 年 2 月 28 日发生的任何事情进行建模,与 2010 年 2 月 27 日的“正常”模式不同:
同样,如果不知道当整个城市的加拿大人在电视上观看奥运会冰球决赛时会发生什么,你就没有机会了解这里发生了什么,你也无法预测这样的事情何时会再次发生。
最后,看看这个:
这是现金和自运商店每日销售的时间序列。(在右边,你有一个简单的表:282 天销售额为零,42 天销售额为 1...,一天销售额为 500。)我不知道它是什么项目。
直到今天,我都不知道那一天销售额 500 件发生了什么。我最好的猜测是,一些客户预先订购了大量的任何产品并收集了它。现在,在不知道这一点的情况下,对这一特定日子的任何预测都将遥遥无期。相反,假设这发生在复活节之前,我们有一个愚蠢的智能算法,它认为这可能是复活节效应(也许这些是鸡蛋?)并愉快地预测下一个复活节有 500 个单位。哦,我的,会不会出错。
概括
在所有情况下,我们都看到只有在对影响数据的可能因素有足够深入的了解后,才能很好地理解可预测性。问题是除非我们知道这些因素,否则我们不知道我们可能不知道它们。根据唐纳德拉姆斯菲尔德:
[T]这里是已知的;有些事情我们知道我们知道。我们也知道有已知的未知数;也就是说,我们知道有些事情我们不知道。但也有未知的未知数——我们不知道我们不知道的。
如果复活节或加拿大人对曲棍球的偏爱对我们来说是未知的未知数,我们就会陷入困境 - 我们甚至没有前进的道路,因为我们不知道我们需要问什么问题。
处理这些问题的唯一方法是收集领域知识。
结论
我由此得出三个结论:
- 您总是需要在建模和预测中包含领域知识。
- 即使拥有领域知识,也不能保证您获得足够的信息以使您的预测和预测能够被用户接受。请参阅上面的异常值。
- 如果“你的结果很糟糕”,你可能希望得到比你能实现的更多的东西。如果您要预测一次公平的抛硬币,那么就没有办法达到 50% 以上的准确率。也不要相信外部预测准确性基准。
底线
以下是我推荐构建模型的方法 - 并注意何时停止:
- 如果您自己还没有领域知识,请与具有领域知识的人交谈。
- 根据步骤 1,确定您想要预测的数据的主要驱动因素,包括可能的交互。
- 迭代地构建模型,包括按照步骤 2 按强度降序排列的驱动程序。使用交叉验证或坚持样本评估模型。
- 如果你的预测准确性没有进一步提高,要么返回第 1 步(例如,通过识别你无法解释的明显错误预测,并与领域专家讨论这些),要么接受你已经到达你的终点模型的能力。提前为您的分析设置时间盒会有所帮助。
请注意,如果您的原始模型停滞不前,我不提倡尝试不同类别的模型。通常,如果您从一个合理的模型开始,使用更复杂的东西不会产生很大的好处,并且可能只是“在测试集上过度拟合”。我经常看到这种情况,其他人也同意。