我想预测利率,我有一些相关的因素,比如股票指数和货币供应量等等。因子的数量可能高达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天但结果仍然很糟糕。所以我想知道我可以用什么额外的层来改善这个网络。
答案 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)。
找到正确的架构是一个难题,你不会找到任何“神奇的收件人”。首先要了解你在做什么。记录您的训练,看看训练损失是否收敛到较小的值,如果不是 - 您要么训练时间不够长,网络太小,要么训练超参数关闭(如太大的学习权,太高的正规化等)