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