我试图确定在我的函数中使用什么alphaglmnet,但帮助文件告诉我:
请注意,cv.glmnet 不会搜索 alpha 的值。应提供特定值,否则默认假定 alpha=1。如果用户也想交叉验证 alpha,他们应该使用预先计算的向量 foldid 调用 cv.glmnet,然后在对具有不同 alpha 值的 cv.glmnet 的单独调用中使用相同的折叠向量。
但是,我不明白:
- foldid 向量/参数是什么。
- 如何创建折叠向量
- 如何使用 foldid 参数。
对此的任何帮助将不胜感激!
我试图确定在我的函数中使用什么alphaglmnet,但帮助文件告诉我:
请注意,cv.glmnet 不会搜索 alpha 的值。应提供特定值,否则默认假定 alpha=1。如果用户也想交叉验证 alpha,他们应该使用预先计算的向量 foldid 调用 cv.glmnet,然后在对具有不同 alpha 值的 cv.glmnet 的单独调用中使用相同的折叠向量。
但是,我不明白:
对此的任何帮助将不胜感激!
fold.id允许用户预先指定交叉验证折叠cv.glmnet。例如,如果我有一些数据
x | y | fold.id
-----+------+--------
0 | 1 | 1
1 | 1 | 1
0 | 0 | 2
1 | 2 | 2
. | . | .
然后将指示的列作为fold.id参数传递给cv.glmnet将导致(例如)前两个观察值位于同一折叠中,第三和第四个观察值位于相同(不同)折叠中。
作者建议,如果您想在一些离散的集合之间进行选择基于一个最优的一些错误的交叉验证估计,那么在确定每个交叉验证时,最好在每个交叉验证中使用相同的折叠结构.
根据Glmnet Vignette,设置 glmnet 的一种方法foldid是:
foldid<-sample(1:10,size=length(y),replace=TRUE)
然后应用于一系列 alpha:
cv1=cv.glmnet(x,y,foldid=foldid,alpha=1)
cv.5=cv.glmnet(x,y,foldid=foldid,alpha=.5)
cv0=cv.glmnet(x,y,foldid=foldid,alpha=0)
该sample()函数基本上允许您在为响应变量矩阵y的长度提供的范围内(= 1:nfolds)生成一个随机数向量。通过这种方式,您将每个输入矩阵行分配给随机(但现在设置)折叠。