Project ini merupakan project yang bertujuan untuk melakukan pediksi perilaku pelanggan guna meningkatkan campaign marketing di suatu perusahaan. Project ini dibuat menggunakan bahasa pemrograman Python
- Analisis Tingkat Konversi Berdasarkan Pendapatan, Pengeluaran dan Usia
- Data Cleaning and Preprocessing
- Feature Engineering
- Data Modelling
- Analisis Kepribadian Pelanggan Untuk Penargetan Ulang Pemasaran
Background
Sebuah perusahaan dapat berkembang dengan pesat saat mengetahui customer personality nya, sehingga dapat memberikan layanan serta manfaat lebih baik kepada pelanggan yang berpotensi menjadi pelanggan yang loyal. Dengan mengolah data historis marketing campaign, dapat menaikkan performa dan menyasar pelanggan yang tepat agar dapat bertransaksi di platform perusahaan. Dari insight data tersebut, difokuskan membuat sebuah model prediksi kluster sehingga memudahkan perusahaan dalam membuat keputusan.
Goal
Tujuan dari analisis profil dan perilaku pelanggan dengan pendekatan clustering adalah untuk memahami pelanggan dengan lebih baik, menyediakan layanan yang lebih personal, meningkatkan performa penjualan, dan membangun hubungan yang kuat dengan pelanggan.
Objective
- Membuat model mechine learning yang dapat mengelompokkan pelanggan ke segmen-segmen berbeda berdasar karakteristiknya.
- Mengekstraksi insight mendalam tentang profil dan perilaku pelanggan.
- Menentukan strategi bisnis yang efektif dari hasil clustering.
Business Matric: Conversion Rate
Deskripsi Fitur
| Feature | Descriptions |
|---|---|
ID |
ID unik dari setiap pelanggan |
Year_Birth |
Tahun kelahiran pelanggan |
Complain |
Bernilai 1 jika pelanggan komplain dalam 2 tahun terakhir |
Dt_Customer |
Tanggal pendaftaran pelanggan dengan perusahaan (gabung member) |
Education |
Tingkat pendidikan pelanggan |
Marital_Status |
Status pernikahan pelanggan |
Kidhome |
Jumlah anak kecil dalam rumah tangga pelanggan |
Teenhome |
Jumlah remaja dalam rumah tangga pelanggan |
Income |
Pendapatan rumah tangga pelanggan per tahun |
MntFishProducts |
Jumlah yang dibelanjakan untuk produk ikan dalam 2 tahun terakhir |
MntMeatProducts |
Jumlah yang dibelanjakan untuk produk daging dalam 2 tahun terakhir |
MntFruits |
Jumlah yang dibelanjakan untuk produk buah-buahan dalam 2 tahun terakhir |
MntSweetProducts |
Jumlah yang dibelanjakan untuk produk manis dalam 2 tahun terakhir |
MntWines |
Jumlah yang dibelanjakan untuk produk anggur dalam 2 tahun terakhir |
MntGoldProds |
Jumlah yang dibelanjakan untuk produk emas dalam 2 tahun terakhir |
NumDealsPurchases |
Jumlah pembelian yang dilakukan dengan diskon |
NumCatalogPurchases |
Jumlah pembelian dengan katalog (membeli barang yang akan dikirim melalui pos) |
NumStorePurchases |
Jumlah pembelian langsung di toko |
NumWebPurchases |
Jumlah pembelian melalui situs web perusahaan |
NumWebVisitsMonth |
Jumlah kunjungan ke situs web perusahaan dalam sebulan terakhir |
Recency |
Jumlah hari sejak pembelian terakhir |
Response |
Bernilai 1 jika pelanggan menerima penawaran di kampanye terakhir, 0 jika tidak |
Pada proses ini dilakukan pemrosesan data sekaligus pembersihan data, yang terdiri dari pemeriksaan null / missing value pada data, duplikasi data, tipe data dan konsistensi nilai, serta outlier atau data yang tidak biasa. Hasilnya tertera pada tabel dibawah.
| Asesmen Data | Temuan | Penyelesaian |
|---|---|---|
| Null Values | Tidak terdapat null values | - |
| Duplicate Values | Tidak terdapat duplicate values | - |
| Konsistensi Nilai | Tipe data dt_customer sebaiknya datetime |
Mengubah tipe data nya menjadi datetime |
| Nilai Anomali | Keseluruhan fitur memiliki outlier. Terlihat juga fitur income dan year_birth memiliki nilai ekstrim |
Handling outlier menggunakan IQR. |
Pada tahapan ini, dilakukan pembuatan fitur baru berdasar fitur yang telah ada, bertujuan untuk membuat analisis menjadi lebih bermakna. Fitur baru ini dapat memberi informasi tambahan dengan menggabungkan beberapa fitur yang saling berhubungan untuk membentuk fitur yang lebih baik. Selengkapnya dapat dilihat pada tabel dibawah
| Nama fitur baru | Sumber |
|---|---|
| membership_duration | 2023 - dt_customer |
| age_categories | age |
| total_children | kidhome + teenhome |
| total_transaction | numdealspurchases + numwebpurchases + numcatalogpurchases + numstorepurchases |
| total_spending | mntcoke + mntfruits + mntmeatproducts + mntfishproducts + mntsweet |
| total_accepted_campaign | acceptedcmp1 + acceptedcmp2 + acceptedcmp3 + acceptedcmp4 + acceptedcmp5 |
| cvr | total_transaction x numwebvisitsmonth/100 |
Setelah mempersiapkan data, selanjutnya dilakukan pre-processing pada data, yaitu:
- Menghapus fitur yang tidak diperlukan untuk model agar data lebih terfokus.
- Melakukan encoding pada fitur kategorikal akan agar dapat diolah oleh machine learning.
- Melakukan standardisasi fitur untuk memastikan skala data seragam dan menghindari bias dalam model.
Setelah dilakukannya pre-processing pada data, tahap berikutnya adalah penggunaan metode Principal Component Analysis (PCA) yang berfungsi mengurangi dimensi data dengan mempertahankan informasi penting. Mereka dapat mengatasi masalah multikolinearitas antar fitur dan mengoptimalkan kinerja model dengan mengurangi dimensi data. Menentukan jumlah cluster terbaik juga merupakan langkah penting dalam proses ini. Analisis ini memilih jumlah cluster yang ideal dengan menggunakan Distortion Score dan Elbow Method. Jumlah cluster terbaik yang ditemukan berdasarkan hasil analisis adalah 4.
Dapat dilihat pada plot distortion score diatas, bahwa jumlah cluster terbaik yang ditemukan berdasarkan hasil analisis adalah 4 dengan skor 4864.63. Algoritma K-means digunakan untuk mengelompokkan data setelah menentukan jumlah cluster yang ideal sebelumnya. Algoritma ini mengelompokkan data berdasarkan kesamaan fitur, memungkinkan untuk mengidentifikasi pola atau kelompok yang ada dalam data dan memahami karakteristik setiap cluster. Gambar diatas merupakan hasil clustering dengan menggunakan K-Means, dimana plot tersebut menunjukkan bahwa cluster-cluster terbentuk dengan baik dan mengelompokkan data ke dalam beberapa kelompok berbeda. Ini menunjukkan bahwa algoritma clustering berhasil membedakan dan menggolongkan data berdasarkan ciri-cirinya.Selanjutnya dilakukan tahap evaluasi hasil model. Dengan menggunakan metode Silhouette Score, diberikan rekomendasi bahwa jumlah cluster terbaik adalah 4. Hal tersebut didasarkan pada fakta bahwa nilai Silhouette Score tertinggi pada jumlah cluster tersebut, yaitu 0,535. Nilai ini merupakan metrik yang menunjukkan seberapa baik objek dalam satu cluster berada dalam kumpulan data mereka sendiri dibandingkan dengan objek dalam cluster lain. Semakin tinggi nilai Silhouette Score, semakin baik cluster-cluster tersebut terpisah. Menurut plot korelasi antara pendapatan dan total pengeluaran, terlihat bahwa terbentuk kelompok yang dapat dibedakan. Dalam kasus ini, cluster 0 dan 3 cenderung berada dalam satu kelompok, yang menunjukkan adanya persamaan dan perbedaan karakteristik di antara mereka. Ketika dua cluster berada dalam satu kelompok, itu menunjukkan bahwa pola pendapatan dan pengeluaran anggota cluster tersebut serupa atau terkait. Tingkat pendapatan dan pengeluaran kedua cluster mungkin sebanding, atau mereka mungkin memiliki tren yang sama. Berdasarkan plot persentase ppulasi cluster diatas, ditemukan bahwa sekitar 50% dari populasi termasuk dalam kelompok Low Customer. Meskipun kelompok ini memiliki angka transaksi dan pengeluaran yang rendah, namun karena populasi mereka yang besar, perusahaan dapat fokus untuk menarik perhatian mereka.
Sedangkan populasi High Customer A dan B cenderung rendah, namun memiliki potensi transaksi, spending, konversi, dan income yang tinggi. Perusahaan dapat mempertimbangkan strategi pemasaran yang lebih personal dan eksklusif untuk menarik minat mereka. Berikut ini ditampilkan plot karakteristik mayoritas/rata-rata total transaksi, pengeluaran, pendapatan, recency, dan conversion rate berdasarkan clusternya. Terlihat pada grafik tersebut, bahwa dapat diketahui karakteristik dari tiap cluster berdasar pola transaksi pelanggan dan dapat dikelompokkan berdasarkan kategori berikut. Dari karakteriktik tersebut, dapat setiap cluster dapat dikelompok berdasarkan kategori, yaitu sebagai berikut.









