1

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

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

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

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

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

4

1 回答 1

0

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

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

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

于 2021-05-01T11:32:01.003 回答