
1) 【一句话结论】采用“历史需求+外部因素”多源数据驱动的混合模型,核心是结合时间序列(如SARIMA)捕捉周期性趋势与机器学习(如LSTM)处理非线性关系,通过MAE/MSE等指标评估,确保预测精度满足库存优化需求。
2) 【原理/概念讲解】
时间序列预测的核心是“时间依赖性”——当前数据受历史数据影响(如石油需求受季节、经济周期影响),需模型捕捉这种依赖。类比:时间序列像“观察河流水位变化”,有长期趋势(水位上升)、季节波动(夏季水位高)、随机噪声(暴雨影响),模型需分离这些成分。
机器学习模型(如LSTM)是循环神经网络的一种,适合处理序列数据,能捕捉“长期依赖”——比如石油需求受数月前的政策影响,LSTM通过多层循环结构学习这种复杂关系。
3) 【对比与适用场景】
| 模型类型 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| 时间序列模型 | 基于历史序列自身规律的模型 | 依赖历史数据,适合线性/弱非线性 | 周期性、趋势性明显的数据(如月度需求) | 需处理季节性、趋势分离 |
| 机器学习模型 | 基于机器学习算法的模型 | 能处理非线性、复杂关系,可融合多特征 | 需求受多因素影响(如政策、价格) | 需大量数据,可能过拟合 |
4) 【示例】
# 数据预处理
import pandas as pd
data = pd.read_csv('oil_demand.csv', parse_dates=['date'], index_col='date')
# 季节分解
from statsmodels.tsa.seasonal import seasonal_decompose
decomp = seasonal_decompose(data['demand'], model='additive')
trend = decomp.trend
seasonal = decomp.seasonal
residual = decomp.resid
# 训练ARIMA模型
from statsmodels.tsa.arima.model import ARIMA
model_arima = ARIMA(trend, order=(p,q,d)) # p,q,d为参数
model_arima.fit()
arima_pred = model_arima.forecast(steps=3)
# 训练LSTM模型
import numpy as np
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM, Dense
# 准备数据
X = [] # 历史数据序列
y = [] # 未来需求
for i in range(len(data)-3):
X.append(data['demand'].iloc[i:i+3].values)
y.append(data['demand'].iloc[i+3])
X = np.array(X)
y = np.array(y)
# 构建LSTM模型
model_lstm = Sequential()
model_lstm.add(LSTM(50, activation='relu', input_shape=(3,1)))
model_lstm.add(Dense(1))
model_lstm.compile(optimizer='adam', loss='mse')
model_lstm.fit(X, y, epochs=50, verbose=0)
# 预测
last_3 = data['demand'].iloc[-3:].values.reshape(1,3,1)
lstm_pred = model_lstm.predict(last_3)
# 混合预测
final_pred = 0.6*arima_pred + 0.4*lstm_pred # 加权融合
5) 【面试口播版答案】
面试官您好,针对南光集团未来3个月石油需求预测,我设计的模型核心是“多源数据驱动+混合模型”。首先,数据来源包括历史月度石油需求数据(核心)、季节性因素(如夏季出行增加导致需求上升)、政策因素(如原油价格波动影响采购决策);然后模型选择上,采用时间序列模型(如SARIMA)捕捉历史趋势和季节波动,再用机器学习模型(如LSTM)处理非线性关系(比如需求受经济周期影响);训练流程包括数据预处理(缺失值填充、季节分解)、模型训练(分别训练ARIMA和LSTM,再融合预测)、评估(用MAE(平均绝对误差)和MSE(均方误差)衡量预测精度,确保误差低于5%满足库存优化需求)。这样能兼顾趋势、周期和非线性因素,提升预测准确性。
6) 【追问清单】
7) 【常见坑/雷区】