在处理单变量时间序列数据时,我们预测的一个很重要的方面是,所有以前的数据对未来的值都有一定的影响。这使得传统的机器学习方法(如训练/数据分割和交叉验证)变得棘手。
本文使用《Apex英雄》年分析的玩家活动时间模式,预测其增长或下降。我们的数据来自https://steamdb.info,是一个CSV文件。
为了评估模型的性能,我们将使用均方根误差(RMSE)和平均绝对误差(MAE)作为指标来评估我们的回归模型。RMSE会给我们一个数据差的标准差,也就是数据点和最佳拟合线之间的距离。MAE测量是指观察值和真实值之间的差异,这将有助于确定模型的准确性。
EDA
拿到数据后,第一个操作肯定是EDA。在处理时间序列数据时,数据探索性分析的主要目的是发现以下特征:
季节性趋势季节性趋势平稳除此之外,我们还可以计算各种平均值:
简单移动平均线指数移动平均线自2019年2月《Apex英雄》首次发布以来的统计汇总。玩家数量显示,Apex英雄平均玩家数量约为17.9万人。
这是一条简单的均线趋势线。
这是指数移动平均线。
简单移动平均线显示6月份玩家活动略有下降趋势。趋势的斜率为11,考虑到玩家在100k到300k之间波动,这在统计上并不显著。所以可以说6月玩家的活动相当稳定。
这是按周计算的演奏者日常活动的小提琴图表。
这是一张玩家每天的活动时间分布图。
violin graph不仅可以显示一些汇总统计数据,如最大值、最小值和中值,还可以直观地显示分布情况。我们可以观察到周末比工作日分布更均匀,尤其是周六日。
以及6月份玩家和twitch观众的活动模式。
从上图可以看出,单变量时间序列是有一定规律的。一天中可预测的涨跌。这在以后讨论模型预测的时候会非常重要。
观察值=趋势季节性残差
我们需要确认的一个假设是,时间序列是平稳的,也就是说,均值和方差基本不会发生变化,这对于自回归模型是非常重要的。
但是很难从视觉上判断平均值和差值是否在变化,我们需要一种方法来检查这个问题。虽然从移动平均来看,我们可以看到在大多数情况下变化并不大,但我们需要确保使用统计检验具有统计显著性。
Dicky-Fuller检验是一种假设检验,通过它我们可以知道时间序列是否稳定。该检验的无效假设是时间序列是非平稳的。所以我们需要p值小于0.05,这样才能拒绝零假设。可以看到下面的p值小于0.05,所以我们确实可以拒绝零假设,它是非平稳的,说我们的数据确实有一个稳定的均值和方差。(代码见最后一个地址)
测试统计量:-7。36860 . 67868686861
p值:6.254742639140234e-11
建模
本文测试了三种不同的模型:Naive、FB Prophet和自回归。并对这三种模型的性能进行了比较。
使用单变量数据创建训练集和验证集不同于典型的表格数据。所以sklearn的TimeSeriesSplit函数可以帮助我们完成这项工作,将单变量数据拆分四次,进行交叉验证。分割后,应用模型并计算每个分割的评价指标(RMSE和MAPE)。对均方根误差(RMSE)和均方根误差(MAPE)进行平均。
def eval_model_perf(df: pdDataFrame,model: Callable[[pd。数据框架,pd。DataFrame],List[any]]) - None:' ' '使用RMSE和MAPE评估模型的性能。Args:df (DataFrame):输入DataFrame.model (DataFrame,List):正在评估的模型的预测值。'' RMSE _ metrics=[]mape _ metrics=[]tscv=timeseries split(n _ split=4)for train _ index,test _ index in tscv . split(df):cv _ train=df . iloc[train _ index]cv _ test=df . iloc[test _ index]preds=model(cv _ train,cv_test)rmse_eval=rmse(cv_test,preds)Naive _ eval=mean _ absolute _ percentage _ error(cv _ test,preds)rmse_metrics.append
Naive将前一个值预测为下一个值。这个在实践中没有任何意义。我们在这里只是作为比较。如果其他模型的结果没有它好,那么其他模型就没有存在的价值。
结果如下
2、FB先知
先知模型使用AM进行预测。
结果如下:
他的优点是:
没有太多参数需要调整。
自动缩放可以很好地缩放数据。
在将数据集发送到模型之前,您不需要了解太多关于数据集的信息。
但他缺点也很明显:
假设模型的季节变化是常数,不随时间变化。
比AR模型更难解释。
3.自回归模型
自回归模型通过前一次预测来预测后一次的值,也就是说后一次的预测值会使用前一次的预测结果。
结果如下:
优势:
您可以灵活地处理各种时间序列模式,并且更容易解释该模型的缺点:
很多参数时间序列数据需要先验信息才能更准确
总结
我们测试了三个模型来预测玩家的活动(实际上是两个有效的模型)。原始模型作为评估其他模型的基线。脸书先知模型是由脸书开发的,我们可以直接使用它。另一个模型是基于已知特征(如趋势和季节性等)的单变量自回归模型。).
在创建这些模型的过程中,最复杂的就是自回归模型,因为它需要大量的探索性数据分析。
FB Prophet不涉及超参数优化,不需要单变量数据特征的先验信息。模型的准确率为87%,RMSE ~19120。facebook Prophet模型的一个明显趋势是对下降趋势的夸大。但这已经很不错了。
FB Prophet模型虽然很好,但是没有打败自回归模型。自回归模型是一种更直观、更容易理解的模型。与线性回归类似,单变量数据被分解成线性组合。因此,模型的一个优点是更容易解释。缺点是虽然这个模型的性能比其他任何模型都好,但是确实需要一些数据知识。
自回归模型的另一个缺点是需要对基础数据有扎实的理解。FB Prophet模型不需要我们理解任何数据。这可能也是FB Prophet模型的一个缺点,因为它使用的是加性模型,解释起来更困难,也没有AR模型灵活。
自回归模型和FB Prophet模型似乎都表明,虽然有轻微的下降趋势,但在统计上并不显著,如假设检验所示。我们也发现我们的时间序列数据是稳定的,这是AR模型的要求。
作者:萨尔曼侯赛因
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/315789.html