Python 分位数回归中梯度增强和神经网络的超参数整定

Python 分位数回归中梯度增强和神经网络的超参数整定,python,keras,neural-network,hyperparameters,quantile-regression,Python,Keras,Neural Network,Hyperparameters,Quantile Regression,我正在使用Sklearns GradientBoostingRegressionor进行分位数回归,以及在Keras中实现的非线性神经网络。但是,我不知道如何找到超参数 对于GradientBoosting回归器,为每个分位数拟合一个单独的回归。我是为每个分位数找到一组新的超参数,还是为每个分位数拟合同一组超参数 对于Keras,我如何决定超参数,就像我实现模型的方式一样,它同时预测所有的分位数。下面是我在Keras中实现的示例: def quantile_loss_nn(y_true, y_p

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

对于GradientBoosting回归器,为每个分位数拟合一个单独的回归。我是为每个分位数找到一组新的超参数,还是为每个分位数拟合同一组超参数

对于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)