Neural Network

Jesy·2021년 7월 16일
0

R로하는 Machine Learning

목록 보기
10/11
iris <- data.frame(iris, stringsAsFactors = TRUE)
set.seed(123)
ind <-sample(3, nrow(iris), replace = TRUE, prob=c(0.6, 0.2, 0.2))
iris_train <- iris[ind==1, ]
iris_valid <- iris[ind==2, ]
iris_test <- iris[ind==3, ]

R 기본 데이터인 ‘Iris’ 데이터를 활용하여 Neural Network 모형을 사용하기에 앞서 데이터의 기본적인 구조를 탐색한다.
Target Variable은 Species로 설정하고 training, validation, test데이터를 6 : 2 : 2로 Random sampling하여 나눈다.

library(neuralnet)

# hidden = 1, node = 1 neural network
nn.iris1 = neuralnet(formula = Species ~ ., data = iris_train)
plot(nn.iris1)
model_results1 = compute(nn.iris1, iris_train[1:5])
str(model_results1)
predicted_Species1 = model_results1$net.result

기본 default 모델로 분석한 결과 14.745974의 Error rate가 나온다.

#parameter tuning : hidden = 3
nn.iris2 = neuralnet(formula = Species ~., data=iris_valid, hidden = 3)
plot(nn.iris2)
model_results2 = compute(nn.iris2, iris_valid[1:5])
str(model_results2)
predicted_Species2 = model_results2$net.result

Hidden을 3으로 조정하였을 때, 0.02의 error rate가 나온다.

#parameter tuning : hidden = 5
nn.iris3 = neuralnet(formula = Species ~., data=iris_valid, hidden = 5)
plot(nn.iris3)
model_results3 = compute(nn.iris3, iris_valid[1:5])
str(model_results3)
predicted_Species3 = model_results3$net.result

Hidden을 5로 조정하였을 때 3보다 더 적은 error rate인 0.01을 가짐을 확인 할 수 있다.

#parameter tuning : hidden = 7
nn.iris4 = neuralnet(formula = Species ~., data=iris_valid, hidden = 7)
plot(nn.iris4)
model_results4 = compute(nn.iris4, iris_valid[1:5])
str(model_results4)
predicted_Species4 = model_results3$net.result


Hidden을 7로 수정하였을 때 error rate가 0.02로 hidden이 5일 때 보다 더 커짐을 확인 할 수 있다.

가장 error rate가 적게 나온 hidden = 5 를 채택하여 test를 진행한 결과,

#Accuracy
nn.iris = neuralnet(formula = Species ~., data=iris_test, hidden = 5)
plot(nn.iris)
model_results = compute(nn.iris3, iris_test[1:5])
str(model_results)
predicted_Species = model_results$net.result

0.09의 error rate를 보이는 것을 확인 할 수 있다. 따라서 Accuracy는 0.91이 나온다.

profile
잡학꾸러기

0개의 댓글