You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

mlr3中classif.cv_glmnet:获取CV选定的λ值与β系数方法

在mlr3中使用classif.cv_glmnet的Lasso二分类问题解答

基础问题:获取CV选定的λ值及对应β系数

训练classif.cv_glmnet后,模型对象已包含CV过程得到的最优λ(默认是lambda.min,也可指定lambda.1se),你可以通过以下步骤提取对应系数:

# 初始化训练器并训练
learner = lrn("classif.cv_glmnet")
learner$train(task)

# 获取CV选定的最优λ(默认lambda.min,可通过lambda.select参数切换为lambda.1se)
best_lambda = learner$model$lambda.min

# 获取对应λ的β系数(包含截距项)
best_coef = coef(learner$model, s = best_lambda)
# 转为数据框方便查看
as.data.frame(as.matrix(best_coef))

你的三个疑问解答

1. 解释glmnet.fit输出中的%dev、df等指标

  • %dev:代表模型解释的偏差比例,对于二分类任务,计算公式为 1 - (残差偏差 / 零模型偏差)。零模型是仅包含截距项的模型,%dev越接近1,说明模型对数据的拟合效果越好。
  • df:指模型中非零系数的数量(包含截距项)。Lasso通过正则化将部分系数压缩至0,df反映了当前λ下模型的复杂度——λ越小,df越大,模型越复杂。
  • lambda:正则化惩罚参数,λ越大,惩罚力度越强,被压缩至0的系数越多,模型越简洁。

2. 无需手动指定λ.1se,直接获取最终模型的β系数

classif.cv_glmnet的lambda.select参数默认值为"lambda.min",训练后模型已基于该最优λ完成拟合。你可以直接通过以下代码提取最终系数,无需手动输入λ值:

# 自动匹配训练器选定的最优λ
final_coef = coef(learner$model, s = learner$model[[learner$param_set$values$lambda.select]])
as.data.frame(as.matrix(final_coef))

如果需要切换为lambda.1se,只需在初始化训练器时设置参数:

learner = lrn("classif.cv_glmnet", lambda.select = "lambda.1se")
learner$train(task)
# 同样方式提取系数
final_coef = coef(learner$model, s = learner$model$lambda.1se)

3. 使用resample时的嵌套重采样判定及各fold系数获取

  • 是否属于嵌套重采样? 是的。resample是外层重采样(如10折交叉验证),而classif.cv_glmnet内部会自动执行CV选择最优λ,这一结构就是嵌套重采样(双层交叉验证),目的是避免数据泄露,得到更可靠的模型性能估计。
  • 获取各fold的最终β系数:遍历resample结果中的每个训练器实例,提取对应fold的最优λ和系数即可:
# 初始化重采样策略
resampling = rsmp("cv", folds = 5)
# 执行重采样
rr = resample(task, learner, resampling)

# 遍历每个fold的训练器,提取系数
fold_coefs = lapply(rr$learners, function(l) {
  best_lambda = l$model[[l$param_set$values$lambda.select]]
  coef_df = as.data.frame(as.matrix(coef(l$model, s = best_lambda)))
  colnames(coef_df) = paste0("fold_", l$model$foldid[1], "_coef")
  return(coef_df)
})

# 合并所有fold的系数(可选)
combined_coefs = do.call(cbind, fold_coefs)

内容的提问来源于stack exchange,提问作者Hanna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 08:33:00