我正在创建一个具有外部可控特征的时间序列预测模型,类似于https://medium.com/tensorflow/structural-time-series-modeling-in-tensorflow-probability中的“预测电力需求”示例-344edac24083。为了模拟外部因素的影响,我使用 sts.LinearRegression() 作为我模型的一个组件,但是这些外部因素本质上是非常非线性的,它会在我的模型中导致不需要的负面预测。
我尝试在 TFP STS 之外创建(更简单的)预测,并发现 RandomForestRegressor 对于这些外部特征的线性回归效果要好得多。我想做的是用 sts.RandomForestRegressor() 替换 sts.LinearRegression(),但这在 sts 库中不可用。事实上,sts 库中几乎没有任何可用选项:https ://www.tensorflow.org/probability/api_docs/python/tfp/sts/LinearRegression
我也尝试将我的目标变量转换为日志形式,但是有许多零实例(对于日志是 inf),结果证明这不是一个有用的转换。
我的 TFP STS 模型架构如下所示:
def build_model(observed_time_series):
season_effect = sts.Seasonal(
num_seasons = 4, num_steps_per_season = 13, observed_time_series = observed_time_series,
name = 'season_effect')
marketing_effect = sts.LinearRegression(
design_matrix = tf.stack([recent_publicity - np.mean(recent_publicity),
active_ad - np.mean(active_ad)], axis = -1),
name = 'marketing_effect')
autoregressive = sts.Autoregressive(order=1,
observed_time_series = observed_time_series,
name = 'autoregressive')
model = sts.Sum([season_effect,
marketing_effect,
autoregressive],
observed_time_series = observed_time_series)
return model
我想将模型的“marketing_effect”组件更改为非线性的。
我在这里唯一的选择是克隆 TFP STS 库并创建一个自定义函数来处理带有随机森林回归器之类的非线性数据吗?有谁知道更好的选择?