PROYEK DATA SCIENCE 4: ANALISIS CHURN
Salam sejahtera kali ini saya akan menganalisa perusahaan Telco dimana perusahaan ini memiliki konsumen yang lari(churn)itu kita ingin mengklasifikasi konsumen tersebut dengan menggunkan metodologi machine learning. Ada beberapa metode yang ingin kita pakai untuk memastikan seberapa banyak konsumen yang churn dan kita harus memastikan agar analisis tidak overfitting maupun underfitting. Berikut metodenya:
- Logistic Regression
- Random Forest Classifier
- Gradient Boosting Classifier
Sebelumnya saya ingin memahami satu persatu variabel yang ada di dataset biar kita mengenal performa perusahaan ini.
Seperti biasa kita menggunakan Numpy, Pandas, Seaborn, Matplotlib untuk tools Data Science, saya gunakan pd.set_option untuk membaca semua kolom yang ada disitu karena jika kita tampilkan begitu saja tidak semua kolom terbaca.
Seperti biasa kita cek jenis Dtypenya,null, jumlah kolom, jumlah rows dengan info(), tetapi saya lihat ada yang aneh karena kalau kita lihat disitu ada kolom TotalCharges yang menjelaskan total bayaran konsumen yang ditampilkan angka biayanya, tetapi angka tersebut ditampilkan dengan dtype object yang semestinya jika itu angka harusnya float atau int. Maka dari itu saya ingin merubah menjadi float saja karena memang ada angka2 koma didalamnya.
Saya menggunakan pd.to_numeric untuk merubah dari object ke float. Nah setelah dirubah ternyata jumlah rowsnya malah berkurang maka dari itu saya mau mengisinya dengan fillna() lalu saya masukan angka rata2/mean.
Bisa kita lihat semua angka di kolom TotalCharges sudah terpenuhi dengan angka rata2.
Lalu saya ingin menampilkan dengan visualisasi satu per satu isi kolom agar kita bisa mengetahui performa dari Telco itu sendiri.
Kita bisa lihat distribusi bayaran bulanan condong di angka 20 dollar, tapi lumayan merata dari 40–100.
Distribusi Total Charges cenderung kekiri atau dibawah 2000 dollar.
Untuk Tenure distribusi cenderung merata tapi banyak dibawah 10 dan kisaran 60–70.
Kita coba visualisasikan gender yang ada didata ternyata banyaknya setara atau 50:50.
Yang menikah/tinggal serumah banyaknya 48% dari data.
Yang memiliki tanggungan(anak) jumlahnya 30% dari data.
Nah ini jumlah konsumen yang lari bisa sampai 27% dari data yang kita punya.
Lebih banyak orang yang menggunakan Phone Service sesuai dari dataset.
Menurut data lebih banyak orang muda dibanding pengguna lanjut usia.
Lebih banyak orang yang tidak menggunakan layanan Online Security, lebih banyak orang yang menggunakan dibanding tidak menggunakan layanan internet.
Lebih banyak orang yang tidak menggunakan layanan Online Backup, lebih banyak orang yang menggunakan dibanding tidak menggunakan layanan internet.
Lebih banyak orang yang tidak menggunakan layanan Device Protection, lebih banyak orang yang menggunakan dibanding tidak menggunakan layanan internet.
Lebih banyak orang yang tidak menggunakan layanan Tech Support, lebih banyak orang yang menggunakan dibanding tidak menggunakan layanan internet.
Jumlah orang yang menggunakan dan tidak menggunakan Streaming TV lebih banyak tipis di yang tidak menggunakan, jumlah orang yang tidak menggunakan layanan internet lebih sedikit dari keduanya.
Jumlah orang yang menggunakan dan tidak menggunakan Streaming Movies lebih banyak tipis di yang tidak menggunakan, jumlah orang yang tidak menggunakan layanan internet lebih sedikit dari keduanya.
Jumlah orang yang menggunakan Paperless Billing lebih banyak dari yang tidak menggunakan.
Lebih banyak orang yang menggunakan Electronic Check dari ketiga media yang lain seperti Mailed Check, Bank Transfer, dan Credit Card yang jumlah ketiganya hampir sama.
Lebih banyak orang yang kontrak bulan ke bulan daripada 1 tahun atau 2 tahun, walaupun kontrak 2 tahun lebih banyak dari 1 tahun.
Lebih banyak orang yang tidak menggunakan Multiple Lines dari yang pakai.
Lebih banyak orang yang menggunakan layanan internet dengan Fiber Opic daripada DSL yang tidak menggunakan layanan internet lebih rendah dari yang pengguna DSL.
Kita melihat churn dari sisi karakter konsumen, yang cukup menarik buat saya adalah orang yang menggunakan layanan internet Fiber Optic lebih banyak churn ketimbang yang DSL maupun yang tidak sama sekali. Orang yang tidak menggunakan servis internet lebih setia ketimbang pengguna yang lain. Orang yang berpasangan lebih banyak churnnya ketimbang yang berpasangan. Orang yang menggunakan Paperless Billing lebih banyak churn ketimbang yang tidak.
METODE MACHINE LEARNING
Sebelum kita menggunakan metode Machine Learning kita harus membersihkan data dulu. Untuk kolom customerID kita tidak membutuhkannya jadi kita hilangkan dengan menggunakan fungsi drop().
Lalu kita menggunakan Lable Encoder untuk mengubah beberapa kolom yang tadinya huruf menjadi angka.
Kita pisahkan data dengan menggunakan train_test_split dan membagi data menjadi x dan y, x untuk semua kolom dan y untuk kolom Churn saja, lalu kita atur test size 70% train 30% test. Lalu kita hidupkan metode Logistic Regression dengan kita namakan lg.
Ketika kita train data tersebut, ternyata bisa kita lihat tingkat akurasinya 0.80 artinya 80%.
Lalu kita test model yang sudah kita buat dan menghasilkan akurasi 81%.
Kita lihat hasil test dengan menggunakan Confusion Matrix, kita bagi data menjadi no churn dan no churn, no churn dan churn, churn dan no churn, churn dan churn. Kita bisa lihat data didominasi oleh no churn dan no churn.
Terus kita menggunakan metode Random Forrest Classifier , kita lihat keakuratan train mencapai 1 atau 100%.
Lalu kita test model kita ternyata menghasilkan keakuratan 79%.
Kita visualisasikan data kita dan masih didominasi oleh no churn dan no churn.
Terakhir kita menggunakan Gradient Boosting Classifier dengan tingkat keakuratan train sebesar 83%.
Untuk test keakuratannya mencapai 80%.
Setelah di visualisasikan hasil test masih didominasi dengan no churn, no churn.
KESIMPULAN
Kita melihat dari metode machine learning yang kita gunakan dari Logistic Regression train 80% test 81%, Random Forrest Classifier train 100% test 79%, Gradien Boosting Classifier train 83% test 80%. Metode mana yang lebih bisa dinilai dari kesetaraan antara train dan test? Kita tidak mau menggunakan metode yang train lebih besar dari test yang biasa disebut Over-Fitting dan test lebih besar dari train yang biasa disebut Under-Fitting. Kita memilih yang relatif setara atau data yang tergeneralisasi seperti metode Logistic Regression data karena tidak menghasilkan noise.