Buat Akun DQLab & Akses Kelas Data Science Python, R, SQL, Excel GRATIS!

Data Science in Marketing: Segmentasi Pelanggan Menggunakan R

Belajar Data Science di Rumah 11-April-2022
https://dqlab.id/files/dqlab/cache/7d7d55681651501514f15c388d8de017_x_Thumbnail800.jpg

Segmentasi pelanggan adalah strategi mengelompokkan pelanggan ke dalam kelompok/segmen yang berbeda berdasarkan kriteria tertentu. Persaingan usaha yang ketat mengharuskan perusahaan untuk selalu mampu memahami sebuah pasar yang terus berkembang. Salah satu faktor dominan yang mempengaruhi perkembangan pasar adalah pelanggan. Mengenali perilaku pelanggan dalam aktivitas transaksi menjadi modal yang besar untuk meningkatkan profit perusahaan. Apalagi pengumpulan data transaksi pelanggan sudah menjadi hal yang umum, memungkinkan praktisi data mengolah data tersebut dan menghasilkan segmentasi pelanggan.


Metode RFM menjadi salah satu metode segmentasi pelanggan yang umum digunakan. Ada banyak sekali artikel atau kursus yang menjelaskan keandalan metode ini, tentunya termasuk DQLab. RFM sendiri adalah singkatan dari recency, frequency dan monetary. Dimana:

  • Recency adalah rentang waktu transaksi terakhir dengan periode waktu analisis data;

  • Frequency adalah jumlah transaksi yang dilakukan pelanggan;

  • Monetary adalah jumlah uang yang dikeluarkan pelanggan pada seluruh jumlah transaksi.


Dalam menganalisis data transaksi pelanggan guna menghasilkan segmentasi pelanggan yang valid dan ilmiah, kita butuh sebuah algoritma. Dalam ilmu data terdapat algoritma cluster yang bisa kita gunakan pada studi kasus ini. Namanya adalah algoritma k-means. Algoritma ini banyak diajarkan di kelas-kelas statistik dasar dan data science. Keuntungan algoritma ini adalah mudah dipelajari dan sederhana karena pada dasarnya algoritma ini hanya menghitung jarak tiap data ke titik pusat cluster.. Pada artikel ini, akan dijabarkan bagaimana implementasi algoritma k-means menggunakan bahasa pemrograman R.


Packages

Ada 4 packages yang akan digunakan pada artikel ini, yaitu:

  • tidyverse, kumpulan packages untuk memanipulasi dan fungsi-fungsi lainnya;

  • lubridate, untuk memanipulasi bentuk tanggal dan waktu;

  • factoextra, untuk clustering dan visualisasinya.


Untuk menggunakan packages pertama kali, kita harus menginstallnya terlebih dahulu


```

install.packages(c("tidyverse",

                   "lubridate",

                   "factoextra"))

```


Perlu diingat, cukup sekali saja dalam menginstall packages. Jika sebelumnya sudah menginstall packages di atas, bisa langsung memanggil packages tersebut.


```

library(tidyverse)

library(lubridate)

library(factoextra)

```

data science



Data

Data yang digunakan pada artikel ini, bisa didapatkan di unduh gratis melalui situs kaggle. Dimana data ini merupakan data transaksi retail di Inggris.


data science

Setelah mengunduh data, selanjutnya kita perlu mengimpor data tersebut ke environment R.


```

df_data <- read.csv("data/data.csv")

head(df_data)

```

Data Science


Data terdiri dari beberapa variabel yakni:

  • "InvoiceNo", nomor pesanan;

  •  "StockCode", kode stok barang;

  • "Description", nama barang;

  • "Quantity", jumlah barang yang dibeli;

  •  "InvoiceDate", tanggal transaksi;

  • "UnitPrice", harga per barang;

  •  "CustomerID", id pelanggan;

  • "Country", negara asal pelanggan.


Baca juga : Kursus Belajar Data dengan Bahasa R Untuk Pemula


Data Cleaning

Data Cleaning adalah proses menyiapkan data untuk dilakukan analisis dengan cara menghapus atau memodifikasi data salah, tidak relevan, duplikat, dan tidak terformat. Pada data ini terdapat anomali data, dimana terdapat UnitPrice dan Quantity yang minus. Dimana secara logika, tidak mungkin ada harga barang atau jumlah barang yang dibeli minus.


data sciencedata science


```

## membuang anomali data

df_data <- df_data %>% 

  mutate(Quantity = replace(Quantity, Quantity<=0, NA),

         UnitPrice = replace(UnitPrice, UnitPrice<=0, NA))


## menghapus data yang kosong atau

df_data <- df_data %>%

  drop_na()


```


data science


Data Wrangling

Data wrangling adalah proses transformasi data mentah ke dalam format yang lebih rapi dan siap diolah. Kita perlu mentransformasi data untuk mendapatkan variabel recency, frequency, dan monetary. Adapun skenarionya dengan mengelompokkan data berdasarkan CustomerID lalu untuk variabel:

  • Recency, mengurangkan tanggal akhir periode analisis dengan tanggal terakhir kali pelanggan melakukan transaksi. Karena tanggal pada data adalah tahun 2010-2011, maka tanggal akhir periode analisis adalah 2012-01-01.

  • Frequency, menghitung jumlah InvoiceNo unik pelanggan.

  • Monetary, mengalikan harga barang dengan jumlah barang yang dibeli lalu ditotalkan.


