library(neuralnet)
## Warning: package 'neuralnet' was built under R version 3.4.2
library(readr)
library(caret)
## Warning: package 'caret' was built under R version 3.4.2
## Loading required package: lattice
## Loading required package: ggplot2
fulldata <- read_csv("D:/PG Business Analytics/DM/Group Assignment/PL_XSELL.csv")
## Parsed with column specification:
## cols(
##   .default = col_integer(),
##   CUST_ID = col_character(),
##   GENDER = col_character(),
##   BALANCE = col_double(),
##   OCCUPATION = col_character(),
##   AGE_BKT = col_character(),
##   ACC_TYPE = col_character(),
##   ACC_OP_DATE = col_character(),
##   AMT_NET_DR = col_double(),
##   AMT_L_DR = col_double(),
##   AVG_AMT_PER_ATM_TXN = col_double(),
##   AVG_AMT_PER_CSH_WDL_TXN = col_double(),
##   AVG_AMT_PER_CHQ_TXN = col_double(),
##   AVG_AMT_PER_NET_TXN = col_double(),
##   AVG_AMT_PER_MOB_TXN = col_double(),
##   random = col_double()
## )
## See spec(...) for full column specifications.
head(fulldata)
## # A tibble: 6 x 40
##   CUST_ID TARGET   AGE GENDER    BALANCE OCCUPATION AGE_BKT   SCR
##     <chr>  <int> <int>  <chr>      <dbl>      <chr>   <chr> <int>
## 1   C7927      0    27      M    3383.75   SELF-EMP   26-30   776
## 2   C6877      0    47      M  287489.04        SAL   46-50   324
## 3  C19922      0    40      M   18216.88   SELF-EMP   36-40   603
## 4   C8183      0    53      M   71720.48        SAL     >50   196
## 5  C12123      0    36      M 1671622.89       PROF   36-40   167
## 6    C257      0    42      F  521685.69       PROF   41-45   493
## # ... with 32 more variables: HOLDING_PERIOD <int>, ACC_TYPE <chr>,
## #   ACC_OP_DATE <chr>, LEN_OF_RLTN_IN_MNTH <int>, NO_OF_L_CR_TXNS <int>,
## #   NO_OF_L_DR_TXNS <int>, TOT_NO_OF_L_TXNS <int>,
## #   NO_OF_BR_CSH_WDL_DR_TXNS <int>, NO_OF_ATM_DR_TXNS <int>,
## #   NO_OF_NET_DR_TXNS <int>, NO_OF_MOB_DR_TXNS <int>,
## #   NO_OF_CHQ_DR_TXNS <int>, FLG_HAS_CC <int>, AMT_ATM_DR <int>,
## #   AMT_BR_CSH_WDL_DR <int>, AMT_CHQ_DR <int>, AMT_NET_DR <dbl>,
## #   AMT_MOB_DR <int>, AMT_L_DR <dbl>, FLG_HAS_ANY_CHGS <int>,
## #   AMT_OTH_BK_ATM_USG_CHGS <int>, AMT_MIN_BAL_NMC_CHGS <int>,
## #   NO_OF_IW_CHQ_BNC_TXNS <int>, NO_OF_OW_CHQ_BNC_TXNS <int>,
## #   AVG_AMT_PER_ATM_TXN <dbl>, AVG_AMT_PER_CSH_WDL_TXN <dbl>,
## #   AVG_AMT_PER_CHQ_TXN <dbl>, AVG_AMT_PER_NET_TXN <dbl>,
## #   AVG_AMT_PER_MOB_TXN <dbl>, FLG_HAS_NOMINEE <int>,
## #   FLG_HAS_OLD_LOAN <int>, random <dbl>
d1<-fulldata[,-c(1,4,6,7,10,11)]
summary(d1)
##      TARGET            AGE           BALANCE             SCR       
##  Min.   :0.0000   Min.   :21.00   Min.   :      0   Min.   :100.0  
##  1st Qu.:0.0000   1st Qu.:30.00   1st Qu.:  64754   1st Qu.:227.0  
##  Median :0.0000   Median :38.00   Median : 231676   Median :364.0  
##  Mean   :0.1256   Mean   :38.42   Mean   : 511362   Mean   :440.2  
##  3rd Qu.:0.0000   3rd Qu.:46.00   3rd Qu.: 653877   3rd Qu.:644.0  
##  Max.   :1.0000   Max.   :55.00   Max.   :8360431   Max.   :999.0  
##  HOLDING_PERIOD  LEN_OF_RLTN_IN_MNTH NO_OF_L_CR_TXNS NO_OF_L_DR_TXNS 
##  Min.   : 1.00   Min.   : 29.0       Min.   : 0.00   Min.   : 0.000  
##  1st Qu.: 7.00   1st Qu.: 79.0       1st Qu.: 6.00   1st Qu.: 2.000  
##  Median :15.00   Median :125.0       Median :10.00   Median : 5.000  
##  Mean   :14.96   Mean   :125.2       Mean   :12.35   Mean   : 6.634  
##  3rd Qu.:22.00   3rd Qu.:172.0       3rd Qu.:14.00   3rd Qu.: 7.000  
##  Max.   :31.00   Max.   :221.0       Max.   :75.00   Max.   :74.000  
##  TOT_NO_OF_L_TXNS NO_OF_BR_CSH_WDL_DR_TXNS NO_OF_ATM_DR_TXNS
##  Min.   :  0.00   Min.   : 0.000           Min.   : 0.000   
##  1st Qu.:  9.00   1st Qu.: 1.000           1st Qu.: 0.000   
##  Median : 14.00   Median : 1.000           Median : 1.000   
##  Mean   : 18.98   Mean   : 1.883           Mean   : 1.029   
##  3rd Qu.: 21.00   3rd Qu.: 2.000           3rd Qu.: 1.000   
##  Max.   :149.00   Max.   :15.000           Max.   :25.000   
##  NO_OF_NET_DR_TXNS NO_OF_MOB_DR_TXNS NO_OF_CHQ_DR_TXNS   FLG_HAS_CC    
##  Min.   : 0.000    Min.   : 0.0000   Min.   : 0.000    Min.   :0.0000  
##  1st Qu.: 0.000    1st Qu.: 0.0000   1st Qu.: 0.000    1st Qu.:0.0000  
##  Median : 0.000    Median : 0.0000   Median : 2.000    Median :0.0000  
##  Mean   : 1.172    Mean   : 0.4118   Mean   : 2.138    Mean   :0.3054  
##  3rd Qu.: 1.000    3rd Qu.: 0.0000   3rd Qu.: 4.000    3rd Qu.:1.0000  
##  Max.   :22.000    Max.   :25.0000   Max.   :15.000    Max.   :1.0000  
##    AMT_ATM_DR     AMT_BR_CSH_WDL_DR   AMT_CHQ_DR        AMT_NET_DR    
##  Min.   :     0   Min.   :     0    Min.   :      0   Min.   :     0  
##  1st Qu.:     0   1st Qu.:  2990    1st Qu.:      0   1st Qu.:     0  
##  Median :  6900   Median :340150    Median :  23840   Median :     0  
##  Mean   : 10990   Mean   :378475    Mean   : 124520   Mean   :237308  
##  3rd Qu.: 15800   3rd Qu.:674675    3rd Qu.:  72470   3rd Qu.:473971  
##  Max.   :199300   Max.   :999930    Max.   :4928640   Max.   :999854  
##    AMT_MOB_DR        AMT_L_DR       FLG_HAS_ANY_CHGS
##  Min.   :     0   Min.   :      0   Min.   :0.0000  
##  1st Qu.:     0   1st Qu.: 237936   1st Qu.:0.0000  
##  Median :     0   Median : 695115   Median :0.0000  
##  Mean   : 22425   Mean   : 773717   Mean   :0.1106  
##  3rd Qu.:     0   3rd Qu.:1078927   3rd Qu.:0.0000  
##  Max.   :199667   Max.   :6514921   Max.   :1.0000  
##  AMT_OTH_BK_ATM_USG_CHGS AMT_MIN_BAL_NMC_CHGS NO_OF_IW_CHQ_BNC_TXNS
##  Min.   :  0.000         Min.   :  0.000      Min.   :0.00000      
##  1st Qu.:  0.000         1st Qu.:  0.000      1st Qu.:0.00000      
##  Median :  0.000         Median :  0.000      Median :0.00000      
##  Mean   :  1.099         Mean   :  1.292      Mean   :0.04275      
##  3rd Qu.:  0.000         3rd Qu.:  0.000      3rd Qu.:0.00000      
##  Max.   :250.000         Max.   :170.000      Max.   :2.00000      
##  NO_OF_OW_CHQ_BNC_TXNS AVG_AMT_PER_ATM_TXN AVG_AMT_PER_CSH_WDL_TXN
##  Min.   :0.0000        Min.   :    0       Min.   :     0         
##  1st Qu.:0.0000        1st Qu.:    0       1st Qu.:  1266         
##  Median :0.0000        Median : 6000       Median :147095         
##  Mean   :0.0444        Mean   : 7409       Mean   :242237         
##  3rd Qu.:0.0000        3rd Qu.:13500       3rd Qu.:385000         
##  Max.   :2.0000        Max.   :25000       Max.   :999640         
##  AVG_AMT_PER_CHQ_TXN AVG_AMT_PER_NET_TXN AVG_AMT_PER_MOB_TXN
##  Min.   :     0      Min.   :     0      Min.   :     0     
##  1st Qu.:     0      1st Qu.:     0      1st Qu.:     0     
##  Median :  8645      Median :     0      Median :     0     
##  Mean   : 25093      Mean   :179059      Mean   : 20304     
##  3rd Qu.: 28605      3rd Qu.:257699      3rd Qu.:     0     
##  Max.   :537842      Max.   :999854      Max.   :199667     
##  FLG_HAS_NOMINEE  FLG_HAS_OLD_LOAN     random         
##  Min.   :0.0000   Min.   :0.0000   Min.   :0.0000114  
##  1st Qu.:1.0000   1st Qu.:0.0000   1st Qu.:0.2481866  
##  Median :1.0000   Median :0.0000   Median :0.5061214  
##  Mean   :0.9012   Mean   :0.4929   Mean   :0.5019330  
##  3rd Qu.:1.0000   3rd Qu.:1.0000   3rd Qu.:0.7535712  
##  Max.   :1.0000   Max.   :1.0000   Max.   :0.9999471
boxplot(d1,horizontal = T)

