2016-10-31 3 views
0

회귀 문제를 해결하기 위해 neuralnet 패키지를 사용하여 신경망을 계산하려고합니다. 나는 함수를 근사하려고 노력하고있다 : f (x1, x2) = sqrt (x1) + sin (x2) + x1 * x2.R의 신경망 패키지에 문제가

abscisse1 <- 0:100 
    abscisse2 <- 0:100 
    net.abscisseformule <- compute(net.f , cbind(abscisse1,abscisse2)) 
    neuralsortie <- c(net.abscisseformule$net.result) 
    scatterplot3d(abscisse1,abscisse2,neuralsortie) 

나는 결과가 잘못되었다는 확신 : 여기

library(neuralnet) 
library(scatterplot3d) 
X1 <- as.data.frame(runif(1000, min = 0 , max = 100)) 
X2 <- as.data.frame(runif(1000, min = 0 , max = 100)) 
input <- cbind(X1,X2) 
sortie <- sqrt(X1) + sin(X2) + X1*X2 
donnee <- cbind(sortie,input) 
colnames(donnee) <- c("sortie","entree1","entree2") 

f <- as.formula(sortie ~ entree1 + entree2) 
net.f <- neuralnet(f , donnee, hidden = c(10,10,10) ,linear.output = FALSE) 

이 신경망의 출력의 산점도 보는 코드입니다 : 여기

내 코드입니다 왜냐하면 scatterplot은 함수 f의 산점도처럼 보이지 않기 때문입니다. 나는 문제가 라인 여기

f <-as.formula(sortie ~ entree1 + entree2) 

에서 기능

x <- seq(0, 100, 1) 
y <- seq(0, 100, 1) 
z <- sqrt(x) + sin(y) +x*y 
scatterplot3d(x,y,z) 

이의 산점도 볼 수있는 코드가 제공 https://i.stack.imgur.com/HkpbG.png

이가있다 f를의 그래프이다 thonk 신경망의 출력 그래프 https://i.stack.imgur.com/N38dd.png

누군가 내게 파이를 줄 수 있습니까? 조언의 에이스? 많은 감사!

+0

모든 라이브러리 문을 코드에 포함해야합니다. 최소한 당신은 실종되었다고 생각합니다. 2. 비교하고있는 2 개의 플롯을 보여주십시오. –

답변

0

내 질문에 대한 답을 찾았습니다. 책 통계 학습의 요소 (Friedman, Tibshirani 및 Hastie)에 따르면, 회귀 문제를 풀 때 신경망의 마지막 층에서 ID 함수를 사용해야합니다. 즉, 출력은 이전 레이어의 선형 조합입니다. R을 사용하려면 "linear.output"을 FALSE가 아닌 TRUE로 설정해야합니다.