使用 Tensorflow/tflearn 预测金融数据的层

Layers for predicting financial data using Tensorflow/tflearn

我想预测利率,我有一些相关因素,例如股票指数和货币供应量等。因子数最多可达200​​。

例如,训练数据 X 包含因子,y 是我要训练和预测的利率。

     factor1      factor2     factor3          factor176  factor177    factor178
X= [[ 2.1428      6.1557      5.4101     ...,  5.86        6.0735      6.191 ]
    [ 2.168       6.1533      5.2315     ...,  5.8185      6.0591      6.189 ]
    [ 2.125       4.7965      3.9443     ...,  5.7845      5.9873      6.1283]...]

y= [[ 3.5593]
    [ 3.014 ]
    [ 2.7125]...]

所以我想用tensorflow/tflearn来训练这个模型,但我真的不知道我应该选择什么方法来做回归。我之前试过tflearn的LinearRegression,但是效果不是很好

现在,我只使用我在网上找到的代码。

net = tflearn.input_data([None, 178])
net = tflearn.fully_connected(net, 64, activation='linear',
                                weight_decay=0.0005)
net = tflearn.fully_connected(net, 1, activation='linear')
net = tflearn.regression(net, optimizer=
tflearn.optimizers.AdaGrad(learning_rate=0.01, initial_accumulator_value=0.01), 
loss='mean_square', learning_rate=0.05)
model = tflearn.DNN(net, tensorboard_verbose=0, checkpoint_path='tmp/')
model.fit(X, y, show_metric=True,
            batch_size=1, n_epoch=100)

当误差范围为 ±10% 时,结果大约是 50% 的准确度。 我尝试将 window 设为 7 天,但结果仍然很糟糕。所以我想知道我可以使用什么额外的层来使这个网络更好。

首先这个网络毫无意义。如果您的隐藏单元没有任何激活,则您的网络 等同于线性回归

所以首先改变

net = tflearn.fully_connected(net, 64, activation='linear',
                                weight_decay=0.0005)

net = tflearn.fully_connected(net, 64, activation='relu',
                                weight_decay=0.0005)

另一个通用的事情是总是规范化你的数据。你的 X 很大,y 也很大 - 确保它们不是,例如通过美白它们(使它们的平均值为 0,标准差为 1)。

找到合适的架构是个难题,您不会找到任何 "magical recipies"。从了解你在做什么开始。记录你的训练,看看训练损失是否收敛到小值,如果没有——你要么训练时间不够长,网络太小,要么训练超参数关闭(比如学习权太大,正则化太高等)