0

我正在使用 Sklearns GradientBoostingRegressor 进行分位数回归以及在 Keras 中实现的非线性神经网络。但是我不知道如何找到超参数。

对于 GradientBoostingRegressor,为每个分位数拟合一个单独的回归。我是否为每个分位数找到了一组新的超参数,或者我是否为每个分位数拟合了相同的超参数集?

对于 Keras,我如何决定超参数作为我实现模型的方式,它同时预测所有分位数。下面是我在 Keras 中的实现示例:

def quantile_loss_nn(y_true, y_pred):
    loss = 0
    for q_i, q in enumerate(quantiles):
        e = y_true - y_pred[:, q_i:q_i+1]
        loss += K.mean(K.maximum(q*e, (q-1)*e))
    return loss 

def nonlinear_M1(input_size, output_size, loss): 
    inputs = Input(shape=(input_size,))
    h = Dense(256, activation='relu')(inputs)
    h = Dense(256, activation='relu')(h)
    h = Dense(256, activation='relu')(h)
    h = Dense(256, activation='relu')(h)
    output = Dense(output_size)(h)
    model = Model(inputs=inputs, outputs=output)
    optimiser = RMSprop(lr=0.01, rho=0.9)
    model.compile(optimizer=optimiser, loss=loss, metrics=['mae'])
    return model

model_nonlinear_M1 = nonlinear_M1(X_train1.shape[1], len(quantiles), quantile_loss_nn)
epochs = 200
batch_size = 32
model_nonlinear_M1.fit(X_train1, y_train1,
          batch_size=batch_size,
          epochs=epochs,
          verbose=0)
4

0 回答 0