微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

分位数回归中梯度提升和神经网络的超参数调整

如何解决分位数回归中梯度提升和神经网络的超参数调整

我使用 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 举报,一经查实,本站将立刻删除。