如何解决分位数回归中梯度提升和神经网络的超参数调整
我使用 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)
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)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。