使用Tensorflow / tflearn预测财务数据的图层

时间:2017-11-11 13:41:51

标签: machine-learning tensorflow deep-learning financial 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%。 我试图让窗口达到7天但结果仍然很糟糕。所以我想知道我可以用什么额外的层来改善这个网络。

1 个答案:

答案 0 :(得分:0)

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

首先改变

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 std)。

找到正确的架构是一个难题,你不会找到任何“神奇的收件人”。首先要了解你在做什么。记录您的训练,看看训练损失是否收敛到较小的值,如果不是 - 您要么训练时间不够长,网络太小,要么训练超参数关闭(如太大的学习权,太高的正规化等)