9

我对神经网络世界很陌生,所以我请求你的理解。我正在生成一些测试,因此我对参数sizedecay. 我使用caret包和方法nnet。示例数据集:

require(mlbench)
require(caret)
require (nnet)

data(Sonar)
mydata=Sonar[,1:12] 

set.seed(54878)
ctrl = trainControl(method="cv", number=10,returnResamp = "all")
for_train= createDataPartition(mydata$V12, p=.70, list=FALSE) 
my_train=mydata[for_train,]
my_test=mydata[-for_train,] 

t.grid=expand.grid(size=5,decay=0.2)
mymodel = train(V12~ .,data=my_train,method="nnet",metric="Rsquared",trControl=ctrl,tuneGrid=t.grid) 

所以,有两个是我的问题。首先,这是使用插入符号使用 nnet 方法的最佳方法吗?其次,我已经阅读了有关大小和衰减的信息(例如,R 中 nnet 函数中衰减参数的目的?)但我不明白如何在实践中使用它们这里。任何人都可以帮忙吗?

4

1 回答 1

17

插入符号的简要说明

Caret 包允许您使用交叉验证(Hold-Out 或 K-fold)或 Bootstrap 训练不同的模型和调整超参数。

使用 Caret 调整超参数有两种不同的方法:网格搜索和随机搜索。如果您使用网格搜索(蛮力),您需要根据您的先验知识为每个参数定义网格,或者您可以修复一些参数并迭代剩余的参数。如果您使用随机搜索,您需要指定调整长度(最大迭代次数),并且 Caret 将为超参数使用随机值,直到停止条件成立。

无论您选择哪种方法,Caret 都将使用超参数的每种组合来训练模型并计算性能指标,如下所示:

  1. 将初始训练样本分成两个不同的集合:训练和验证(用于引导或交叉验证)和 k 个集合(用于 k 折交叉验证)。

  2. 使用训练集训练模型并在验证集上进行预测(对于交叉验证保持和引导程序)。或者使用 k-1 个训练集并使用第 k 个训练集进行预测(对于 K-fold Cross Validation)。

  3. 在验证集上,Caret 计算一些性能指标,如 ROC、准确度......

  4. 一旦网格搜索完成或调谐长度完成插入符使用性能指标根据先前定义的标准选择最佳模型(您可以使用 ROC、准确性、敏感性、RSquared、RMSE ......)

  5. 您可以创建一些图来了解重采样配置文件并选择最佳模型(记住性能和复杂性)

如果您需要有关 Caret 的更多信息,可以查看Caret 网页

使用 Caret 的神经网络训练过程

当您使用 Caret 训练神经网络 (nnet) 时,您需要指定两个超参数:sizedecay。大小是隐藏层中的单元数(nnet 拟合单个隐藏层神经网络),衰减是避免过度拟合的正则化参数。请记住,对于每个 R 包,超参数的名称都可以更改。

使用 Caret 进行分类训练神经网络的示例:

fitControl <- trainControl(method = "repeatedcv", 
                           number = 10, 
                           repeats = 5, 
                           classProbs = TRUE, 
                           summaryFunction = twoClassSummary)

nnetGrid <-  expand.grid(size = seq(from = 1, to = 10, by = 1),
                        decay = seq(from = 0.1, to = 0.5, by = 0.1))

nnetFit <- train(Label ~ ., 
                 data = Training[, ],
                 method = "nnet",
                 metric = "ROC",
                 trControl = fitControl,
                 tuneGrid = nnetGrid,
                 verbose = FALSE)

最后,您可以制作一些图来了解重采样结果。下图是从 GBM 训练过程生成的

使用 Caret 的 GBM 训练过程

于 2017-05-29T03:02:04.423 回答