我想知道如何使用R中的glmnet正确地训练和测试LASSO模型?
- 具体来说,我想知道如果缺少外部测试数据集该如何使用交叉验证(或其他类似方法)来测试我的LASSO模型,该怎么做。
让我分解一下情况:
我只有一个数据集来通知和训练我的glmnet模型。结果,我将不得不使用交叉验证来拆分数据,以生成一种测试模型的方法。
我已经在使用cv.glmnet
,根据软件包的详细信息:
对glmnet进行k折交叉验证,生成图并返回lambda的值。
进行交叉验证
cv.glmnet
只是为了选择最佳的λ,还是作为更通用的交叉验证程序?- 换句话说,我还需要执行另一个交叉验证步骤来“测试”我的模型吗?
我正在假设“是的”。
既然如此,我该如何交叉验证我的cv.glmnet
模型?
我是否必须手动执行此
caret
功能,或者该功能对glmnet模型有用吗?我是否使用交叉验证的两个同心“循环”?...我是否使用CV的“内循环”
cv.glmnet
来确定k倍交叉验证处理的“外部循环”的每k倍内的最佳lambda值?如果我对已经进行交叉验证的
cv.glmnet
模型进行交叉验证,那么如何cv.glmnet
在交叉验证的“外部循环”的每一折中将“最佳”模型(与“最佳” lambda值隔离)与每个模型隔离?- 注:我定义“最好”的模式,与产生最小的1 SE内的MSE拉姆达关联的模型......这是
$lambda.1se
在cv.glmnet
模型。
- 注:我定义“最好”的模式,与产生最小的1 SE内的MSE拉姆达关联的模型......这是
内容:
我正在尝试根据树木直径(“ D”),D ^ 2和种类(“ factor(SPEC)”)来预测树木年龄(“年龄”)。[结果方程式:Age ~ D + factor(SPEC) + D^2
]。我有约5万行数据,但数据是纵向的(通过时间跟踪个体),由约65种组成。