caret
のmlp
メソッドは、RSNNS
のmlp
関数を呼び出します。 RSNNS
パッケージでは、サイズ・パラメータを設定することで、好きなようにニューラル・ネットの隠れ層をいくつでも設定できます。キャレットパッケージにmlpメソッドを使ってマルチ隠れ層ニューラルネットワークを設定する方法はありますか?
data(iris)
#shuffle the vector
iris <- iris[sample(1:nrow(iris),length(1:nrow(iris))),1:ncol(iris)]
irisValues <- iris[,1:4]
irisTargets <- decodeClassLabels(iris[,5])
#irisTargets <- decodeClassLabels(iris[,5], valTrue=0.9, valFalse=0.1)
iris <- splitForTrainingAndTest(irisValues, irisTargets, ratio=0.15)
iris <- normTrainingAndTestSet(iris)
model <- mlp(iris$inputsTrain, iris$targetsTrain, size=c(5,7), learnFuncParams=c(0.1),
maxit=50, inputsTest=iris$inputsTest, targetsTest=iris$targetsTest)
5ノードと7ノードの2つの隠れたレイヤーを持つニューラルネットを設定します。 caret
パッケージを使用したいのは、パラメータ/モデル検索の機能とクラスタの並列実装があるためです。 caret
では、メソッドを参照するときに、1つのパラメータ、size
でのみ調整できます。
data(iris)
mlpGrid <- data.frame(.size=3)
model2<-caret::train(Species~. , iris, method='mlp', tuneGrid=mlpGrid)
3ノードの単一隠れ層を持つニューラルネットを設定します。
他の列をmlpGrid
などに追加しようとしましたが、caret
は2番目(またはそれ以上)の隠し層を追加できないようです。