使用GCP BigQuery ARIMA_PLUS多产品预测遇异常及参数设置问题求助
GCP BigQuery ARIMA_PLUS 多产品预测问题解决方案
一、某款产品18个周期预测值完全重复的问题
可能原因
- 该产品历史数据异常:比如历史需求全为0、数据量过少(少于3个月度周期)、所有历史值无波动,导致模型无法捕捉趋势,只能输出恒定值
CLEAN_SPIKES_AND_DIPS参数处理后,将原本有波动的数据扁平化- 模型自动为该序列选择了常数模型(如ARIMA(0,0,0))
解决步骤
- 排查该产品的历史数据:
确认数据量、波动情况是否正常SELECT CalendarMonth, Demand, Product FROM `GF.ML_Model.DATA_IL_OB` WHERE Product = '问题产品ID' ORDER BY CalendarMonth; - 若数据量不足:补充至少6个以上的月度历史数据后重新训练模型
- 若数据无波动/全为0:结合业务规则手动修正该产品的预测结果,或单独为其创建定制化模型
- 验证模型对该序列的参数选择:
确认是否选用了常数模型,再针对性调整SELECT * FROM ML.ARIMA_EVALUATE(MODEL ML_Model.Forecast_IL_OB_MONTHLY_ARIMA_OCT20) WHERE time_series_id = '问题产品ID';
二、多产品预测时无法手动设置p、d、q参数的问题
原因
BigQuery ARIMA_PLUS在启用TIME_SERIES_ID_COL进行多序列批量预测时,只要AUTO_ARIMA = TRUE,就会自动为每个序列选择最优的p、d、q参数,手动设置的NON_SEASONAL_ORDER会被覆盖;且当前版本不支持为多序列统一指定固定的非季节性参数。
解决方法
- 单独为特定产品设置固定参数:放弃多产品批量模型,为目标产品单独创建模型,关闭
AUTO_ARIMA并手动指定参数:CREATE OR REPLACE MODEL ML_Model.Forecast_Problem_Product_ARIMA OPTIONS( MODEL_TYPE='ARIMA_PLUS', AUTO_ARIMA = FALSE, NON_SEASONAL_ORDER = [1,2,1], TIME_SERIES_TIMESTAMP_COL='CalendarMonth', TIME_SERIES_DATA_COL = 'Demand', HOLIDAY_REGION ='AU', CLEAN_SPIKES_AND_DIPS = TRUE, DATA_FREQUENCY='MONTHLY' ) AS SELECT CalendarMonth, Demand, Product FROM `GF.ML_Model.DATA_IL_OB` WHERE Product = '目标产品ID'; - 批量创建单产品模型:通过BigQuery存储过程或外部脚本,循环为每个产品创建单独的模型并指定统一参数,最后合并所有预测结果
- 适配自动参数:若自动选择的参数大部分符合业务预期,仅个别产品异常,可针对异常产品单独修正预测结果
内容的提问来源于stack exchange,提问作者Sin
相关产品推荐
相关产品推荐

