为啥岭回归和套索回归分类器需要 random_state? [关闭]

Posted

技术标签:

【中文标题】为啥岭回归和套索回归分类器需要 random_state? [关闭]【英文标题】:Why is random_state required for ridge & lasso regression classifiers? [closed]为什么岭回归和套索回归分类器需要 random_state? [关闭] 【发布时间】:2018-08-01 06:30:36 【问题描述】:

class sklearn.linear_model.Lasso(alpha=1.0, fit_intercept=True, normalize=False, precompute=False, copy_X=True, max_iter=1000, tol=0.0001, warm_start=False, positive=False, random_state =无,选择='循环')

class sklearn.linear_model.Ridge(alpha=1.0, fit_intercept=True, normalize=False, copy_X=True, max_iter=None, tol=0.001, solver='auto', random_state=None )

【问题讨论】:

格式化您的代码 【参考方案1】:

这两种方法都涉及在模型的某些阶段生成随机数。

对于 Lasso,这是由于每个变量的回归系数的拟合。这可以以“循环”方式完成,或者在每次迭代时随机选择变量。属性 selection = 'cyclic' 用于第一个,selection = 'random 用于后者。后者涉及随机数。正如documentation 所说:

如果设置为“随机”,则每次迭代都会更新一个随机系数,而不是默认按顺序循环特征。这(设置为“随机”)通常会导致收敛速度显着加快,尤其是当 tol 高于 1e-4 时。

对于 Ridge 回归,如果您想使用随机梯度下降来拟合模型,则需要使用二次抽样。为此,您需要在模型初始化期间声明 solver = 'sag'solver = 'saga'。 documentationrandom_state 上写着:

混洗数据时使用的伪随机数生成器的种子。如果是 int,则 random_state 是随机数生成器使用的种子;如果是 RandomState 实例,则 random_state 是随机数生成器;如果没有,随机数生成器是 np.random 使用的 RandomState 实例。在求解器 == 'sag' 时使用。

【讨论】:

【参考方案2】:

对于lasso,可以使用RNG(取决于其他选择的选项)随机选择要执行更新的特征:

选择要更新的随机特征的伪随机数生成器的种子。如果是 int,则 random_state 是随机数生成器使用的种子;如果是 RandomState 实例,则 random_state 是随机数生成器;如果没有,随机数生成器是 np.random 使用的 RandomState 实例。当 selection == ‘random’ 时使用。

对于ridge,可以使用RNG(取决于其他选择的选项)对数据进行混洗:

混洗数据时使用的伪随机数生成器的种子。如果是 int,则 random_state 是随机数生成器使用的种子;如果是 RandomState 实例,则 random_state 是随机数生成器;如果没有,随机数生成器是 np.random 使用的 RandomState 实例。在求解器 == 'sag' 时使用。

【讨论】:

以上是关于为啥岭回归和套索回归分类器需要 random_state? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何将套索和岭回归拟合(Glmnet)叠加到数据上?

线性模型系数解读中的那些坑,以套索回归(LASSO)和岭回归(Ridege)为例

带加权样本的弹性网络回归或套索回归(sklearn)

r语言中对LASSO回归,Ridge岭回归和Elastic Net模型实现

岭回归和lasso回归(转)

R语言glmnet拟合岭回归模型实战:岭回归模型的模型系数(ridge regression coefficients)及可视化岭回归模型分类评估计算(混淆矩阵accuracyDeviance)