DNN (Deep Neural Network)
neuralnet, nnet, deepnet
Neural Network
library(neuralnet) ### Loading Data --- --- --- --- --- --- --- --- --- --- --- --- --- --- ---- # creating train dataset ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ TKS <- c(20,10,30,20,80,30) #technical Knowledge Score -feature CSS <- c(90,20,40,50,50,80) #Communication Knowledge Score -feature Placed <- c( 1, 0, 0, 0, 1, 1) #Student Placed -binary label trnData <- data.frame(TKS,CSS,Placed) # creating test dataset ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ TKS <- c(30,40,85) CSS <- c(85,50,40) tstData <- data.frame(TKS,CSS)
# Network --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- ---- model <- neuralnet( Placed ~ TKS+CSS, data=trnData, hidden=4, act.fct ="logistic", linear.output=F) model %>% plot()

## Prediction using neural network -- --- --- --- --- --- --- --- --- --- ---- pred <- compute(model, tstData) pred.prob <- pred$net.result pred <- ifelse(pred.prob>0.5, 1, 0) pred
[,1] [1,] 1 [2,] 0 [3,] 1
classification
# Binary classification nn <- neuralnet(formula= (Species=="setosa")~ Petal.Length + Petal.Width, data=iris, linear.output=FALSE) # Multiclass classification nn <- neuralnet(formula= Species ~ Petal.Length + Petal.Width, data=iris, linear.output=FALSE) # Custom activation function softplus <- function(x) log(1 + exp(x)) nn <- neuralnet(formula= (Species=="setosa")~ Petal.Length + Petal.Width, data=iris, linear.output=FALSE, hidden = c(3, 2), act.fct = softplus) print(nn) plot(nn)



library(neuralnet)
library(ggpmisc)
set.seed(2016)
# Load Data ---------------------------------------------------------------
attribute <- as.data.frame(sample(seq(-2,2, length=50), 50, replace=F), ncol=1)
response <- attribute^2
d0 <- cbind(attribute, response)
colnames(d0) <- c("attribute", "response")
d0 %>% head()
# ploting for TURE Value --------------------------------------------------
d0 %>% ggplot(aes(x=attribute, y=response)) + geom_point()
# Neuralnet regression ----------------------------------------------------
fit <- neuralnet(response~attribute, data=d0, hidden=c(3,3), threshold =0.01)
fit %>% summary
fit$net.result
# Predict ----------------------------------------------------------------
result <- cbind(d0, fit$net.result) %>% as.data.table()
colnames(result) <- c("attribute","response", "Pred")
result %>% ggplot(aes(x=attribute)) +
geom_point(aes(y=response)) + geom_point(aes(y=Pred), color="red")
result %>% ggplot(aes(x=response, y=Pred)) +
geom_point() + geom_smooth(method="lm", formula=y~x, se=F) +
stat_poly_eq(aes(label=..adj.rr.label..), formula=y~x, parse=T)
Resid <- result[, .(response-Pred)]
Resid %>% ggplot(aes(x=1:50, y=V1)) + geom_point()+
geom_smooth(method="lm", formula=y~x, se=F)
library('neuralnet')
library('Metrics') # for access model
library('ggpmisc')
### Load data ---------------------------------------------------------------
data("Boston", package="MASS")
dd <- Boston %>% data.table()
d1 <- scale(dd) %>% data.table() # x-mean/sd
keepcolumn <- c("crim","indus","nox","rm","age","dis","tax","ptratio","lstat","medv")
d2 <- d1[ , ..keepcolumn]
# Check NA
d2 %>% map_int( ~ sum(is.na(.)))
# Check Correlation
d2corr <- cor(d2)
d2melt <- melt(d2corr, varnames=c("x", "y"), value.name="Correlation")
d2melt <- d2melt[order(d2melt$Correlation), ]
d2melt %>% ggplot(aes(x=x, y=y)) + geom_tile(aes(fill=Correlation)) +
scale_fill_gradient2(
low="red", mid="white", high="steelblue",
guide=guide_colorbar(ticks=F, barheight=10),limits=c(-1, 1)) +
theme_minimal() + labs(x=NULL, y=NULL)
GGally::ggpairs(d2)
GGally::ggpairs(dd[ , ..keepcolumn])
### Model ---------------------------------------------------------------
set.seed(666)
train <- sample(x=1:dim(d2)[1], size=400, replace=F)
# fit <- neuralnet(formula= medv~crim+indus+nox+rm+age+dis+tax+ptratio+lstat,
# data= d2[train, ])
fit <- neuralnet(formula= medv~crim+indus+nox+rm+age+dis+tax+ptratio+lstat,
data= d2[train, ],
hidden=c(10,12,20), # No of Neurun for each Hidden layer
algorithm= "rprop+", # Resilient backpropagration with backtracking (instead of default 'backprop' with learningrate=0.01)
err.fct= "sse", # Error Function
act.fct= "logistic", # Activation Function
threshold= 0.1, # Activation Function threshold
linear.output= TRUE # Output layer neurun,
)
#pred <- compute(x=fit, covariate=d2[-train, 1:9])
pred <- predict(fit, newdata=d2[-train, 1:9])
### Assess Model ---------------------------------------------------------------
cor(d2[-train,][[10]] , pred)^2
#0.7458
mse(d2[-train,][[10]] , pred)
#0.2732
rmse(d2[-train,][[10]] , pred) # sqrt(mse)
#0.5227
RealvsPred <- cbind(d2[-train,][[10]] , pred) %>% data.table()
names(RealvsPred) <- c("real", "pred")
RealvsPred %>% ggplot(aes(x=real, y=pred)) + geom_point() +
geom_smooth(method="lm", formula=y~x, se=F) + stat_poly_eq(aes(label=..adj.rr.label..), formula=y~x, parse=T)

library(deepnet) xx <- d2[train, 1:9] %>% as.matrix() yy <- d2[train, 10] %>% as.matrix() fit <- nn.train(x=xx, y=yy, initW=NULL, initB=NULL, # initial weights, bias hidden=c(10,12,20), learningrate= 0.58, # for Backprop momentum=0.74, # 경사하강 업데이틍에서 과거 결사들에 대한 가중치 평균 learningrate_scale=1, # 학습률 activationfun="sigm", output="linear", numepochs=970, batchsize=60, hidden_dropout=0, visible_dropout=0 ) pred <- nn.predict(fit, x=d2[-train, 1:9])