【发布时间】:2019-07-19 06:18:34
【问题描述】:
我是一名生物学家,并开始寻找通往深度学习世界的道路。因此,我阅读了许多书籍和在线教程。简而言之,我正在构建一个模型,以使用 6500 条记录的数据集中的 522 个变量来预测 R 中 keras 的二进制类。 该模式的主要代码如下:
model <- keras_model_sequential()
model %>%
layer_dense(units = 256, activation = 'relu', input_shape = ncol(x_train),kernel_regularizer = regularizer_l2(0.001),) %>%
layer_dropout(rate = 0.4) %>%
layer_dense(units = 128, activation = 'relu',kernel_regularizer = regularizer_l2(0.001),) %>%
layer_dropout(rate = 0.3) %>%
layer_dense(units = 2, activation = 'sigmoid')
history <- model %>% compile(
loss = 'binary_crossentropy',
optimizer = 'adam',
metrics = c('accuracy')
)
model %>% fit(
x_train, y_train,
epochs = 50,
batch_size = 150,
validation_split = 0.20
)
acc<-model %>% evaluate(x_test, y_test)
我已将每一层中的隐藏单元、批量大小、时期调整为越来越低,但我得到的准确度并不令人满意。具体来说,根据我添加的隐藏单元的数量,训练准确率很快达到了 70-90%,但在任何情况下,验证准确率都不会超过 30%。 当我应用模型来预测测试集时,我得到了 70% 的准确率,但问题是当我进一步查看混淆矩阵表时,模型似乎只是很好地预测了第 1 类(灵敏度为 97%)为什么类0 预测不佳(特异性约为 20%)。
我实际上使用 PLS-DA 和 mixOmics 包运行了相同的数据,结果相当不错。在测试集上,我的灵敏度、特异性和曲线下面积均 >=70%。
所以,我并不要求深度学习(在这种情况下)比 PLS-DA 更好,但我希望它应该在 PLS-DA 附近。
您能否给我一些建议,以便我可以朝着正确的方向前进,以改进深度学习的模型。 我正在处理的训练和测试数据可以在这里获得: https://drive.google.com/file/d/1XFmTosHk5hZABFgJOHgQGLiP-DnbGHLv/view?usp=sharing https://drive.google.com/file/d/10viyKknQNolgCR45mEijF5RIxKqMK23a/view?usp=sharing
非常感谢, 何
【问题讨论】:
标签: r keras deep-learning