多久才能达到特定值?
准确预测的能力对于每个时间序列的预测应用程序都是基本的。为了实现这个目的,数据科学家习惯于选择最佳模型以从点预测的角度最小化误差。这是正确的,但并不总是最有效的方法。
数据科学家还应考虑开发概率预测模型的可能性。这些模型除了点估计值外,还会产生上限和下限的可靠性区间,未来观测值很可能落在这些区间内。尽管概率预测似乎是统计或深度学习解决方案的专利,任何模型都可以用来产生概率预测。这个概念在我的一个以前的帖子中有解释,我在其中介绍了符合预测作为一种用任何 scikit-learn 模型估计预测间隔的方法。
当然,点预测对于非技术股东来说更容易沟通。与此同时,生成关于我们预测的可靠性的KPI的可能性是一个附加值。概率输出可能携带更多信息来支持决策。报告在接下来的几个小时中有60%的降雨概率可能比报告将有多少毫米的降雨更具有信息量。
在这篇文章中,我们提出了一种预测技术,称为预测击中时间,用于估计特定事件或条件发生的时间。它被证明是准确的,因为它基于符合预测,可解释的,因为它具有概率解释性,并且可重复的,适用于任何预测技术。
介绍击中时间预测
预测击中时间是各个领域中常用的概念。它指的是预测或估计某个事件或条件发生的时间,通常涉及到达特定阈值或水平的情况。
击中时间最知名的应用包括可靠性分析和生存分析等领域。它涉及估计系统或过程经历特定事件(例如故障或达到特定状态)所需的时间。在金融领域中,击中时间通常用于确定信号/指数遵循所需方向的概率。
总的来说,预测击中时间涉及做出关于特定事件所需时间的预测,该事件遵循时间动态。
从点预测到概率预测
要正确估计击中时间,我们必须从点预测开始。作为第一步,我们选择所需的预测算法。对于本文,我们采用了一个简单的递归估计器,可以从tspiral的scikit-learn样式轻松获得。
model = ForecastingCascade( Ridge(), lags=range(1,24*7+1), use_exog=False,)
我们的目标是为每个预测点生成预测分布,从中提取概率洞见。这是通过以下三个步骤实现的,并利用符合性预测背后的理论:
- 通过交叉验证收集训练集上的预测,然后将它们平均起来。
CV = TemporalSplit(n_splits=10, test_size=y_test.shape[0])pred_val_matrix = np.full( shape=(X_train.shape[0], CV.get_n_splits(X_train)), fill_value=np.nan, dtype=float,)for i, (id_train, id_val) in enumerate(CV.split(X_train)): pred_val = model.fit( X_train[id_train], y_train[id_train] ).predict(X_train[id_val]) pred_val_matrix[id_val, i] = np.array( pred_val, dtype=float )pred_val = np.nanmean(pred_val_matrix, axis=1)
- 在训练数据上,通过交叉验证预测和实际值的绝对残差计算符合性分数。
conformity_scores = np.abs( np.subtract( y_train[~np.isnan(pred_val)], pred_val[~np.isnan(pred_val)] ))
- 通过将符合性分数添加到测试预测中,获得未来预测分布。
pred_test = model.fit( X_train, y_train).predict(X_test)estimated_test_distributions = np.add( pred_test[:, None], conformity_scores)
按照上述过程,我们得到了许多未来可能遵循的合理轨迹。我们拥有了所有必要的东西,可以提供我们的预测的概率表示。
从概率性到击中时间预测
对于每个未来时间点,记录下估计测试分布中超过预定义阈值(我们的命中目标水平)的值的次数。通过将计数归一化每个估计测试分布中的值的数量,将其转换为概率。
最后,将概率数组应用于一系列单调递增的概率。
THRESHOLD = 40prob_test = np.mean(estimated_test_distributions > THRESHOLD, axis=1)prob_test = pd.Series(prob_test).expanding(1).max()
无论我们试图预测什么事件,我们都可以从点预测开始生成概率曲线。其解释仍然很简单,即对于每个预测时间点,我们可以推导出目标系列达到预定义水平的概率。
总结
在本文中,我们介绍了一种为我们的预测模型提供概率结果的方法。它不需要应用奇怪而繁琐的附加估计技术。从点预测问题开始,可以通过应用击中时间方法添加任务的概率概述。
检查我的GitHub存储库
保持联系:领英