【问题标题】:Time Series Cross Validation for LASSO modelLASSO 模型的时间序列交叉验证
【发布时间】:2020-05-30 12:20:43
【问题描述】:

正如标题所暗示的,我的目标是使用 L1 惩罚(Lasso)执行时间序列交叉验证。 由于数据框是时间序列格式,显然时间序列分析的结果应该比普通的简历更合适。

这是我尝试过的代码行

library(caret)
library(ggplot2)
library(pls)
economics
timeSlices <- createTimeSlices(1:nrow(economics), 
                               initialWindow = 36, horizon = 12, fixedWindow = FALSE)
trainSlices <- timeSlices[[1]]
testSlices <- timeSlices[[2]]

这允许为一个训练集创建两个切片(总是得到一个更多的观察值),同时保持测试集的长度不变。 问题就出现在这里

plsFitTime <- train(unemploy ~ pce + pop + psavert,
                data = economics[trainSlices[[1]],],
                method = "glmnet",
                alpha = 1)

这里是错误

出了点问题;缺少所有 RMSE 指标值:

      RMSE        Rsquared        MAE     
 Min.   : NA   Min.   : NA   Min.   : NA  
 1st Qu.: NA   1st Qu.: NA   1st Qu.: NA  
 Median : NA   Median : NA   Median : NA  
 Mean   :NaN   Mean   :NaN   Mean   :NaN  
 3rd Qu.: NA   3rd Qu.: NA   3rd Qu.: NA  
 Max.   : NA   Max.   : NA   Max.   : NA  
 NA's   :9     NA's   :9     NA's   :9    
Error: Stopping
In addition: Warning message:
In nominalTrainWorkflow(x = x, y = y, wts = weights, info = trainInfo,  :
  There were missing values in resampled performance measures.

我真的不明白这可能有什么问题。

我的最终目标是表演

pred <- predict(plsFitTime,economics[testSlices[[1]],])
true <- economics$unemploy[testSlices[[1]]]

对此有何建议?

【问题讨论】:

  • 这似乎主要是一个方法问题,最好在 CrossValidated.com 上寻求可靠的答案。与此同时,您可能想在那里进行自己的搜索。并查看:books.google.es/books/about/…

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


【解决方案1】:

如果您查看警告:

50:Resample17 的模型拟合失败:alpha=0.55,lambda=42.28 错误 (函数 (x, y, family = c("gaussian", "binomial", "poisson", :
由多个实际参数匹配的形式参数“alpha”

默认情况下,glmnet 的训练是在 lambda 和 alpha 上完成的。而且您指定的 alpha 与 caret 生成的 alpha 发生冲突。

如果你想要一个固定的 alpha,应该在 tuneGrid 中指定。

t_grid = expand.grid(lambda=seq(0,1,by=0.1),alpha=1)
plsFitTime <- train(unemploy ~ pce + pop + psavert,
                    data = economics[trainSlices[[1]],],
                    method = "glmnet",
                    tuneGrid = t_grid)

可以查看超参数here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-20
    • 2018-10-10
    • 1970-01-01
    • 2016-12-06
    • 1970-01-01
    • 1970-01-01
    • 2013-05-19
    • 2018-03-23
    相关资源
    最近更新 更多