Analysis Kepribadian Pelanggan adalah Analysis terperinci tentang pelanggan ideal di perusahaan. Ini membantu bisnis untuk lebih memahami pelanggannya dan memudahkan perusahaan untuk memodifikasi produk sesuai dengan kebutuhan, prilaku, dan perhatian khusus dari berbagai jenis pelanggan.
Pelanggan memiliki kepribadian yang berbeda dan tersebar di berbagai tahap saluran penjualan. Pelanggan menunjukkan kepribadian dan perilaku yang berbeda, jika perusahaan menangani berbagai jenis pelanggan dengan cara yang sama, jika perusahaan tidak mengelompokkan pelanggan secara strategis dan menaganinya dengan tepat, perusahaan pasti akan kehilangan banayak pelanggan setia dan akan mengakibatkan penghasilan perusahaan besar penjualan perusahaan. Dan penelitan menunjukkan bahwa 33% pelanggan meninggalkan merek perusahaan yang pelanggan tinggalkan hanya setelah satu pengalaman yang buruk!!.
Analysis Keperbadian Pelanggan membantu bisnis untuk memodifikasi produknya berdasarkan target pelanggan dari berbagai jenis segmen pelanggan. Misalnya alih-alih mengeluarkan uang untuk produk baru ke setiap pelanggan di database perusahaan, perusahaan dapat menganalysis segmen pelanggan mana yang paling mungkin produk dan memasarkan produk hanya pada segmen tertentu.
Data pada project ini bisa didownload : https://drive.google.com/file/d/1JAtY-zS9gLEQdq9FxrOmnEBKbciPknFm/view?usp=drivesdk
Sebelum melangkah lebih jauh, saya perlu mengetahui informasi dasar dari data meliputi ukuran data, banyaknya data, dan nama-nama kolom atau variabel di dalam data.
glimpse(data)
Rows: 2,240
Columns: 29
$ ID <int> 5524, 2174, 4141, 6182, 5324, 7446, 965, 6177, 4855, 5899, 1994, 387, 212~
$ Year_Birth <int> 1957, 1954, 1965, 1984, 1981, 1967, 1971, 1985, 1974, 1950, 1983, 1976, 1~
$ Education <chr> "Graduation", "Graduation", "Graduation", "Graduation", "PhD", "Master", ~
$ Marital_Status <chr> "Single", "Single", "Together", "Together", "Married", "Together", "Divor~
$ Income <int> 58138, 46344, 71613, 26646, 58293, 62513, 55635, 33454, 30351, 5648, NA, ~
$ Kidhome <int> 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0~
$ Teenhome <int> 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1~
$ Dt_Customer <chr> "04-09-2012", "08-03-2014", "21-08-2013", "10-02-2014", "19-01-2014", "09~
$ Recency <int> 58, 38, 26, 26, 94, 16, 34, 32, 19, 68, 11, 59, 82, 53, 38, 23, 51, 20, 9~
$ MntWines <int> 635, 11, 426, 11, 173, 520, 235, 76, 14, 28, 5, 6, 194, 233, 3, 1006, 53,~
$ MntFruits <int> 88, 1, 49, 4, 43, 42, 65, 10, 0, 0, 5, 16, 61, 2, 14, 22, 5, 5, 80, 17, 2~
$ MntMeatProducts <int> 546, 6, 127, 20, 118, 98, 164, 56, 24, 6, 6, 11, 480, 53, 17, 115, 19, 38~
$ MntFishProducts <int> 172, 2, 111, 10, 46, 0, 50, 3, 3, 1, 0, 11, 225, 3, 6, 59, 2, 150, 0, 30,~
$ MntSweetProducts <int> 88, 1, 21, 3, 27, 42, 49, 1, 3, 1, 2, 1, 112, 5, 1, 68, 13, 12, 16, 24, 3~
$ MntGoldProds <int> 88, 6, 42, 5, 15, 14, 27, 23, 2, 13, 1, 16, 30, 14, 5, 45, 4, 28, 176, 39~
$ NumDealsPurchases <int> 3, 2, 1, 2, 5, 2, 4, 2, 1, 1, 1, 1, 1, 3, 1, 1, 3, 2, 2, 2, 1, 15, 3, 3, ~
$ NumWebPurchases <int> 8, 1, 8, 2, 5, 6, 7, 4, 3, 1, 1, 2, 3, 6, 1, 7, 3, 4, 11, 2, 4, 0, 2, 6, ~
$ NumCatalogPurchases <int> 10, 1, 2, 0, 3, 4, 3, 0, 0, 0, 0, 0, 4, 1, 0, 6, 0, 1, 4, 1, 2, 28, 3, 2,~
$ NumStorePurchases <int> 4, 2, 10, 4, 6, 10, 7, 4, 2, 0, 2, 3, 8, 5, 3, 12, 3, 6, 9, 3, 5, 0, 9, 9~
$ NumWebVisitsMonth <int> 7, 5, 4, 6, 5, 6, 6, 8, 9, 20, 7, 8, 2, 6, 8, 3, 8, 7, 5, 6, 8, 1, 8, 4, ~
$ AcceptedCmp3 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0~
$ AcceptedCmp4 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0~
$ AcceptedCmp5 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0~
$ AcceptedCmp1 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0~
$ AcceptedCmp2 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0~
$ Complain <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0~
$ Z_CostContact <int> 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3~
$ Z_Revenue <int> 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 1~
$ Response <int> 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0~
Tampaknya bahwa ada sebanyak 2240 baris pada data dengan variabel sebanyak 29 dan ada baiknya saya mengetahui apakah ada nilai yang kosong atau NA.
Berikut adalah Variabel singkat dari file deskripsi data
Pelanggan
ID : Pengidentifikasi unik pelanggan
Year_Birth : Tahun Lahir Pelanggan
Educaton : Tingkat pendidikan pelanggan
Martial_Status : Status pernikahan pelanggan
Income : Pendapatan rumah tangga pelanggan pertahun
Kidhome : Jumlah anak dalam rumah tangga pelanggan
Teenhome : Jumlah remaja dalam rumah tangga pelanggan
Dt_Customer : Tanggal Pendaftaran pelanggan dengan perusahaan
Recency : Jumlah hari sejak pembelian terakhir pelanggan
Complain : 1 jika pelanggan mengeluh dalam 2 tahun terakahir, 0 sebaliknya
Produk yang dijual Perusahaan
MntWines : Jumlah yang dihabiskan untuk daging dalam 2 tahun terakhir
MntFruits : Jumlah yang dihabiskan untuk buah-buahan dalam 2 tahun terakhir
MntMeatProducts : Jumlah yang dihabiskan untuk membeli daging dalam 2 tahun terakhir
MntFishProduct : Jumlah yang dihabiskan untuk membeli ikan dalam 2 tahun terakhir
MntSweetProduct : Jumlah yang dihabiskan untuk permen dalam 2 tahun terakhir
MntGoldProds : Jumlah yang dihabiskan untuk emas dalam 2 tahun terakhir
Promosi perusahaan kepada pelanggan
NumDels Purchases : Jumlah Pembelian yang dilakukan dengan diskon
AcceptedCmp1 : 1 jika pelanggan menerima penawaran di kampanye pertama, 0 sebaliknya
Acceptedcmp2 : 1 Jika pelanggan menerima penawaran di kamapanye ke-2, 0 sebaliknya
Acceptedcmp3 : 1 Jika pelanggan menerima penawaran di kampanye ke-3 , 0 sebaliknya
Acceptedcmp4 : 1 Jika pelanggan menerima penawaran di kampanye ke-4, 0 sebaliknya
Acceptedcmp5 : 1 Jika pelanggan menerima penawaran di kampanye ke-5, 0 sebaliknya
Response : 1 Jika pelanggan menerima tawaran di kampanye terakhir, 0 sebaliknya
Tempat yang digunakan pelanggan
NumWebPurchases : Jumlah pembelian yang dilakukan melalui situs web perusahaan
NumCatalogPurchases : Jumlah pembeilan yang dilakukan menguanakan katalog
NumStorePurchases : Jumlah pembeilan yang dilakukan langsung di toko
NumWebVisitsMonth : Jumlah Kunjungan ke situs web perusahaan dalam sebulan terakhir
suatu proses mendeteksi dan memperbaiki (atau menghapus) data set, tabel, dan database yang korup atau tidak akurat. memeriksa nilai-nilai kosong yang hilang
colSums(is.na(data))
ID Year_Birth Education Marital_Status Income
0 0 0 0 24
Kidhome Teenhome Dt_Customer Recency MntWines
0 0 0 0 0
MntFruits MntMeatProducts MntFishProducts MntSweetProducts MntGoldProds
0 0 0 0 0
NumDealsPurchases NumWebPurchases NumCatalogPurchases NumStorePurchases NumWebVisitsMonth
0 0 0 0 0
AcceptedCmp3 AcceptedCmp4 AcceptedCmp5 AcceptedCmp1 AcceptedCmp2
0 0 0 0 0
Complain Z_CostContact Z_Revenue Response
0 0 0 0
Ternyata ada nilai kosong atau NA terdapat di variabel Income, untuk variabel income jika memiliki nilai yang hilang atau NA karena presenatasenya sangat kecil, maka saya harus menghapus nya atau jika nilai persentasenya sangat besar maka saya mengisi nilai yang kosong pada variabel income dengan mengisi nilai dengan imputation.
percentage.plot
Warning: Removed 28 rows containing missing values (position_stack).
Hasil dari plot diatas mengambarkan Ternayata Nilai presentasinya di variabel Income sangat kecil, maka saya harus menghapusnya.
Pemilihan tentang bagian data mana yang dikode, mana yang dibuang, pola-pola mana yang diringkas sejumlah bagain tersebar data.
df1 <- na.omit(df)
Saya akan Membuat Varaibel Age untuk menghitung pelanggan dari tahun lahir pelanggan pelanggan. Ini akan lebih berguna untuk analysis saya.
df1['Age']= 2022-df1$Year_Birth
Error: object 'df1' not found
Membuat variabel Child untuk menggambungkan variabel Kidhome dan Teenhome. Untuk mengetahui Jumlah anak dan remaja didalam rumah tangga pelanggan.
print(max(df1$Dt_Customer))
[1] "31-12-2013"
Membuat Variabel total_spent untuk mengabungakan semua produk perusahaan untuk mengetahui total yang dibelanjakan pelanggan
df1['total_spent']=df1$MntMeatProducts+df1$MntFishProducts+df1$MntWines+df1$MntFruits+df1$MntSweetProducts+df1$MntGoldProds
Membuat Variabel accepted untuk mengabungakan semua kampanye perusahaan untuk mengetahui kamapanye mana yang diterima pelanggan.
names(df1)
[1] "ID" "Year_Birth" "Education" "Marital_Status"
[5] "Income" "Kidhome" "Teenhome" "Dt_Customer"
[9] "Recency" "MntWines" "MntFruits" "MntMeatProducts"
[13] "MntFishProducts" "MntSweetProducts" "MntGoldProds" "NumDealsPurchases"
[17] "NumWebPurchases" "NumCatalogPurchases" "NumStorePurchases" "NumWebVisitsMonth"
[21] "AcceptedCmp3" "AcceptedCmp4" "AcceptedCmp5" "AcceptedCmp1"
[25] "AcceptedCmp2" "Complain" "Z_CostContact" "Z_Revenue"
[29] "Response" "Age" "Child" "total_spent"
[33] "accepted"
dari hasil diatas dapat dilihat variabel baru yaitu age, child, total_spent dan accepeted dari hasil pegabungan data variabel.
Menghapus Variabel asli Karena sekarang data ini beriisi fitur gabungan baru.
Sekarang sudah menjadi kumpulan data berisi fitur gabungan baru
Analysis desriptive dapat di kategorikan menjadi empat jenis yaitu ukuran frekunesi, tendesi sentral, despersi atau variasi, dan ukuran posisi. untuk projeck ini saya menggunakan analyis desikriptif ukuran posisi nilai tunggal atau responsny adalam kaitanya dengan nilai lain. Menggunakan deskriptive Bivariat atau Multivariat untuk mempelajari apakah ada hubungan diantara keduanya.
Hasi plot diatas mengambarkan bawa rata-rata pendapatan rata-rata Pelanggan sekitar 50000
dari plot diatas mengambarkan pendapatan pelanggan yang dibelanjakan semua produk perusahaan untuk mengetahui total yang dibelanjakan pelanggan.
Dari plot diatas mengambarkan rata-rata Age Customers 50 tahun.
dari gambar diatas total_spent customers rata-rata nya sekitar 475
eduplot
Warning: Removed 1 rows containing non-finite values (stat_boxplot).
Dari visualisasis hasil diatas bahwa pelanggan Basic tingkat pendidikan dasar memiliki pendapatan yang lebih kecil dibadingkan dengan yang lain.
mplot
Warning: Removed 1 rows containing non-finite values (stat_boxplot).
notch went outside hinges. Try setting notch=FALSE.
notch went outside hinges. Try setting notch=FALSE.
Dari visualisasis hasil diatas bahwa Martial Status Alone dan YOLO memiliki pendapatan yang lebih kecil dibadingkan dengan yang lain.
Variabel yang digunakan untuk mengkuantitatifkan variabel yang bersifat kualitatif.
Membuat variabel dummy
glimpse(dfc)
Rows: 2,216
Columns: 14
$ Marital_StatusMarried <dbl> 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0,~
$ Marital_StatusSingle <dbl> 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0,~
$ Recency <dbl> 58, 38, 26, 26, 94, 16, 34, 32, 19, 68, 59, 82, 53, 38, 23, 51, 20, 91,~
$ NumDealsPurchases <dbl> 3, 2, 1, 2, 5, 2, 4, 2, 1, 1, 1, 1, 3, 1, 1, 3, 2, 2, 2, 1, 15, 3, 3, 7~
$ NumWebPurchases <dbl> 8, 1, 8, 2, 5, 6, 7, 4, 3, 1, 2, 3, 6, 1, 7, 3, 4, 11, 2, 4, 0, 2, 6, 7~
$ NumCatalogPurchases <dbl> 10, 1, 2, 0, 3, 4, 3, 0, 0, 0, 0, 4, 1, 0, 6, 0, 1, 4, 1, 2, 28, 3, 2, ~
$ NumStorePurchases <dbl> 4, 2, 10, 4, 6, 10, 7, 4, 2, 0, 3, 8, 5, 3, 12, 3, 6, 9, 3, 5, 0, 9, 9,~
$ NumWebVisitsMonth <dbl> 7, 5, 4, 6, 5, 6, 6, 8, 9, 20, 8, 2, 6, 8, 3, 8, 7, 5, 6, 8, 1, 8, 4, 8~
$ Complain <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,~
$ Response <dbl> 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,~
$ Age <dbl> 65, 68, 57, 38, 41, 55, 51, 37, 48, 72, 46, 63, 70, 35, 76, 42, 76, 73,~
$ Child <dbl> 0, 2, 0, 1, 1, 1, 1, 1, 1, 2, 0, 0, 2, 0, 0, 2, 0, 1, 1, 0, 1, 1, 1, 1,~
$ total_spent <dbl> 1617, 27, 776, 53, 422, 716, 590, 169, 46, 49, 61, 1102, 310, 46, 1315,~
$ accepted <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 1, 0, 0, 0, 1, 0, 0,~
Disini saya menghapus variabel Pendapatan (Income), pertama saya melakukan pengelempokan mengguanakan variabel itu tetapi tidak membantu untuk mendapatkan pemisahan yang jelas. dan juga dalam masalah ini saya tertarik dengan jumlah yang dibelanjakan pelanggan dari pada Penghasilanya
Clustering adalah proses pembagian objek-objek ke dalam beberapa kelompok (cluster) berdasarkan tingkat kemiripan antara satu objek dengan yang lain.
Beberapa contoh clustering:
Pengelompokan manusia berdasarkan umur: bayi, balita, anak, remaja, dewasa, tua.
Pengelompokan customer berdasarkan daya belinya: regular dan premium.
Pengelompokan makanan berdasarkan kandungan gizinya: biji-bijian, sayuran, buah-buahan, minyak, protein, dan lain-lain.
Banyak algoritma telah dikembangkan untuk melakukan clustering secara otomatis, salah satu yang sangat populer adalah K-Means.
K-means adalah algoritma yang membagi data menjadi sejumlah partisi dengan cara sederhana: mencari kedekatan dari tiap titik pada suatu cluster dengan sejumlah nilai rata-rata atau mean.
Ada dua konsep kunci yang juga menjadi nama asal k-means:
Jumlah partisi yang diinginkan, diwakili oleh huruf k
Mencari “jarak” kedekatan tiap titik ke sejumlah nilai rata-rata cluster yang diamati, diwakili oleh means. Ini biasa juga disebut centroid dilambang oleh simbol segitiga.
Fungsi kmeans memerlukan minimal 2 parameter, yaitu:
x: data yang digunakan, dimana semua isi datanya harus berupa numerik.
centers: jumlah cluster yang diinginkan.
Mean atau nilai rata-rata disini sering disebut juga dengan centroid pada berbagai literatur data science.
Dan fungsi kmeans ini biasanya disertai dengan pemanggilan function seet.seed(). Ini berguna agar dapat “menyeragamkan” daftar nilai acak yang sama dari kmeans sehingga mendapatkan output yang sama.
print(km.res$centers)
Marital_StatusMarried Marital_StatusSingle Recency NumDealsPurchases NumWebPurchases
1 0.3933121 0.2165605 48.62898 2.340764 2.719745
2 0.3793677 0.1863561 48.80865 2.728785 6.093178
3 0.3760446 0.2423398 50.69638 1.584958 5.501393
NumCatalogPurchases NumStorePurchases NumWebVisitsMonth Complain Response Age Child
1 0.8073248 3.730892 6.314490 0.011146497 0.1011146 51.77150 1.2300955
2 4.3777038 8.660566 4.379368 0.009983361 0.1264559 55.68220 0.7504160
3 6.3342618 8.256267 3.409471 0.002785515 0.3621170 53.91643 0.2869081
total_spent accepted
1 152.6863 0.1058917
2 921.4676 0.3061564
3 1670.4819 0.9582173
print(km.res$size)
[1] 1256 601 359
print(km.res$betweenss/km.res$totss)
[1] 0.8976368
Saya dapat meliahat pemisahan yang jelas dalam total pengeluaran di antara 3 Cluster. ini akan memabantu untuk memberi nama cluster
numcatplot
notch went outside hinges. Try setting notch=FALSE.
numcatplot
notch went outside hinges. Try setting notch=FALSE.
Semua fitur yang diplot di atas memiliki pemisahan yang jelas antar Cluster. Menurut Analysis ini saya dapat memberi nama ketiga Klaster ini. Cluster 1 memiliki pembelanjaan rendah, cluster 2 Memiliki pembelanjaan rata-rata, dan Claster 3 memiliki pembelanjaan tinggi.
Penampilan atau peselancar adalah pelanggan yang hanya menelusuri layanan perusahaan anda dan mungkin juga melihat melalui pesaing Anda. Mereka telah melanjutkan minat, tetapi mereka belum memutuskan apa pun.
Bagaimana menghadapi mereka ?
Jadikan situs web Anda terlihat menarik seperti tulisan salinan yang menarik di halaman web Anda dan pertahankan desainya tetap inovatif. Pastikan Anda mengarah perhatian calon pelanggan ke tempat yang tepat dengan merancanakan strategi keterlibatan situs web yang tepat.
Hilangkan hambatan atau keberatan pada tahap awal ini dan fokuslah pada pengalaman calon pelanggan saat mengunjungi situs web anda sehingga mencipatakan pengalaman yang baik. Bahkan elemen pop-up yang mengganggu seperti iklan yang mengganggu, kesulitan menavigasi, atau kurangnya dukungan pelanggan yang cepat dapat dapat mengubahnya.
Cluster 2
Pelanggan implusif belum benar-benar berencana untuk membeli produk Anda, atau produk apapun dalam hal ini, calon pelanggan membeli keputusan pembelian secara mendadak.
Bagaimana menghadapi mereka ?
Berikan mereka pengalaman yang mulus di seluruh corong. singkirkan rintangan sekecil apa pun dan buat seluruh perjalanan pembelian menjadi seluncur yang licin.
Penawaran akhir pekan paling baik dengan jenis calon pelanggan ini. Jadi, tawarkan mereka kesepakatan mereka terikat watku yang mencipatakan urgensi.
Buatlah salinan situs web Anda tetap tajam dan menarik. Kemudian pengguna akan membuat keputusan pembelian implusif yang menguntungkan Anda.
Cluster 3
Pelanggan setia adalah jenis pelanggan terbaik untuk bisnis Anda. Jenis pelanggan berulang terus kembali kepada Anda untuk produk dan layanan yang berbeda dan mereka tampaknya terkesan dengan merek Anda.
Bagaimana Menghadapi mereka ?
Pertama Tampilan pelanggan setia Anda pada studi kasus Anda atau dapatkan testimonial mereka. ini akan membuat mereka merasa lebih berharga, dan Anda mendapatkan lebih banyak bukti sosial untuk ditambahkan ke situs web Anda.
Kedua Terhubung dengan mereka dan pahami kisah sukses mereka. Pahami apa yang mereka sukai dari merek Anda dan apa yang membuat mereka menjadi pelanggan setia Anda. Gunakan pengalaman mereka dan coba tiru hal yang sama untuk semua pelanggan Anda yang lain.
Perlu diingat kesimpulan cluster 1, cluster 2 dan cluster 3 saya mengambil kesimpulan diatas di 16 jenis pelanggan yang berbeda dan cara mendakatinya