私はニューラルネットワークの世界にはかなり慣れていないので、ご理解をお願いします。いくつかのテストを生成しているため、パラメーターsize
およびdecay
について質問があります。 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メソッドを使用する最良の方法ですか?2番目に、サイズと減衰について読みました(例 Rのnnet関数の減衰パラメータの目的 )。ここで実際にそれらを使用する方法を理解してください。誰か助けてもらえますか?
Caretパッケージでは、クロス検証(ホールドアウトまたはKフォールド)またはブートストラップを使用して、さまざまなモデルをトレーニングし、ハイパーパラメーターを調整できます。
キャレットを使用してハイパーパラメーターを調整するには、グリッド検索とランダム検索の2つの方法があります。グリッド検索(ブルートフォース)を使用する場合は、事前の知識に従ってすべてのパラメーターのグリッドを定義する必要があります。そうしないと、一部のパラメーターを修正して残りのパラメーターを繰り返すことができます。ランダム検索を使用する場合、チューニングの長さ(最大反復回数)を指定する必要があり、キャレットは停止基準が満たされるまでハイパーパラメーターにランダム値を使用します。
選択した方法に関係なく、Caretはハイパーパラメータの各組み合わせを使用して、次のようにモデルをトレーニングし、パフォーマンスメトリックを計算します。
最初のトレーニングサンプルを2つの異なるセットに分割します。トレーニングと検証(bootstrapまたは相互検証の場合)とkセット(k分割相互検証の場合)です。
トレーニングセットを使用してモデルをトレーニングし、検証セットを予測します(相互検証ホールドアウトおよびブートストラップの場合)。または、k-1トレーニングセットを使用して、k番目のトレーニングセットを使用して予測します(K分割交差検証の場合)。
検証セットでは、CaretはいくつかのパフォーマンスメトリックをROC、精度...として計算します。
グリッド検索が完了するかチューニング長が完了すると、キャレットはパフォーマンスメトリックを使用して、以前に定義された基準に従って最適なモデルを選択します(ROC、精度、感度、RSquared、RMSE ...を使用できます)。
いくつかのプロットを作成して、リサンプリングプロファイルを理解し、最適なモデルを選択できます(パフォーマンスと複雑さを考慮してください)。
caretに関する詳細情報が必要な場合は、 Caret Webページ を確認できます。
Caretを使用してニューラルネットワーク(nnet)をトレーニングする場合、sizeおよびdecayの2つのハイパーパラメーターを指定する必要があります。サイズは非表示層(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トレーニングプロセスから生成されました