Выбор функции с помощью gl mnet и проблема с памятью - PullRequest
0 голосов
/ 08 апреля 2020

Я написал программу выбора объектов в R, используя регрессию elasti c - net. Мои тренировочные данные содержат около 65 образцов с 500K-характеристиками. Я использую 500 загрузчиков для повторной выборки данных, и на каждой итерации я делаю 5 перекрестных проверок, чтобы выбрать свои гиперпараметры, а затем запускаю elasti c - net. Выбранные объекты сохраняются в фрейме данных. Моя идея состоит в том, чтобы оставить только те функции для прогноза, которые выбраны как минимум за 350 итераций. Я выполняю это в кластерной системе, но мой код завершается с ошибкой, в которой говорится: «Ошибка: невозможно выделить вектор размером 737,0 Гб». Я прилагаю фрагмент режима, который выполняет итерацию и хранение функций. Есть ли лучший способ решения этой проблемы? Так как это выбор функций, я не думаю, что могу подмножество функций. Пожалуйста, дайте мне знать, если вам нужна дополнительная информация. Я ценю все комментарии и помощь.

 FeatureFrame <- data.frame(matrix(nrow=0, ncol=1))
 runCrossValidation_and_select <- function(data,indices){
 newData <- data[indices,]
 newData <- as.matrix(newData)
 cv_data <- train(
  MSSS ~., data=newData,
  method = "glmnet",
  trControl = cross-validation
)
bestModel <- cv_data$finalModel
Capture_EN <- coef(bestModel,s=cv_data$bestTune$lambda)
extractedFeature <- data.frame(as.matrix(Capture_EN))
extractedFeature <- extractedFeature[extractedFeature$X1 != 0,,drop=FALSE]
extractedFeature$Feature <- rownames(extractedFeature)
rownames(extractedFeature) <- NULL
FeatureFrame <<- rbind(FeatureFrame,extractedFeature)
return(1)
}

print('Started bootStrap')
bootStrap <- boot(data=TrainingSet, statistic=runCrossValidation_and_select, R=500)
...