【问题标题】:How to set the learning rate in scikit-learn's ridge regression?如何在 scikit-learn 岭回归中设置学习率?
【发布时间】:2016-03-12 12:49:15
【问题描述】:

我正在使用scikit-learn 的岭回归:

regr = linear_model.Ridge (alpha = 0.5)

# Train the model using the training sets
regr.fit(X_train, Y_train)

#bias:
print('bias: \n', regr.intercept_)
# The coefficients
print('Coefficients: \n', regr.coef_)

我找到了(herelinear_model.Ridge 函数的不同选项,但我在列表中没有找到一个特定选项:我如何设置 learning rate(或 learning step)更新功能?

learning rate,我的意思是:

w_{t+1} = w_t + (learning_rate) * (目标函数的偏导数)

【问题讨论】:

    标签: python scikit-learn regression


    【解决方案1】:

    我将学习率称为步长。

    您的代码未使用 sag(随机平均梯度)求解器。求解器的默认参数设置为auto,它将根据数据类型选择求解器。其他求解器的描述和使用的是here

    使用下垂求解器:

    regr = linear_model.Ridge (alpha = 0.5, solver = 'sag')
    

    但是,对于此求解器,您无需设置步长,因为求解器会根据您的数据和 alpha 计算步长。 Here 是用于岭回归的下垂求解器的代码,其中解释了如何计算步长。

    步长设置为 1 / (alpha_scaled + L + fit_intercept) 其中 L 为 所有样本的最大平方和。

    Line 401 展示了 sag_solver 如何用于岭回归。

    【讨论】:

    • 非常感谢!但是,它似乎只对 SAG 使用步长,而不是“常规”(即批量)梯度下降。有什么原因吗?
    猜你喜欢
    • 2014-06-17
    • 2013-07-10
    • 2017-03-26
    • 2017-06-21
    • 2018-10-12
    • 1970-01-01
    • 2017-11-26
    • 2017-02-28
    • 2019-03-05
    相关资源
    最近更新 更多