为啥岭回归和套索回归分类器需要 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? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
线性模型系数解读中的那些坑,以套索回归(LASSO)和岭回归(Ridege)为例
r语言中对LASSO回归,Ridge岭回归和Elastic Net模型实现
R语言glmnet拟合岭回归模型实战:岭回归模型的模型系数(ridge regression coefficients)及可视化岭回归模型分类评估计算(混淆矩阵accuracyDeviance)