2

我正在构建一个 LSTM 模型来对价格走势进行二元分类。

我的训练数据是我模拟的数据,它是一个 2,000 行 * 3,780 列的价格变动数据框。我有一个单独的标签文件,将价格变动分类为 1 或 2(由于内存)。

根据我的阅读,似乎有两个损失函数最适合二元分类:

  1. 二元交叉熵
  2. 铰链损失

我在 google colab 中实现了两个独立的 LSTM 模型,它们按预期运行。

我对这两个模型都有相同的代码,只是损失函数从前者的平方铰链损失变为后者的二元交叉熵。

我的问题是决定哪个是更好的模型,因为模型输出给出了相互冲突的输出。

铰链损耗输出:

训练输出:

  1. 损失从 0.3 开始,然后到 0.20,并且在剩余的 98 个 epoch 中几乎保持不变。
  2. MSE 确实从 2.8 到最后的 1.68 的时期略有下降。平均 MSE = 1.72。
  3. 每个时代的准确度都是 0.00(我不明白)。

验证输出:

  1. 验证损失从 0.0117 开始,到最后达到 9.8264e-06。
  2. 验证 MSE 从 2.4 开始,到 1.54 结束。平均验证 MSE = 1.31。
  3. 每个时期的验证准确度都是 0.00(我还是不明白)。

二元交叉熵损失输出:

训练输出:

  1. 损失从 8.3095 开始,然后到 3.83,并且在剩余的 97 个时期几乎保持不变。
  2. MSE 确实从 2.8 到最后的 1.68 的时期略有下降。平均 MSE = 1.69。
  3. 准确度从 0.00 开始,到最后增加到大约 0.8。

验证输出:

  1. 验证损失从 -0.82 开始,到最后达到 -.89。
  2. 验证 MSE 从 1.56 开始,到 1.53 结束。平均验证 MSE = 1.30。
  3. 验证准确度从 0.00 开始,到最后增加到大约 0.997。

所以,我现在有一个问题:

为什么 SHL 模型的准确率是 0.00?我的模型有错误吗?

我的代码保存在这里: https ://nbviewer.jupyter.org/github/Ianfm94/Financial_Analysis/blob/master/LSTM_Workings/LSTM_Model.ipynb

训练数据*和标签数据保存在以下位置: https ://github.com/Ianfm94/Financial_Analysis/tree/master/LSTM_Workings

*由于 Github 将文件大小限制为 25 mb,因此此处的训练数据被分成两个单独的文件。

任何帮助将不胜感激。

谢谢。

4

0 回答 0