假设一个二元分类问题和一个相对较小的数据集 ()。通过使用常见的 ML 技术,从逻辑回归开始,我能够在验证样本上达到 ~0.76-0.79 AUC,具体取决于模型。因此,显然有一些重要的信号需要从模型中提取。
然而,即使是最简单的顺序神经网络,它也根本不会学习。
即,使用 R 中的 keras:(注意:AFAIK 语言不应该是问题,因为它只是 R 的包装器)
model <- keras_model_sequential() %>%
layer_dense(units = 48,
activation = "sigmoid",
input_shape = 39) %>%
layer_dense(units = 48, activation = "sigmoid") %>%
layer_dense(units = 2, activation = "sigmoid")
model %>% compile(
optimizer = "rmsprop",
loss = "categorical_crossentropy",
metrics = c("accuracy")
)
history <- model %>% keras::fit(
x_train,
y_train,
epochs = 500,
batch_size = 16,
validation_split = 0.7, shuffle = T
)
然而,无论历元数或批量大小,模型根本不会学习,验证准确度对应于目标变量的分布(预测全部为 1)。
我究竟做错了什么?带有 sigmoid 激活的小型一/二层神经网络不应该至少达到逻辑回归的性能吗?关于如何至少复制逻辑回归结果的任何建议?或者也许我错过了代码中的一些步骤?
任何见解都会很棒!