0

私はそれが奇妙な問題であることを知っており、MRE を提供することさえできませんが、他の誰かが同様の問題に遭遇して解決したことを願って、質問を投稿しています。

利用可能なすべてのモデルで Rattle を使用しています。私は nnet スタンドアロンを使用して、結果を自分で調べ、パラメーターをより細かく制御したいと考えていました。

ある時点で、エントロピー スイッチをオンにすると (変数や要素がそれほど多くありません)、エラーが発生しました。スイッチをデフォルト (FALSE) に戻しましたが、それ以来、nnet は正しく機能しませんでした。Rattle の中でも、おそらく 100 回使用したトレーニング セットでは機能しません。確率スコアを取得できました。Rattle は、nnet ではなく、他のすべてのモデルで確率スコアを示します。Rattle Score オプションで「確率」が選択されていても、Nnet はバイナリ出力を生成します。

nnetで同様の問題に遭遇した人はいますか?

編集:コード部分は次のとおりです。

mnnet <- nnet(response1 ~ ., data=dftr, size=10, skip=TRUE, MaxNWts=100000, trace=FALSE, maxit=100)

MaxNWts を増やすと のエラーは解決しているように見えますがtoo many weights、現在は実行に時間がかかり、多くのメモリを消費しています。同じデータセットを使用して、1 分もかからずにループ内で多くのトレーニング サイズの可能性を実行できました。(私は 16GB の Mac Book Pro を使用しています)約 10000 行のセットと約 20 の機能について話しています。

以前は完全に機能していたコードの例:

pldata <- data.frame(nobs = NA,
                 ntrain = NA,
                 ntest = NA,
                 error = NA
)
#
obssize <- seq(0.8, 1.0, 0.1)
trsize <- seq(0.5, 0.8, 0.05)
#
set.seed(1234)
for (i in obssize){
  ind1 <- sample(nrow(df), i * nrow(df))
  dfp <- df[ind1,]
  size <- nrow(dfp)
  for (j in trsize){
    ind2 <- sample(nrow(dfp), j * nrow(dfp))
    dftr <- dfp[ind2, ]
    dftest <- dfp[-ind2, ]
    mnnet <- nnet(response1 ~ ., data=dftr, size=20, skip=TRUE, MaxNWts=10000, trace=FALSE, maxit=100)
    nnetp <- predict(mnnet, newdata = dftest)
    nnetp <- factor(nnetp, levels = levels(dftr$response1))
    cfm <- table(nnetp, dftest$response1)
    mcrate <- (length(nnetp) - sum(diag(cfm))) / length(nnetp)
    trainsize <- nrow(dftr)
    testsize <- nrow(dftest)
    temp <- data.frame(nobs = size, ntrain = trainsize, ntest =  testsize, error = mcrate)
    pldata <- rbind(pldata, temp)           
  }
}
#
pldata <- pldata[2:nrow(pldata),]

現在、モデル構築部分は機能していません。ましてや、ループに入れているわけではありません。

編集2:パラメータを確認し、何が起こるかを投稿しました:

mnnet <- nnet(response1 ~ ., data=dftr, size=10, skip=TRUE, MaxNWts=100000, trace=FALSE, maxit=100, entropy = FALSE)

> mnnet$entropy

[1] TRUE

エントロピーが「TRUE」に設定されると、デフォルトに戻すことは不可能のようです。

4

0 に答える 0