我有两年半的时间序列数据。我正在执行 xgb.cv(从 2014 年 1 月到 2016 年 3 月)并且它给出了非常好的结果,但是当我使用新数据(2016 年 4 月到 2016 年 6 月)进行预测时,准确性越来越差。我正在使用 R xgboost 包。关于提高准确性的任何建议?
时间序列和 XGBoost
机器算法验证
时间序列
助推
2022-03-25 03:11:02
2个回答
您的特征很可能有时间偏差。假设您想从数据中预测月份和年份。您会在 CV 期间看到非常好的表现,因为您每个月都有足够的数据点。但是,您无法使用您的预测器很好地预测未来(2016 年 4 月至 2016 年 6 月)。另一个例子是假设你有一个特征,它的密度在一段时间内会发生变化。那么 cv 误差和你对未来的预测之间的差异会很大。要解决它,您可以使用以下建议:
- 丢弃时间有偏差的特征:时间相关的指标,在时间上有很大变化的特征等
- 创建部分独立于时间的特征:从日期开始,获取“星期几”、“周末”等
首先,如果时间序列有趋势,那么基于树的模型可能不是好的选择(因为树模型无法外推,无法预测大于或小于训练集中值的值),或者您可以先去除趋势,然后使用xgboost预测线性模型的残差。
其次,正如 Mortezaaa 所暗示的,如果这个时间序列与星期几、假期、周末或季节等相关。然后你可以构建许多特征来提高你的预测结果!除此之外,时间序列的移动平均线也可以是特征。kaggle上有很多很好的例子,比如rossmann-store-sales预测和bike-sharing-demand prediction,还有时间序列,获胜者做了很多特征工程!你会学到很多东西。
其它你可能感兴趣的问题