在 运行 弹性网络回归模型之后尝试获取 lambda 和 alpha 值时输出滞后
Output is lagging when trying to get lambda and alpha values after running Elastic-Net Regression Model
我是 R 和 Elastic-Net 回归模型的新手。我正在 运行 在默认数据集 titanic 上使用 Elastic-Net 回归模型。我试图在 运行 训练函数后获取 Alpha 和 Lambda 值。但是,当我 运行 train 函数时,输出一直滞后,我不得不等待输出,但根本没有输出。它是空的....我正在尝试调整参数。
data(Titanic)
example<- as.data.frame(Titanic)
example['Country'] <- NA
countryunique <- array(c("Africa","USA","Japan","Australia","Sweden","UK","France"))
new_country <- c()
#Perform looping through the column, TLD
for(loopitem in example$Country)
{
#Perform random selection of an array, countryunique
loopitem <- sample(countryunique, 1)
#Load the new value to the vector
new_country<- c(new_country,loopitem)
}
#Override the Country column with new data
example$Country<- new_country
example$Class<- as.factor(example$Class)
example$Sex<- as.factor(example$Sex)
example$Age<- as.factor(example$Age)
example$Survived<- as.factor(example$Survived)
example$Country<- as.factor(example$Country)
example$Freq<- as.numeric(example$Freq)
set.seed(12345678)
trainRowNum <- createDataPartition(example$Survived, #The outcome variable
#proportion of example to form the training set
p=0.3,
#Don't store the result in a list
list=FALSE);
# Step 2: Create the training mydataset
trainData <- example[trainRowNum,]
# Step 3: Create the test mydataset
testData <- example[-trainRowNum,]
alphas <- seq(0.1,0.9,by=0.1);
lambdas <- 10^seq(-3,3,length=100)
#Logistic Elastic-Net Regression
en <- train(Survived~. ,
data = trainData,
method = "glmnet",
preProcess = NULL,
trControl = trainControl("repeatedcv",
number = 10,
repeats = 5),
tuneGrid = expand.grid(alpha = alphas,
lambda = lambdas)
)
能否请您告知建议分配给 Alpha 和 lambda 的值?
谢谢
我不太确定问题出在哪里。你的代码 运行 对我来说很好。如果我查看 en
对象,它会显示:
Accuracy was used to select the optimal model using the
largest value.
The final values used for the model were alpha = 0.1 and lambda
= 0.1.
对我来说 运行 没多久。您的 R 会话内存中是否存储了很多可能会减慢系统速度并导致其滞后的内容?也许尝试 re-starting RStudio 和 运行 从头开始编写上面的代码。
要查看所有 Alpha 和 Lambda 组合的准确度 table,请查看 en$results
作为side-note,可以直接在glmnet
包中,使用cv.glmnet
函数轻松实现cross-validation。还提供了一个名为 glmnetUtils
的帮助程序包,它可以让您使用 cva.glmnet
函数同时 select 最佳 Alpha 和 Lambda 值。这允许并行化,因此可能比通过 caret
.
执行 cross-validation 更快
我是 R 和 Elastic-Net 回归模型的新手。我正在 运行 在默认数据集 titanic 上使用 Elastic-Net 回归模型。我试图在 运行 训练函数后获取 Alpha 和 Lambda 值。但是,当我 运行 train 函数时,输出一直滞后,我不得不等待输出,但根本没有输出。它是空的....我正在尝试调整参数。
data(Titanic)
example<- as.data.frame(Titanic)
example['Country'] <- NA
countryunique <- array(c("Africa","USA","Japan","Australia","Sweden","UK","France"))
new_country <- c()
#Perform looping through the column, TLD
for(loopitem in example$Country)
{
#Perform random selection of an array, countryunique
loopitem <- sample(countryunique, 1)
#Load the new value to the vector
new_country<- c(new_country,loopitem)
}
#Override the Country column with new data
example$Country<- new_country
example$Class<- as.factor(example$Class)
example$Sex<- as.factor(example$Sex)
example$Age<- as.factor(example$Age)
example$Survived<- as.factor(example$Survived)
example$Country<- as.factor(example$Country)
example$Freq<- as.numeric(example$Freq)
set.seed(12345678)
trainRowNum <- createDataPartition(example$Survived, #The outcome variable
#proportion of example to form the training set
p=0.3,
#Don't store the result in a list
list=FALSE);
# Step 2: Create the training mydataset
trainData <- example[trainRowNum,]
# Step 3: Create the test mydataset
testData <- example[-trainRowNum,]
alphas <- seq(0.1,0.9,by=0.1);
lambdas <- 10^seq(-3,3,length=100)
#Logistic Elastic-Net Regression
en <- train(Survived~. ,
data = trainData,
method = "glmnet",
preProcess = NULL,
trControl = trainControl("repeatedcv",
number = 10,
repeats = 5),
tuneGrid = expand.grid(alpha = alphas,
lambda = lambdas)
)
能否请您告知建议分配给 Alpha 和 lambda 的值? 谢谢
我不太确定问题出在哪里。你的代码 运行 对我来说很好。如果我查看 en
对象,它会显示:
Accuracy was used to select the optimal model using the
largest value.
The final values used for the model were alpha = 0.1 and lambda
= 0.1.
对我来说 运行 没多久。您的 R 会话内存中是否存储了很多可能会减慢系统速度并导致其滞后的内容?也许尝试 re-starting RStudio 和 运行 从头开始编写上面的代码。
要查看所有 Alpha 和 Lambda 组合的准确度 table,请查看 en$results
作为side-note,可以直接在glmnet
包中,使用cv.glmnet
函数轻松实现cross-validation。还提供了一个名为 glmnetUtils
的帮助程序包,它可以让您使用 cva.glmnet
函数同时 select 最佳 Alpha 和 Lambda 值。这允许并行化,因此可能比通过 caret
.