```

# membuat data RFM

df_data <- df_data %>% 

  mutate(InvoiceNo=as.factor(InvoiceNo), 

         StockCode=as.factor(StockCode), 

         InvoiceDate=as.Date(InvoiceDate, '%m/%d/%Y %H:%M'), 

         CustomerID=as.factor(CustomerID), 

         Country=as.factor(Country))


df_data <- df_data %>% 

  mutate(total_dolar = Quantity*UnitPrice)


## RFM

df_RFM <- df_data %>% 

  group_by(CustomerID) %>% 

  summarise(recency=as.numeric(as.Date("2012-01-01")-max(InvoiceDate)),

            frequency=n_distinct(InvoiceNo), 

            monitery= sum(total_dolar)/n_distinct(InvoiceNo)) 


summary(df_RFM)


```


Data Science


Standarisasi Data

Algoritma K-means, seperti namanya menggunakan nilai rata-rata dalam perhitungannya. Sehingga agar hasil perhitungan lebih akurat kita harus melakukan standarisasi data.


```

#standarisasi data

df_RFM$frequency_standard <- scale(df_RFM$frequency)

df_RFM$monitery_standard <- scale(df_RFM$monitery)

df_RFM$recency_standard <- scale(df_RFM$recency)

```

Data Science


Segmentasi Pelanggan dengan algoritma K-means

Sebelum menjalankan algoritma K-means, terlebih dahulu kita akan menentukan jumlah cluster yang ingin dibuat menggunakan metode silhouette.

```

set.seed(1)

fviz_nbclust(df_RFM[c("recency_standard", "frequency_standard", "monitery_standard")], 

             kmeans, method = "silhouette")

```

data science


data science


Dari grafik diatas, didapatkan jumlah cluster optimal adalah 4. Selanjutnya kita membuat model algoritma k-means.


```

segmentasi <- kmeans(x=df_RFM[c("recency_standard", "frequency_standard", 

"monitery_standard")], centers=4, nstart=25)

segmentasi$centers

summary(segmentasi$centers)

```


data science


Selanjutnya kita akan memberi label kluster pada masing-masing data dan melihat nilai rata-rata masing cluster untuk menentukan segmennya.


```

df_RFM$cluster <- segmentasi$cluster


df_RFM %>%

  group_by(cluster) %>%

  summarise(mean_recency = mean(recency),

            mean_freq = mean(frequency),

            mean_monitery = mean(monitery))

```

data science


data science


Berdasarkan data di atas, kita bisa menentukan segmen sebagai berikut:

  1. Kluster 1 adalah segmen Special Value

  2. Kluster 2 adalah segmen Medium Value

  3. Kluster 3 adalah segmen High Value

  4. Kluster 4 adalah segmen Low Value


Terakhir kita akan memberi label pada masing-masing data.


```

df_RFM <- df_RFM%>%

  mutate(segmentation = case_when(cluster == 1 ~ "Special Value",

                                  cluster == 2 ~ "Medium Value",

                                  cluster == 3 ~ "High Value",

                                  cluster == 4 ~ "Low Value",

                                  TRUE ~ "Other"))


```

data science


Data Science


Nah, kita telah berhasil mendapatkan segmentasi pelanggan seperti gambar di atas. Dimana customer 12346 termasuk pelanggan Special Value sedangkan customer 12352 adalah pelanggan Medium Value.


Baca juga : Belajar Data Science: Bahasa Pemrograman R Cocok untuk Pemula 


Menyimpan model

Perlu diketahui algoritma k-means dimulai dengan penentuan center secara acak, sehingga urutan klaster yang diperoleh kadang berubah. Maka disarankan untuk menyimpan model.


```

Segmen.Pelanggan <- data.frame(cluster=c(1,2,3,4), 

                               Value.Segment=c("Special Value", "Medium Value",

                                               "High Value", "Low Value"))


#Menggabungkan seluruh aset ke dalam variable Identitas.Cluster

Identitas.Cluster <- list(Segmentasi=segmentasi, 

                          Segmen.Pelanggan=Segmen.Pelanggan, 

                          column=c("recency_standard", "frequency_standard", "monitery_standard"))

saveRDS(Identitas.Cluster,"cluster_rfm.rds")


```

data science


Ingin belajar lebih detail?

Mungkin ada yang bertanya jika kita memiliki data baru, apakah bisa melakukan segmentasi dengan model yang tadi kita buat, atau harus memasukkan data baru ke data lama lalu membangun model kembali. 


Penasaran dengan jawabannya? Yuk dapatkan jawabannya dengan mengikuti kelas Data Science in Marketing: Customer Segmentation DQLab. 


Terdapat materi yang sangat lengkap namun tetap mudah dipahami bagi pemula sekalipun. Tidak hanya kelas tersebut, masih terdapat kelas dan program lain yang bisa sahabat DQ dapatkan guna ilmu tentang analisis data. Tunggu apalagi? Sign up sekarang di DQLab.id!


Penulis: Ashari Ramadhan

Mulai Karier
sebagai Praktisi
Data Bersama
DQLab

Daftar sekarang dan ambil langkah
pertamamu untuk mengenal
Data Science.

Buat Akun


Atau

Sudah punya akun? Login