【问题标题】:My understanding of : How does CV.GLMNET work to choose optimal lambda?我的理解:CV.GLMNET 如何选择最佳 lambda?
【发布时间】:2023-03-30 14:45:02
【问题描述】:

我希望确认我对 glmnet 包中的 CV 程序的理解,以便向我的论文的审稿人解释它。如果有人可以添加信息以进一步澄清答案,我将不胜感激。

具体来说,我遇到了一个包含 29 个输入变量和 106 行的二元分类问题。我没有拆分成训练/测试数据(并进一步减少训练数据),而是使用 lasso 通过交叉验证选择 lambda 作为最小化过度拟合的一种手段。在使用cv.glmnet 训练模型后,我在同一数据集上测试了它的分类准确度(自举 x 10000 错误间隔)。我承认在这种情况下无法消除过度拟合,但通过交叉验证选择的惩罚项 lasso 会减轻其影响。

我对审稿人(和我一样是医生)的解释是:cv.glmnet 是如何做到的:

在10折交叉验证的每一步中,数据被随机划分 分成两组,其中 9/10 的数据用于训练,1/10 的数据用于 内部验证(即测量模型的二项式偏差/误差 用那个 lambda 开发)。绘制了 Lambda 与偏差。当。。。的时候 该过程再重复 9 次,λ 的 95% 置信区间 与偏差得出。进入模型的最终 lambda 值 是在高 lambda 和低 lambda 之间做出最佳折衷的一种 偏差。高 lambda 是最小化过度拟合的因素,因为 不允许通过分配大来改进回归模型 变量的系数。然后在整个模型上训练模型 使用最小二乘近似的数据集,可最大限度地减少模型误差 受到 lambda 项的惩罚。因为 lambda 项是通过 交叉验证(而不是来自整个数据集),选择 lambda 在某种程度上独立于数据。

我怀疑我的解释可以大大改进,或者阅读本文的专家指出的方法中的缺陷。 提前致谢。

【问题讨论】:

    标签: r logistic-regression cross-validation glmnet lasso-regression


    【解决方案1】:

    我想有点晚了,但这里是。

    glmnet 默认选择lambda.1se。它是 MSE 在最小 MSE 的一个标准误差内的最大 λ。沿着过拟合的思路,这通常通过选择更简单的模型(更少的非零项)来减少过拟合,但其误差仍然接近误差最小的模型。您也可以查看此post。不太确定您的意思是“进入模型的最终 lambda 值是在高 lambda 和低偏差之间做出最佳折衷的值。”

    您的方法的主要问题是在相同的训练数据上计算其准确性。这并不能告诉您模型在看不见的数据上的表现有多好,并且自举不能解决准确性错误。对于错误的估计,您应该实际使用来自交叉验证的错误。如果您的模型不能处理 90% 的数据,我看不出使用所有训练数据是如何工作的。

    【讨论】:

      猜你喜欢
      • 2017-06-04
      • 2020-09-29
      • 1970-01-01
      • 2020-09-22
      • 2010-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-19
      相关资源
      最近更新 更多