python - 什么都不提供时,LassoCV 中的参数选择如何工作?
问题描述
基本上,我想知道当没有提供时,sklearn 中的 LassoCV 如何选择 alpha 值(收缩参数)。运行语句时,
reg = LassoCV(cv = 5) # cv = 5 for 5 fold cross val
reg.fit(X, Y)
我对我得到的结果很满意;但是,我很好奇模型如何选择最佳 alpha。它是否只是简单地遍历具有给定容差的范围内的所有 alpha?
除此之外,我还想问一下,当您为其提供 alpha 值或使用 n_alphas 参数时会发生什么,即:
reg = LassoCV(cv = 5, alphas = [.1, .2, .001, ...])
reg = LassoCV(cv = 5, n_alphas = 100)
它如何确定这些 alpha 值中的哪一个是最好的?当提供多个 alpha 时,它会循环哪些 alpha?
谢谢你。
解决方案
它如何确定这些 alpha 值中的哪一个是最好的?
它对所有提交的值进行交叉验证程序alpha
,并返回最大的值score
,根据文档,它是决定系数 R^2。
当提供多个 alpha 时,它会循环哪些 alpha?
用一个简单的例子很容易看出;仅仅n_alphas=5
为了简单起见,我们得到:
from sklearn.linear_model import LassoCV
from sklearn.datasets import make_regression
X, y = make_regression(noise=4, random_state=0)
reg = LassoCV(cv=5, n_alphas=5, random_state=0).fit(X, y)
根据文档,拟合对象的属性之一是:
alphas_ : numpy 数组,形状 (n_alphas,)
用于拟合的 alpha 网格
所以,这里我们有:
reg.alphas_
# result:
array([ 6.92751635e+01, 1.23190597e+01, 2.19067302e+00,
3.89562872e-01, 6.92751635e-02])
精确值再次由参数 间接确定eps
,其默认值为0.001
; 再次来自文档:
每股收益:浮动,可选
路径的长度。
eps=1e-3
意思是alpha_min / alpha_max = 1e-3
。
因此,本质上它设置了一个可能的 aplhas 网格,例如最小值与最大值的比率等于eps
,这里0.001
; 让我们验证一下在我们的简单示例中是否属于这种情况:
reg.alphas_[4]/reg.alphas_[0]
# result
0.00099999999999999959
出于所有实际目的,它确实等于0.001
。
推荐阅读
- mysql - 在 Laravel 的“php artisan migrate”中出现错误
- javascript - Ajax 响应未显示在刀片 Laravel 中
- python-3.x - 将行附加到磁盘上的 shapefile(不在内存中)?
- sql - 有没有办法在 SQL VIEW 中用 NULL 填充缺失的数据点?
- postgresql - 为什么我的postgresql插入语句中没有重复的主键出现重复的主键错误?
- python - 在 Python 中查找和替换正则表达式
- javascript - 使用 useState 条件渲染数组和过滤后的数组版本
- javascript - JS DOM:如何阻止点击事件触发?
- sql - 我有一个超级简单的存储过程,它给我带来了问题
- ios - 自定义 SHA256 哈希计算在除空字符串之外的任何内容上都失败