Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 使cv.glmnet在lambda.min和lambda.1se之间选择某个值_R_R Caret_Glmnet - Fatal编程技术网

R 使cv.glmnet在lambda.min和lambda.1se之间选择某个值

R 使cv.glmnet在lambda.min和lambda.1se之间选择某个值,r,r-caret,glmnet,R,R Caret,Glmnet,我正在训练一个弹性网络模型,发现lambda.1se远高于lambda.min,通常是在选择零特征的情况下测试的最大lambda。我猜这是因为我的标准差很大 有没有办法让cv.glmnet在lambda.1se和lambda.min之间选择一个值 x = matrix(rnorm(100 * 20), 100, 20) # not the actual data y = gl(2, 50) fit <- cv.glmnet( x = x, y = y, family = "bin

我正在训练一个弹性网络模型,发现
lambda.1se
远高于
lambda.min
,通常是在选择零特征的情况下测试的最大lambda。我猜这是因为我的标准差很大

有没有办法让
cv.glmnet
lambda.1se
lambda.min
之间选择一个值

x = matrix(rnorm(100 * 20), 100, 20) # not the actual data
y = gl(2, 50)

fit <- cv.glmnet(
  x = x, y = y,
  family = "binomial",
  nfolds = nrow(x), grouped = F,
  standardize = T,
  alpha = 0.2
)
x=矩阵(rnorm(100*20),100,20)#不是实际数据
y=gl(2,50)

fit谢谢@Nutle,我能够使用您的建议实现一个选择功能,类似于
插入符号中的
公差
功能。它选择最小误差百分比差内的最大λ值

get_lambda <- function(fit, tol = 1.05) {
  error <- fit$cvm[fit$lambda == fit$lambda.min]
  tolerance <- error * tol
  max(fit$lambda[fit$cvm <= tolerance])
}

get_lambda谢谢@Nutle,我能够利用您的建议实现一个选择函数,该函数类似于
caret
中的
tolerance
函数。它选择最小误差百分比差内的最大λ值

get_lambda <- function(fit, tol = 1.05) {
  error <- fit$cvm[fit$lambda == fit$lambda.min]
  tolerance <- error * tol
  max(fit$lambda[fit$cvm <= tolerance])
}

get\u lambda有一组
lambda
值,可以在
fit$lambda
中使用。如果
lambda.1se
太稀疏,您可能需要基于
fit$nzero
选择lambda。您可以在
fit$lambda
中使用一组
lambda
值。如果
lambda.1se
太稀疏,您可能需要基于
fit$nzero
选择lambda。