#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)