library(tidyverse)
library(dplyr)
library(inspectdf)
library(rsample)Telemarketing adalah salah satu cara promosi yang masih dianggap efektif selain memasang iklan di media umum. Pengertian telemarketing yaitu memasarkan atau mensosialisasikan produk atau jasa melalui telepon. Biasanya, strategi pemasaran melalui telemarketing ini dipakai oleh beberapa perusahaan besar untuk menawarkan produknya. Menurut banyak ahli pemasaran, penawaran melalui telemarketing cenderung mudah diterima, karena sifatnya memang berbicara secara personal langsung kepada konsumen.
Bank merupakan salah satu lembaga yang menggunakan metode telmarketing untuk menjual product product yang ada di bank atau untuk menawarkan jasa. Bank sebagai lembaga financing sangat memperhatikan tingkat baiknya reputasi dan branding yang dimiliki, dan salah satu hal buruk yang dilakukan telemarketing dapat mengganggu reputasi itu sendiri. Jadi perlu dicari target mana yang akan membeli atau tudak membeli produk atau jasa yang akan ditawarkan oleh bank menggunakan metode telemarketing.
Disini kita akan read data telemarketing yang kita dapatkan dari UCI Machine Learning Repository, data tersebut terkait dengan kampanye pemasaran dari lembaga perbankan Portugis. Dan disini kita akan menyimpan dataset kedalam bank.
bank <- read.csv("data_input/bank.csv", sep=";")
head(bank)glimpse(bank)## Rows: 4,521
## Columns: 17
## $ age <int> 30, 33, 35, 30, 59, 35, 36, 39, 41, 43, 39, 43, 36, 20, 3...
## $ job <chr> "unemployed", "services", "management", "management", "bl...
## $ marital <chr> "married", "married", "single", "married", "married", "si...
## $ education <chr> "primary", "secondary", "tertiary", "tertiary", "secondar...
## $ default <chr> "no", "no", "no", "no", "no", "no", "no", "no", "no", "no...
## $ balance <int> 1787, 4789, 1350, 1476, 0, 747, 307, 147, 221, -88, 9374,...
## $ housing <chr> "no", "yes", "yes", "yes", "yes", "no", "yes", "yes", "ye...
## $ loan <chr> "no", "yes", "no", "yes", "no", "no", "no", "no", "no", "...
## $ contact <chr> "cellular", "cellular", "cellular", "unknown", "unknown",...
## $ day <int> 19, 11, 16, 3, 5, 23, 14, 6, 14, 17, 20, 17, 13, 30, 29, ...
## $ month <chr> "oct", "may", "apr", "jun", "may", "feb", "may", "may", "...
## $ duration <int> 79, 220, 185, 199, 226, 141, 341, 151, 57, 313, 273, 113,...
## $ campaign <int> 1, 1, 1, 4, 1, 2, 1, 2, 2, 1, 1, 2, 2, 1, 1, 2, 5, 1, 1, ...
## $ pdays <int> -1, 339, 330, -1, -1, 176, 330, -1, -1, 147, -1, -1, -1, ...
## $ previous <int> 0, 4, 1, 0, 0, 3, 2, 0, 0, 2, 0, 0, 0, 0, 1, 0, 0, 2, 0, ...
## $ poutcome <chr> "unknown", "failure", "failure", "unknown", "unknown", "f...
## $ y <chr> "no", "no", "no", "no", "no", "no", "no", "no", "no", "no...
dim(bank)## [1] 4521 17
names(bank)## [1] "age" "job" "marital" "education" "default" "balance"
## [7] "housing" "loan" "contact" "day" "month" "duration"
## [13] "campaign" "pdays" "previous" "poutcome" "y"
Pertama kita akan mengecek apakah didalam dataset yang kita miliki terdapat missing values.
colSums(is.na(bank))## age job marital education default balance housing loan
## 0 0 0 0 0 0 0 0
## contact day month duration campaign pdays previous poutcome
## 0 0 0 0 0 0 0 0
## y
## 0
Data bank tidak memiliki missing values, jadi kita akan langsung merubah beberapa kolom varibel ke tipe data yang seharusnya. Dan kita akan mengganti kolom target kita dari y menjadi subscribe.
str(bank)## 'data.frame': 4521 obs. of 17 variables:
## $ age : int 30 33 35 30 59 35 36 39 41 43 ...
## $ job : chr "unemployed" "services" "management" "management" ...
## $ marital : chr "married" "married" "single" "married" ...
## $ education: chr "primary" "secondary" "tertiary" "tertiary" ...
## $ default : chr "no" "no" "no" "no" ...
## $ balance : int 1787 4789 1350 1476 0 747 307 147 221 -88 ...
## $ housing : chr "no" "yes" "yes" "yes" ...
## $ loan : chr "no" "yes" "no" "yes" ...
## $ contact : chr "cellular" "cellular" "cellular" "unknown" ...
## $ day : int 19 11 16 3 5 23 14 6 14 17 ...
## $ month : chr "oct" "may" "apr" "jun" ...
## $ duration : int 79 220 185 199 226 141 341 151 57 313 ...
## $ campaign : int 1 1 1 4 1 2 1 2 2 1 ...
## $ pdays : int -1 339 330 -1 -1 176 330 -1 -1 147 ...
## $ previous : int 0 4 1 0 0 3 2 0 0 2 ...
## $ poutcome : chr "unknown" "failure" "failure" "unknown" ...
## $ y : chr "no" "no" "no" "no" ...
bank <- bank %>%
mutate(job = as.factor(job)) %>%
mutate(marital = as.factor(marital)) %>%
mutate(education = as.factor(education)) %>%
mutate(default = as.factor(default)) %>%
mutate(housing = as.factor(housing)) %>%
mutate(month = as.factor(month)) %>%
mutate(loan = as.factor(loan)) %>%
mutate(contact = as.factor(contact)) %>%
mutate(poutcome = as.factor(poutcome)) %>%
mutate(subscribe = as.factor(y)) %>%
select(-c(y))summary(bank)## age job marital education default
## Min. :19.00 management :969 divorced: 528 primary : 678 no :4445
## 1st Qu.:33.00 blue-collar:946 married :2797 secondary:2306 yes: 76
## Median :39.00 technician :768 single :1196 tertiary :1350
## Mean :41.17 admin. :478 unknown : 187
## 3rd Qu.:49.00 services :417
## Max. :87.00 retired :230
## (Other) :713
## balance housing loan contact day
## Min. :-3313 no :1962 no :3830 cellular :2896 Min. : 1.00
## 1st Qu.: 69 yes:2559 yes: 691 telephone: 301 1st Qu.: 9.00
## Median : 444 unknown :1324 Median :16.00
## Mean : 1423 Mean :15.92
## 3rd Qu.: 1480 3rd Qu.:21.00
## Max. :71188 Max. :31.00
##
## month duration campaign pdays
## may :1398 Min. : 4 Min. : 1.000 Min. : -1.00
## jul : 706 1st Qu.: 104 1st Qu.: 1.000 1st Qu.: -1.00
## aug : 633 Median : 185 Median : 2.000 Median : -1.00
## jun : 531 Mean : 264 Mean : 2.794 Mean : 39.77
## nov : 389 3rd Qu.: 329 3rd Qu.: 3.000 3rd Qu.: -1.00
## apr : 293 Max. :3025 Max. :50.000 Max. :871.00
## (Other): 571
## previous poutcome subscribe
## Min. : 0.0000 failure: 490 no :4000
## 1st Qu.: 0.0000 other : 197 yes: 521
## Median : 0.0000 success: 129
## Mean : 0.5426 unknown:3705
## 3rd Qu.: 0.0000
## Max. :25.0000
##
Age = Umur penumpang, dapat dilihat umur costumer bank, dapat dilihat costumer paling mude yaitu umur 19 dan paling tua 87 job = Jenis pekerjaan calon costumer marital = apakah customer sudah menikah, single, atau sudah bercerai education = Tipe pekerjaan calon customer default = memiliki kredit secara default balance = jumlah balance yang ada dalam rekening customer housing = apakah costumer memiliki pinjaman rumah loan = punya pinjaman pribadi contact = Tipe komunikasi yang dilakukan oleh pihak telemerketing duration = lamanya kontak yang dilakukan oleh pihak telemarketing ke costumer campaign = Jumlah berapa kali pihak telemarketing menghubungi costumer pdays = jumlah hari dari tereakhir pihak telemerkating menghubingi costumer previous = Jumlah kontak yang yang dilakukan sebelum campaign yang sedang berjalan poutcome = Hasil dari campaign sebelumnya apakah berhasil atau tidak subscribe = apakah costumer telah berhasil berlenganan deposit berjangka
Setelah merubah variabel penting kedalam tipe data yang benar. Kita akan menampilkan beberapa variabel numeric dengan histogram untuk mendapatkan distribusinya.
numericCols <- unlist(lapply(bank, is.numeric))
show_plot(inspect_num(bank[,numericCols]))bank %>%
group_by(housing, subscribe) %>%
summarise(freq = n())## `summarise()` regrouping output by 'housing' (override with `.groups` argument)
Dapat dilihat orang yang belum memiliki rumah justru lebih banyak berlanganan deposit berjangka
bank %>%
filter(subscribe != "no") %>%
group_by(job, subscribe) %>%
summarise(freq = n()) %>%
arrange(desc(freq))bank %>%
filter(subscribe != "no") %>%
group_by(campaign, subscribe) %>%
summarise(freq = n()) %>%
arrange(desc(freq))Didalam data ini orang orang yang memilki pinjaman rumah lebih tertarik untuk berlanganan kedalam produk yang ditawarkan oleh bank, dan dapat dilihat semakin dikit semakin banyak jumlah kontak yang dilakukan selama kampanya semakin dikit orang yang berlanganan berarti alangkah lebih baik jika pihak telemarketing tidak terlalu banyak melakukan kontak kepada satu client yang sama karena jika dapat meyakinkan client dalam satu kali kontak bank juga akan mendapatkan reputasi yang baik. Dapat kita lihat juga category pekerjaan management memiliki jumlah berlanganan atau subscribe-yes paling banyak dibandingkan tipe pekerjaan yang lain