2

テクスチャ、バルク密度、1 つまたは 2 つの保水などのより拡張された入力データに限定して使用して、van genuchten 保水パラメーター (theta_r、thera_s、alpha、n) の推定を予測するニューラル ネットワーク モデルを設計しています。R プロジェクトでのニューラル ネットワークの調査 RSNNS パッケージを見つけ、隠れユニットの数と学習率を調整して、複数の多層パーセプトロン (MLP) を作成およびトレーニングしました。これらのモデルの RMSE のトレーニングとテストで特徴付けられる一般的なパフォーマンスは、非常に貧弱でランダムです。実際、バイアスを回避し、ほぼ対数正規分布を説明するために、alpha および n パラメータの対数変換値を使用しましたが、これはあまり役に立ちません :( . nnet と caret パッケージを使用するように勧められましたが、コードを適応させるのに苦労しました。何が間違っているのかわかりません。

#input dataset
basic <- read.table(url("https://dl.dropboxusercontent.com/s/m8qe4k5swz1m3ij/basic.txt?dl=1&token_hash=AAH6Z3d6fWTLoQZYi04Ys72sdufdERE5gm4v7eF0cgMlkQ"), header=T, sep=" ")
#output dataset
fitted <- read.table(url("https://dl.dropboxusercontent.com/s/rjx745ej80osbbu/fitted.txt?dl=1&token_hash=AAHP1zcPQyw4uSe8rw8swVm3Buqe3TP7I1j-4_SOeeUTvw"), header=T, sep=" ")

# Use log-transformed values of alpha and n output parameters
fitted$alpha <- log(fitted$alpha)
fitted$n <- log(fitted$n)


#Fit model with caret package
library(caret)
model <- train(x = basic, y = fitted, method='nnet', linout=TRUE, trace = FALSE,
               #Grid of tuning parameters to try:
               tuneGrid=expand.grid(.size=c(1,5,10),.decay=c(0,0.001,0.1)))
4

1 に答える 1

3

caret呼び出しているアルゴリズムの単なるラッパーであるため、キャレットの調整グリッドのオプションでなくても、アルゴリズムで任意のパラメーターを指定できます。これは、キャレットの関数の「...」を介して達成されますtrain()。これは、基本的に、呼び出しているメソッドに追加のパラメーターを渡すことができることを示しています。nnet 呼び出しに合わせてどのパラメーターを調整したいのかわからない (ドロップボックス データにアクセスするときにエラーが発生する) ため、特定の値をmaxitandに渡す簡単な例を次に示しHessます。

> library(caret)
> m1 <- train(Species~.,data=iris, method='nnet', linout=TRUE, trace = FALSE,trControl=trainControl("cv"))
> #this time pass in values for maxint and Hess
> m2 <- train(Species~.,data=iris, method='nnet', linout=TRUE, trace = FALSE,trControl=trainControl("cv"),maxint=10,Hess=T)
> m1$finalModel$call
nnet.formula(formula = modFormula, data = data, size = tuneValue$.size, 
    decay = tuneValue$.decay, linout = TRUE, trace = FALSE)
> m2$finalModel$call
nnet.formula(formula = modFormula, data = data, size = tuneValue$.size, 
    decay = tuneValue$.decay, linout = TRUE, trace = FALSE, maxint = 10, 
    Hess = ..4)
于 2013-10-28T16:00:09.073 に答える