Гиперпараметрическая настройка градиентного усиления и нейронной сети в квантильной регрессии

#python #keras #neural-network #hyperparameters #quantile-regression

Вопрос:

Я использую градиентный регрессор Sklearns для квантильной регрессии, а также нелинейную нейронную сеть, реализованную в 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)