Business Understanding

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 :

  1. Apakah model dapat memprediksi secara akurat churn rate dari subscriber setelah 30 hari ?
  2. Faktor apa saja yang dapat mempengaruhi churn rate dari subscriber?
  3. Berapa bulan customer menjadi subscriber?

Problem Statement

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

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

BUSINESS IMPACT

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.

EDA

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 :

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

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,]