d1[,2:34]<-scale(d1[,2:34])
summary(d1)
##      TARGET            AGE              BALANCE             SCR         
##  Min.   :0.0000   Min.   :-1.81856   Min.   :-0.7067   Min.   :-1.3612  
##  1st Qu.:0.0000   1st Qu.:-0.87891   1st Qu.:-0.6172   1st Qu.:-0.8530  
##  Median :0.0000   Median :-0.04366   Median :-0.3865   Median :-0.3047  
##  Mean   :0.1256   Mean   : 0.00000   Mean   : 0.0000   Mean   : 0.0000  
##  3rd Qu.:0.0000   3rd Qu.: 0.79159   3rd Qu.: 0.1970   3rd Qu.: 0.8158  
##  Max.   :1.0000   Max.   : 1.73125   Max.   :10.8474   Max.   : 2.2364  
##  HOLDING_PERIOD      LEN_OF_RLTN_IN_MNTH NO_OF_L_CR_TXNS  
##  Min.   :-1.614745   Min.   :-1.751272   Min.   :-1.0161  
##  1st Qu.:-0.920512   1st Qu.:-0.841419   1st Qu.:-0.5224  
##  Median : 0.005131   Median :-0.004355   Median :-0.1932  
##  Mean   : 0.000000   Mean   : 0.000000   Mean   : 0.0000  
##  3rd Qu.: 0.815070   3rd Qu.: 0.850907   3rd Qu.: 0.1359  
##  Max.   : 1.856419   Max.   : 1.742563   Max.   : 5.1557  
##  NO_OF_L_DR_TXNS    TOT_NO_OF_L_TXNS  NO_OF_BR_CSH_WDL_DR_TXNS
##  Min.   :-0.86423   Min.   :-1.0685   Min.   :-0.83186        
##  1st Qu.:-0.60367   1st Qu.:-0.5617   1st Qu.:-0.39009        
##  Median :-0.21284   Median :-0.2802   Median :-0.39009        
##  Mean   : 0.00000   Mean   : 0.0000   Mean   : 0.00000        
##  3rd Qu.: 0.04772   3rd Qu.: 0.1140   3rd Qu.: 0.05169        
##  Max.   : 8.77642   Max.   : 7.3215   Max.   : 5.79476        
##  NO_OF_ATM_DR_TXNS  NO_OF_NET_DR_TXNS  NO_OF_MOB_DR_TXNS
##  Min.   :-0.68723   Min.   :-0.48766   Min.   :-0.2049  
##  1st Qu.:-0.68723   1st Qu.:-0.48766   1st Qu.:-0.2049  
##  Median :-0.01934   Median :-0.48766   Median :-0.2049  
##  Mean   : 0.00000   Mean   : 0.00000   Mean   : 0.0000  
##  3rd Qu.:-0.01934   3rd Qu.:-0.07173   3rd Qu.:-0.2049  
##  Max.   :16.01017   Max.   : 8.66282   Max.   :12.2338  
##  NO_OF_CHQ_DR_TXNS    FLG_HAS_CC        AMT_ATM_DR      AMT_BR_CSH_WDL_DR
##  Min.   :-0.89629   Min.   :-0.6631   Min.   :-0.7181   Min.   :-1.1420  
##  1st Qu.:-0.89629   1st Qu.:-0.6631   1st Qu.:-0.7181   1st Qu.:-1.1330  
##  Median :-0.05768   Median :-0.6631   Median :-0.2672   Median :-0.1156  
##  Mean   : 0.00000   Mean   : 0.0000   Mean   : 0.0000   Mean   : 0.0000  
##  3rd Qu.: 0.78094   3rd Qu.: 1.5081   3rd Qu.: 0.3143   3rd Qu.: 0.8937  
##  Max.   : 5.39330   Max.   : 1.5081   Max.   :12.3039   Max.   : 1.8751  
##    AMT_CHQ_DR        AMT_NET_DR        AMT_MOB_DR         AMT_L_DR      
##  Min.   :-0.2834   Min.   :-0.7438   Min.   :-0.4532   Min.   :-1.0857  
##  1st Qu.:-0.2834   1st Qu.:-0.7438   1st Qu.:-0.4532   1st Qu.:-0.7518  
##  Median :-0.2291   Median :-0.7438   Median :-0.4532   Median :-0.1103  
##  Mean   : 0.0000   Mean   : 0.0000   Mean   : 0.0000   Mean   : 0.0000  
##  3rd Qu.:-0.1185   3rd Qu.: 0.7417   3rd Qu.:-0.4532   3rd Qu.: 0.4283  
##  Max.   :10.9339   Max.   : 2.3899   Max.   : 3.5818   Max.   : 8.0560  
##  FLG_HAS_ANY_CHGS  AMT_OTH_BK_ATM_USG_CHGS AMT_MIN_BAL_NMC_CHGS
##  Min.   :-0.3526   Min.   :-0.07733        Min.   :-0.08751    
##  1st Qu.:-0.3526   1st Qu.:-0.07733        1st Qu.:-0.08751    
##  Median :-0.3526   Median :-0.07733        Median :-0.08751    
##  Mean   : 0.0000   Mean   : 0.00000        Mean   : 0.00000    
##  3rd Qu.:-0.3526   3rd Qu.:-0.07733        3rd Qu.:-0.08751    
##  Max.   : 2.8357   Max.   :17.50451        Max.   :11.42683    
##  NO_OF_IW_CHQ_BNC_TXNS NO_OF_OW_CHQ_BNC_TXNS AVG_AMT_PER_ATM_TXN
##  Min.   :-0.2106       Min.   :-0.2153       Min.   :-1.0276    
##  1st Qu.:-0.2106       1st Qu.:-0.2153       1st Qu.:-1.0276    
##  Median :-0.2106       Median :-0.2153       Median :-0.1954    
##  Mean   : 0.0000       Mean   : 0.0000       Mean   : 0.0000    
##  3rd Qu.:-0.2106       3rd Qu.:-0.2153       3rd Qu.: 0.8448    
##  Max.   : 9.6398       Max.   : 9.4826       Max.   : 2.4398    
##  AVG_AMT_PER_CSH_WDL_TXN AVG_AMT_PER_CHQ_TXN AVG_AMT_PER_NET_TXN
##  Min.   :-0.8977         Min.   :-0.50808    Min.   :-0.6356    
##  1st Qu.:-0.8930         1st Qu.:-0.50808    1st Qu.:-0.6356    
##  Median :-0.3526         Median :-0.33303    Median :-0.6356    
##  Mean   : 0.0000         Mean   : 0.00000    Mean   : 0.0000    
##  3rd Qu.: 0.5291         3rd Qu.: 0.07112    3rd Qu.: 0.2792    
##  Max.   : 2.8069         Max.   :10.38224    Max.   : 2.9136    
##  AVG_AMT_PER_MOB_TXN FLG_HAS_NOMINEE   FLG_HAS_OLD_LOAN     random       
##  Min.   :-0.4369     Min.   :-3.0193   Min.   :-0.986   Min.   :-1.7262  
##  1st Qu.:-0.4369     1st Qu.: 0.3312   1st Qu.:-0.986   1st Qu.:-0.8727  
##  Median :-0.4369     Median : 0.3312   Median :-0.986   Median : 0.0144  
##  Mean   : 0.0000     Mean   : 0.0000   Mean   : 0.000   Mean   : 0.0000  
##  3rd Qu.:-0.4369     3rd Qu.: 0.3312   3rd Qu.: 1.014   3rd Qu.: 0.8654  
##  Max.   : 3.8595     Max.   : 0.3312   Max.   : 1.014   Max.   : 1.7128
boxplot(d1,horizontal = T)

