Setiap bisnis bertujuan untuk mendapatkan pendapatan yang sustainable dalam jangka panjang. Hal ini didasarkan dengan cost untuk mendapatkan customer baru lebih mahal dibandingkan dengan mempertahankan customer yang sudtoh ada. Sehingga perusahaan merancang marketing program untuk meningkatkan loyalty dari customer contoh meningkatkan status customer dari first time subscriber menjadi loyal subscriber. Dalam menjalankan marketing campaign dimana retention campaign, mempertahankan existing customer, perlu untuk mengetahui churn rate dari customer yaitu berapa banyak customer tidak membeli / subscribe produk. Penyebab dari churn dari customer adalah ketidakpuasan customer terhadap produk yang digunakan. Pada project ini, saya menggunakan model yang terbaik dalam melakukan klasifikasi (Logistic regression, random forest dan decicion tree) dan survival analysis yang dapat menjawab permasalahan sebagai berikut :
Churn rate merupakan bagian yang digunakan dalam perhitungan CLTV (Customer Life Time Value) yang merupakan prediksi revenue yang akan didapatkan dari customer. Berikut adalah perhitungan dari CLTV :
Pada perhitungan diatas, dapat diketahui jika churn
rate makin besar akan menurunkan rata rata waktu penggunaan
produk dari customer (Average Lifespan of Customer)
sehingga akan menurunkan CLTV yang dimana bisnis akan berusaha untuk
mencapai CLTV yang lebih besar daripada Customer Acquisition
Cost (CAC) yaitu cost yang dikeluarkan untuk mendapatkan new
customer. churn rate juga merupakan indikator dari
loyalitas konsumen terhadap suatu produk, CLTV yang tinggi akan
menurunkan biaya untuk mendapatkan konsumen baru. Perusahaan berusaha
untuk mampu meningkatkan CLTV agar lebih besar dibandingkan dengan CAC
(Consumen Acquisition Cost.), dimana CLTV yang ideal minimal lebih besar
dari 1. churn rate timbul karena beberapa faktor
diantaranya kepuasaan konsumen terhadap produk yang berkurang, tidak ada
fitur baru yang ditawarkan, harga yang kurang bersaing. Dengan model ini
selain dapat memprediksi berapa churn rate juga dapat
memberikan informasi faktor- faktor yang berkontribusi besar
(Variable lmportance) terhadap churn rate
sehingga dapat menjadi bahan evaluasi pada produk dan strategi marketing
yang dilakukan oleh perusahaan
Output dari project ini adalah klasifikasi customer yang digolongkan customer yang diprediksi churn dan no_churn dan prediksi waktu (in month) customer menjadi churn customer
Project ini diharapkan dapat menghasilkan model yang akurat memprediksi churn rate sehingga dapat menjadi bahan evaluasi bagi divisi marketing untuk melakukan langkah- langkah untuk mengurangi churn rate dan selain model ini dapat menjelaskan faktor -faktor yang mempengaruhi churn rate, divisi marketing dapat melakukan mitigasi pada faktor tersebut sehingga churn rate dapat diturunkan sekaligus meningkatkan CLTV pada akhirnya.
Data yang digunakan dalam DCD ini merupakan data yang berasal dari perusahaan telekomunikasi (telco ). perusahaan tersebut membutuhkan model yang dapat membuat prediksi jumlah **CHURN CUSTOMER*. Berikut merupakan data description :
telco1 <- read.csv("WA_Fn-UseC_-Telco-Customer-Churn.csv")
Berikut adalah keterangan dari variabel yang ada dalam dataset :
Customer ID: Customer IDGender: Whether the customer is a male or a femaleSenior Citizen : Whether the customer is a senior
citizen or not (1, 0)Partner: Whether the customer has a partner or not
(Yes, No)Dependents: Whether the customer has dependents or not
(Yes, No)Tenure: Number of months the customer has stayed with
the companyPhone Service: Whether the customer has a phone service
or not (Yes, No)Multi ple Lines: Whether the customer has multiple
lines or not (Yes, No, No phone service)Internet Service Customer’s: internet service provider
(DSL, Fiber optic, No)Online Security: Whether the customer has online
security or not (Yes, No, No internet service)Online Backup: Whether the customer has online backup
or not (Yes, No, No internet service)Device Protection: Whether the customer has device
protection or not (Yes, No, No internet service)Tech Support: Whether the customer has tech support or
not (Yes, No, No internet service)Streaming TV: Whether the customer has streaming TV or
not (Yes, No, No internet service)Streaming Movies: Whether the customer has streaming
movies or not (Yes, No, No internet service)Contract: The contract term of the customer
(Month-to-month, One year, Two year)Paperless Billing: Whether the customer has paperless
billing or not (Yes, No)Payment Method: The customer’s payment method
(Electronic check, Mailed check, Bank transfer (automatic), Credit card
(automatic)) Monthly Charges: The amount charged to the
customer monthly Total Charges: The total amount
charged to the customer *Churn: Whether the customer
churned or not (Yes or No)Project ini juga menggunakan survival analysis dalam
memprediksi berapa lama customer menjadi churn dimana tidak
berlangganan sehingga perlu ditentukan event yaitu variabel
churn dan time yaitu tenure.Survival analyssis
menggunakan konsep dari right censoring yaitu customer yang tidak
mengalami churn karena dropout dari study atau masih
menjadi pelanggan ketika waktu penelitan berakhir.
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
summary(telco1)
## customerID gender SeniorCitizen Partner
## Length:7043 Length:7043 Min. :0.0000 Length:7043
## Class :character Class :character 1st Qu.:0.0000 Class :character
## Mode :character Mode :character Median :0.0000 Mode :character
## Mean :0.1621
## 3rd Qu.:0.0000
## Max. :1.0000
##
## Dependents tenure PhoneService MultipleLines
## Length:7043 Min. : 0.00 Length:7043 Length:7043
## Class :character 1st Qu.: 9.00 Class :character Class :character
## Mode :character Median :29.00 Mode :character Mode :character
## Mean :32.37
## 3rd Qu.:55.00
## Max. :72.00
##
## InternetService OnlineSecurity OnlineBackup DeviceProtection
## Length:7043 Length:7043 Length:7043 Length:7043
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
##
## TechSupport StreamingTV StreamingMovies Contract
## Length:7043 Length:7043 Length:7043 Length:7043
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
##
## PaperlessBilling PaymentMethod MonthlyCharges TotalCharges
## Length:7043 Length:7043 Min. : 18.25 Min. : 18.8
## Class :character Class :character 1st Qu.: 35.50 1st Qu.: 401.4
## Mode :character Mode :character Median : 70.35 Median :1397.5
## Mean : 64.76 Mean :2283.3
## 3rd Qu.: 89.85 3rd Qu.:3794.7
## Max. :118.75 Max. :8684.8
## NA's :11
## Churn
## Length:7043
## Class :character
## Mode :character
##
##
##
##
Pada tahap ini akan dilakukan penyesuaian tipe datanya yaitu :
telco1_clean<-telco1 %>%
mutate(gender =as.factor(gender),
SeniorCitizen = as.factor(SeniorCitizen),
Partner = as.factor(Partner),
Dependents = as.factor(Dependents),
PhoneService = as.factor(PhoneService),
MultipleLines = as.factor(MultipleLines),
InternetService = as.factor(InternetService),
OnlineSecurity = as.factor(OnlineSecurity),
OnlineBackup = as.factor(OnlineBackup),
DeviceProtection = as.factor(DeviceProtection),
TechSupport = as.factor(TechSupport),
StreamingTV = as.factor(StreamingTV),
StreamingMovies = as.factor(StreamingMovies),
Contract = as.factor(Contract),
PaperlessBilling = as.factor(PaperlessBilling),
PaymentMethod = as.factor(PaymentMethod),
Churn = as.factor(Churn))
summary(telco1_clean)
## customerID gender SeniorCitizen Partner Dependents
## Length:7043 Female:3488 0:5901 No :3641 No :4933
## Class :character Male :3555 1:1142 Yes:3402 Yes:2110
## Mode :character
##
##
##
##
## tenure PhoneService MultipleLines InternetService
## Min. : 0.00 No : 682 No :3390 DSL :2421
## 1st Qu.: 9.00 Yes:6361 No phone service: 682 Fiber optic:3096
## Median :29.00 Yes :2971 No :1526
## Mean :32.37
## 3rd Qu.:55.00
## Max. :72.00
##
## OnlineSecurity OnlineBackup
## No :3498 No :3088
## No internet service:1526 No internet service:1526
## Yes :2019 Yes :2429
##
##
##
##
## DeviceProtection TechSupport
## No :3095 No :3473
## No internet service:1526 No internet service:1526
## Yes :2422 Yes :2044
##
##
##
##
## StreamingTV StreamingMovies Contract
## No :2810 No :2785 Month-to-month:3875
## No internet service:1526 No internet service:1526 One year :1473
## Yes :2707 Yes :2732 Two year :1695
##
##
##
##
## PaperlessBilling PaymentMethod MonthlyCharges
## No :2872 Bank transfer (automatic):1544 Min. : 18.25
## Yes:4171 Credit card (automatic) :1522 1st Qu.: 35.50
## Electronic check :2365 Median : 70.35
## Mailed check :1612 Mean : 64.76
## 3rd Qu.: 89.85
## Max. :118.75
##
## TotalCharges Churn
## Min. : 18.8 No :5174
## 1st Qu.: 401.4 Yes:1869
## Median :1397.5
## Mean :2283.3
## 3rd Qu.:3794.7
## Max. :8684.8
## NA's :11
Dari summary, maka terdapat missing value pada Total charges dan akan dihilangkan 11 kolom yang ada pada Total Charges.
telco_no_na <- which(is.na(telco1_clean$TotalCharges))
telco1_clean <- telco1_clean[-telco_no_na,]