Neural Network


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モデルを用いる前にデータの基本構造を探索する.
ターゲット変数はSpeciesに設定され、トレーニング、検証、テストデータは6:2:2でランダムにサンプリングされます.
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の誤り率を得た.
#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になります.
#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未満で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に変更すると、hiddenが5に変更した場合よりもエラー率が0.02と大きくなると判断できます.
エラー率が最小のhiddy=5を使用してテストします.
#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を表示するエラー率を確認できます.したがって、Accessionは0.91である.