trainInd<-createDataPartition(d1$TARGET,p=.9,list=FALSE)

train<-d1[trainInd,]
test<-d1[-trainInd,]
set.seed(10)
nn1<-neuralnet(TARGET ~ AGE+BALANCE+SCR+HOLDING_PERIOD
               +LEN_OF_RLTN_IN_MNTH+NO_OF_L_CR_TXNS+NO_OF_L_DR_TXNS+TOT_NO_OF_L_TXNS+NO_OF_BR_CSH_WDL_DR_TXNS
               +NO_OF_ATM_DR_TXNS+NO_OF_NET_DR_TXNS+NO_OF_MOB_DR_TXNS+NO_OF_CHQ_DR_TXNS+FLG_HAS_CC
               +AMT_ATM_DR+AMT_BR_CSH_WDL_DR+AMT_CHQ_DR+AMT_NET_DR+AMT_MOB_DR
               +AMT_L_DR+FLG_HAS_ANY_CHGS+AMT_OTH_BK_ATM_USG_CHGS+AMT_MIN_BAL_NMC_CHGS+NO_OF_IW_CHQ_BNC_TXNS
               +NO_OF_OW_CHQ_BNC_TXNS+AVG_AMT_PER_ATM_TXN+AVG_AMT_PER_CSH_WDL_TXN+AVG_AMT_PER_CHQ_TXN+AVG_AMT_PER_NET_TXN
               +AVG_AMT_PER_MOB_TXN+FLG_HAS_NOMINEE+FLG_HAS_OLD_LOAN+random
               ,data=train,
               hidden=c(6,2),threshold=.5,stepmax=5000,linear.output=TRUE,lifesign = "full",lifesign.step = 500)
