R
1 train <- read.csv(sprintf("imger1.csv"),h=T) 2 valid <- read.csv(sprintf("imger1.csv"),h=T) 3 4 sin1 <- nnet(data=train,output~input,size=3,maxit=10000); 5 yosoku1 <- predict(sin1,valid,type="raw") 6 sum(yosoku1)
imger1.csv
1"output","input" 20.929411764705882,1 30.929411764705882,2 41,3 51,4 60.109803921568627,5 70.109803921568627,6 80.996078431372549,7 90.996078431372549,8 100.133333333333333,9 110.133333333333333,10 121,11 131,12 141,13 151,14 161,15 171,16
imger2.csv
1"output","input" 20.00392156862745098,1 30,2 41,3 51,4 60,5 70,6 80.996078431372549,7 91,8 100,9 110,10 120.992156862745098,11 131,12 141,13 151,14 161,15 171,16
以下のようのプログラムを実行すると、imger1同士でプログラムのようにnn関数にあてても、
誤差(sum)が12程度になります、
対し、imger1とimger2でnn関数にあてても、12程度になります、
imger2同士なら9.8なのですが、
imger1同士なら、理想的には0、そうでなくとも、異なるもの同士、
imger1,2であてた時よりも誤差は小さくなるべきだと思います(全く同じもの同士は誤差がないので
にもかかわらず、なぜ1-1と1-2が同じ誤差になるのでしょう・・・。
> 誤差(sum)が
誤差は真値と予測値の違いだから、
sum(yosoku1)
ではなくて、たとえば
sqrt(mean((valid$output - yosoku1)^2))
とかでは?
お・・・確かにpredictはそのまま「予測値」なんですかね。。
誤差であるこのoutputとは、いったいどれを指しており、なぜそれで良いのでしょうか・・・。
> 誤差であるこのoutput
outputは真値
> outputとは、いったいどれ
csvファイルのoutput列
csvファイルから読み込んだ真値ペアvalidにinputとoutputが入ってて、inputからoutputを予測する学習をしてるので、outputがどれだけ正確に予測できてるか、が大事
> なぜそれで良い
https://mathwords.net/rmsemae
のRMSEの説明見てください