我一直在尝试使用library(keras)
将神经网络用于二进制设置,并且我对类概率(而不是事件的概率0/1)感兴趣
我的负面评价是正面评价的5.018倍。我添加了我一直在使用的代码。我无法稳定这些预测。我明白那杂音和一切。 但是我需要设置一些约束来每次获得接近的估计。 我没有想法。我还有什么可以用来稳定预测的?
我无法共享数据,因此这里是火车数据级别的预测摘要,并绘制了验证/火车图。
first run Second run
Min. :0.001843 Min. :0.0004508
1st Qu.:0.012272 1st Qu.:0.0156236
Median :0.042264 Median :0.0459510
Mean :0.142551 Mean :0.1400624
3rd Qu.:0.195536 3rd Qu.:0.1937293
Max. :0.919892 Max. :0.9882065
l2_model <-
keras_model_sequential() %>%
layer_dense(units = 512, activation = "relu", input_shape = ncol(XX_train1),
kernel_regularizer = regularizer_l2(0.001)) %>%
layer_batch_normalization()%>%
layer_dense(units = 256, activation = "relu",
kernel_regularizer = regularizer_l2(0.001)) %>%
layer_batch_normalization()%>%
layer_dense(units = 1, activation = "sigmoid",
bias_initializer = initializer_constant(log(5.0189)))
l2_model %>% compile(
optimizer="Adam",
loss = "binary_crossentropy",
metrics = c('accuracy')
)
summary(l2_model)
l2_history <- l2_model %>% fit(
x = as.matrix(XX_train1),
y = YY_train1,
epochs = 30,
batch_size = 1000,
validation_data = list(XX_test, YY_test[,2]),
verbose = 2,
callbacks = list(
callback_early_stopping(patience = 2) )
# ,callback_reduce_lr_on_plateau() )
)
# Predicted Class Probability
yhat_keras_prob_vec <- predict_proba(object = l2_model, x = as.matrix(XX_train1)) %>%
as.matrix()
summary(yhat_keras_prob_vec)
答案 0 :(得分:0)
所以我一直在努力,我开始控制一堆东西以获得诸如learning rate
和decay
之类的紧密估计,部分代码像这样optimizer=optimizer_adam(lr = 0.0001,decay = 0.001)
,然后我使用了所有正则化器kernel_regularizer
,bias_regularizer和activity_regularizer作为每个layer_dense()
中的 l2正则化器,最后是输出层,我只使用了 bias和活动正则化器。