Sebuah perusahaan retail waralaba harus mengerti dan mengetahui segmen pelanggan mereka agar perusahaan dapat lebih mudah menjual produk mereka berdasarkan apa yang diinginkan kebiasaan, penghasilan masing-masing pelanggan. Sebagai contoh, daripada perusahaan menghabiskan uang untuk produk baru, lebih baik perusahaan menganalisa terlebih dahulu barang apa yang pelanggan sering beli dan perusahaan bisa menyetok barang sesuai dengan segmen pelanggan. Sebuah perusahaan harus bisa membuat sebuah strategi yang benar agar tidak merugikan dikarenakan ketidak tahuan mereka tentang segmen pelanggan dan barang yang ada tidak terjual karena pelanggan tidak membutuhkannya.
Membuat sebuah segmen pelanggan berdasarkan karakteristik yang ada agar perusahaan tidak salah membuat sebuah rencana penjualan yang dikarenakan perusahaan tidak tau segmen pelanggan mereka seperti apa. Oleh karena itu, pada project ini dibuatlah sebuah cluster/segmentasi pelanggan untuk mengetahui rekomendasi untuk meningkatkan pembelian barang2 tertentu oleh pelanggan pada kunjugan selanjutnya.
Project ini menggunakan sebuah data transaksi dari Kaggle. Adapun isi dari dataset tersebut sebagai berikut:
-ID: sebagai identifier
-Year_Birth: tahun kelahiran pelanggan
-Education: qualifikasi edukasi pelanggan
-Marital_Status: status pelanggan
-Income: jumlah pendapatan tahunan pelanggan
-Kidhome: jumlah anak yang dimiliki oleh pelanggan
-Teenhome: jumlah remaja yang dimiliki oleh pelanggan
-Dt_Customer: tanggal pelanggan menjadi member di perusahaan
-Recency: selisih hari belanja terakhir pelanggan
-MntWines: jumlah yang dihabiskan ke produk wine
-MntFruits: jumlah yang dihabiskan ke produk buah
-MntMeatProducts: jumlah yang dihabiskan ke produk daging
-MntFishProducts: jumlah yang dihabiskan ke produk ikan
-MntSweetProducts: jumlah yang dihabiskan ke produk manis
Machine learning dibutuhkan untuk mengidentifikasi segmen pelanggan mana yang paling banyak belanja dengan menambahkan variabel customer_segment dan variabel lain sebagai faktor.
Model akan dibuat dengan memanfaatkan K-Means dan RFM Analysist
Output project berupa dashboard yang menampilkan segmentasi pelanggan berdasarkan barang yang sering dibeli dan karakteristiknya.
Business Impact: Identifikasi dibutuhkan agar pemilik perusahaan tau strategi bagaimana caranya semua barang yang mereka punya terjual. Melakukan segmentasi juga berguna agar stok barang yang akan dijual oleh perusahaan tidak menumpuk dan membantu pemilik perusahaan mengetahui tentang kebiasaan atau pasar pelanggan yang mereka punya.
library(tidyverse)
segmen <- read.csv2("data/marketing_campaign.csv", sep = "\t")
head(segmen)
## ID Year_Birth Education Marital_Status Income Kidhome Teenhome Dt_Customer
## 1 5524 1957 Graduation Single 58138 0 0 04-09-2012
## 2 2174 1954 Graduation Single 46344 1 1 08-03-2014
## 3 4141 1965 Graduation Together 71613 0 0 21-08-2013
## 4 6182 1984 Graduation Together 26646 1 0 10-02-2014
## 5 5324 1981 PhD Married 58293 1 0 19-01-2014
## 6 7446 1967 Master Together 62513 0 1 09-09-2013
## Recency MntWines MntFruits MntMeatProducts MntFishProducts MntSweetProducts
## 1 58 635 88 546 172 88
## 2 38 11 1 6 2 1
## 3 26 426 49 127 111 21
## 4 26 11 4 20 10 3
## 5 94 173 43 118 46 27
## 6 16 520 42 98 0 42
## MntGoldProds NumDealsPurchases NumWebPurchases NumCatalogPurchases
## 1 88 3 8 10
## 2 6 2 1 1
## 3 42 1 8 2
## 4 5 2 2 0
## 5 15 5 5 3
## 6 14 2 6 4
## NumStorePurchases NumWebVisitsMonth AcceptedCmp3 AcceptedCmp4 AcceptedCmp5
## 1 4 7 0 0 0
## 2 2 5 0 0 0
## 3 10 4 0 0 0
## 4 4 6 0 0 0
## 5 6 5 0 0 0
## 6 10 6 0 0 0
## AcceptedCmp1 AcceptedCmp2 Complain Z_CostContact Z_Revenue Response
## 1 0 0 0 3 11 1
## 2 0 0 0 3 11 0
## 3 0 0 0 3 11 0
## 4 0 0 0 3 11 0
## 5 0 0 0 3 11 0
## 6 0 0 0 3 11 0
glimpse(segmen)
## Rows: 2,240
## Columns: 29
## $ ID <int> 5524, 2174, 4141, 6182, 5324, 7446, 965, 6177, 485~
## $ Year_Birth <int> 1957, 1954, 1965, 1984, 1981, 1967, 1971, 1985, 19~
## $ Education <chr> "Graduation", "Graduation", "Graduation", "Graduat~
## $ Marital_Status <chr> "Single", "Single", "Together", "Together", "Marri~
## $ Income <int> 58138, 46344, 71613, 26646, 58293, 62513, 55635, 3~
## $ Kidhome <int> 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1,~
## $ Teenhome <int> 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1,~
## $ Dt_Customer <chr> "04-09-2012", "08-03-2014", "21-08-2013", "10-02-2~
## $ Recency <int> 58, 38, 26, 26, 94, 16, 34, 32, 19, 68, 11, 59, 82~
## $ MntWines <int> 635, 11, 426, 11, 173, 520, 235, 76, 14, 28, 5, 6,~
## $ MntFruits <int> 88, 1, 49, 4, 43, 42, 65, 10, 0, 0, 5, 16, 61, 2, ~
## $ MntMeatProducts <int> 546, 6, 127, 20, 118, 98, 164, 56, 24, 6, 6, 11, 4~
## $ MntFishProducts <int> 172, 2, 111, 10, 46, 0, 50, 3, 3, 1, 0, 11, 225, 3~
## $ MntSweetProducts <int> 88, 1, 21, 3, 27, 42, 49, 1, 3, 1, 2, 1, 112, 5, 1~
## $ MntGoldProds <int> 88, 6, 42, 5, 15, 14, 27, 23, 2, 13, 1, 16, 30, 14~
## $ NumDealsPurchases <int> 3, 2, 1, 2, 5, 2, 4, 2, 1, 1, 1, 1, 1, 3, 1, 1, 3,~
## $ NumWebPurchases <int> 8, 1, 8, 2, 5, 6, 7, 4, 3, 1, 1, 2, 3, 6, 1, 7, 3,~
## $ NumCatalogPurchases <int> 10, 1, 2, 0, 3, 4, 3, 0, 0, 0, 0, 0, 4, 1, 0, 6, 0~
## $ NumStorePurchases <int> 4, 2, 10, 4, 6, 10, 7, 4, 2, 0, 2, 3, 8, 5, 3, 12,~
## $ NumWebVisitsMonth <int> 7, 5, 4, 6, 5, 6, 6, 8, 9, 20, 7, 8, 2, 6, 8, 3, 8~
## $ AcceptedCmp3 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 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,~
## $ AcceptedCmp5 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,~
## $ AcceptedCmp1 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,~
## $ AcceptedCmp2 <int> 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,~
## $ Z_CostContact <int> 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~
## $ Response <int> 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0,~
Pada data terdapat 2.240 baris dan 29 kolom, selanjutnya cek missing value (NA)
colSums(is.na(segmen))
## ID Year_Birth Education Marital_Status
## 0 0 0 0
## Income Kidhome Teenhome Dt_Customer
## 24 0 0 0
## Recency MntWines MntFruits MntMeatProducts
## 0 0 0 0
## MntFishProducts MntSweetProducts MntGoldProds NumDealsPurchases
## 0 0 0 0
## NumWebPurchases NumCatalogPurchases NumStorePurchases NumWebVisitsMonth
## 0 0 0 0
## AcceptedCmp3 AcceptedCmp4 AcceptedCmp5 AcceptedCmp1
## 0 0 0 0
## AcceptedCmp2 Complain Z_CostContact Z_Revenue
## 0 0 0 0
## Response
## 0
Pada data segmen terdapat missing value pada kolom Income.
year <- segmen$Year_Birth
hist(year, breaks = 20)