7장_k-인접이웃분류 (4).pdf
0.45MB
8장_신경망모형 (3).pdf
0.64MB
R의 neuralnet을 활용한 신경망분석.pdf
1.11MB
caret을 이용한 신경망 모형 적합
예제1
library(nnet)
nn.iris <- nnet(Species~., data=iris, size=2, rang=0.1, decay=5e-4, maxit=200)
# 은닉층의 노드 수(size)는 2, 초기 랜덤 가중치의 범위는 [-0.1, 0.1], weight decay 모수는 0(디폴트), 최대반복수는 200(디폴트는 100)
summary(nn.iris)
nn.iris
nn.iris$wts
nn.iris$value
nn.iris$fitted.values
library(clusterGeneration)
library(scales)
library(reshape)
plot(nn.iris)
table(iris$Species, predict(nn.iris, iris, type = "class"))
# caret
# 모수 조율 : 5-fold cross validation 을 5번 반복하여 가장 좋은 후보의 모수를 찾는 방법
library(caret)
fitControl <- trainControl(method = "repeatedcv", number = 5, repeats = 5)
model_nnet <- train(Species~., data=iris, method="nnet", trControl = fitControl, preProc=c("center","scale"))
model_nnet
plot(model_nnet)
predictions <- predict.train(model_nnet, iris, type = "raw")
table(predictions)
confusionMatrix(predictions,iris$Species)
predictions_prob <- predict.train(model_nnet, iris, type = "prob")
predictions_prob
예제3
library(neuralnet)
train.input <- as.data.frame(runif(50, min=0, max=100))
train.output <- sqrt(train.input)
train.data <- cbind(train.input, train.output)
colnames(train.data) <- c("Input","Output")
head(train.data)
net.sqrt <- neuralnet(Output~Input,train.data, hidden=10, threshold=0.01)
print(net.sqrt)
plot(net.sqrt)
test.data <- as.data.frame((1:10)^2)
colnames(test.data) <- c("Input")
test.out <- compute(net.sqrt, test.data)
ls(test.out)
print(test.out$net.result)
test.out$neurons
net2.sqrt <- neuralnet(Output~Input,train.data, hidden=c(10,8), threshold=0.01)
plot(net2.sqrt)
test2.out <- compute(net2.sqrt, test.data)
print(test2.out$net.result)
# caret
# 모수 조율 : 5-fold cross validation 을 5번 반복하여 가장 좋은 후보의 모수를 찾는 방법
fitControl <- trainControl(method = "repeatedcv", number = 5, repeats = 5)
model_caret <- train(Output~Input, data=train.data, method="neuralnet", trControl = fitControl, tuneGrid = data.frame(layer1 = 1:2, layer2 = 0, layer3 = 0), preProc=c("center","scale"))
plot(model_caret)
print(model_caret)
test_pred <- predict(model_caret, test.data)
test_pred