## hidden: 6, 2    thresh: 0.5    rep: 1/1    steps:     500    min thresh: 0.6357242815
##                                                      1000    min thresh: 0.5637153642
##                                                      1500    min thresh: 0.5067056094
##                                                      1698    error: 811.82339    time: 29.1 secs
nn2<-neuralnet(TARGET ~AGE+BALANCE+SCR+HOLDING_PERIOD
               +LEN_OF_RLTN_IN_MNTH+NO_OF_L_CR_TXNS+NO_OF_L_DR_TXNS+TOT_NO_OF_L_TXNS+NO_OF_BR_CSH_WDL_DR_TXNS
               +NO_OF_ATM_DR_TXNS+NO_OF_NET_DR_TXNS+NO_OF_MOB_DR_TXNS+NO_OF_CHQ_DR_TXNS+FLG_HAS_CC
               +AMT_ATM_DR+AMT_BR_CSH_WDL_DR+AMT_CHQ_DR+AMT_NET_DR+AMT_MOB_DR
               +AMT_L_DR+FLG_HAS_ANY_CHGS+AMT_OTH_BK_ATM_USG_CHGS+AMT_MIN_BAL_NMC_CHGS+NO_OF_IW_CHQ_BNC_TXNS
               +NO_OF_OW_CHQ_BNC_TXNS+AVG_AMT_PER_ATM_TXN+AVG_AMT_PER_CSH_WDL_TXN+AVG_AMT_PER_CHQ_TXN+AVG_AMT_PER_NET_TXN
               +AVG_AMT_PER_MOB_TXN+FLG_HAS_NOMINEE+FLG_HAS_OLD_LOAN+random
                 ,data=train,
               hidden=c(6,2),threshold=.1,stepmax=10000,linear.output=TRUE,lifesign = "full",lifesign.step = 1000
               #,learningrate.factor = list(minus = 5, plus = 5)
               ,startweights = nn1$weights)
## hidden: 6, 2    thresh: 0.1    rep: 1/1    steps:    1000    min thresh: 0.2682085376
##                                                      2000    min thresh: 0.2554558956
##                                                      3000    min thresh: 0.2554558956
##                                                      4000    min thresh: 0.2553126429
##                                                      5000    min thresh: 0.1926164641
##                                                      6000    min thresh: 0.1305383382
##                                                      7000    min thresh: 0.1046910599
##                                                      7848    error: 801.18515    time: 2.21 mins
op<-compute(nn2,test[-1])
res<-floor(op$net.result+.5)
exp=test$TARGET
table(actual=exp,result=res)
##       result
## actual    0    1
##      0 1743   14
##      1  218   25