【问题标题】:Layers for predicting financial data using Tensorflow/tflearn使用 Tensorflow/tflearn 预测财务数据的层
【发布时间】:2017-11-11 13:41:50
【问题描述】:

我想预测利率,我有一些相关因素,比如股票指数和货币供应量,诸如此类。因子的数量可能高达 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 天,但结果仍然很糟糕。所以我想知道我可以使用什么额外的层来改善这个网络。

【问题讨论】:

    标签: machine-learning tensorflow deep-learning financial tflearn


    【解决方案1】:

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

    所以首先要改变

    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 标准)。

    找到正确的架构是一个难题,您不会为此找到任何“神奇的秘诀”。从了解你在做什么开始。记录你的训练,看看训练损失是否收敛到小值,如果没有 - 你训练的时间不够长,网络太小,或者训练超参数关闭(比如太大的学习权,太高的正则化等)

    【讨论】:

    • 我当前的版本:code&dataset我试过relu但是测试数据的结果看起来很奇怪。输出:output
    • 正如答案中所说 - 线性激活是一个错误,但要使事情正常运行需要实际了解数据和模型;线性的东西是唯一实际的“错误”,其他一切都是一步一步分析并寻找问题所在 - 再次 - 研究 training 至关重要,此时不是测试
    • 我的意思是,如果我将所有“线性”更改为“relu”,y 的输出大部分仍然相同,我真的很困惑,因为我使用相同的数据使用线性来预测股票指数的准确性还不错,就是不明白为什么利率差这么多。
    • 你不应该改变 all 线性的,只有答案中指出的那个。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-25
    • 1970-01-01
    相关资源
    最近更新 更多