1 PENDAHULUAN

1.1 Latar Belakang

Perkembangan teknologi digital dan pesatnya pertumbuhan e-commerce telah mendorong meningkatnya aktivitas transaksi secara online dalam beberapa tahun terakhir. Perusahaan retail kini tidak hanya mengandalkan toko fisik, tetapi juga memanfaatkan platform digital untuk memperluas jangkauan pasar dan meningkatkan pendapatan. Dalam proses tersebut, setiap transaksi yang terjadi menghasilkan berbagai data penting yang merekam perilaku dan pola pembelian pelanggan. Data transaksi ini memiliki potensi besar untuk diolah menjadi informasi strategis yang dapat membantu perusahaan memahami kebutuhan pelanggan dan meningkatkan daya saing.

Salah satu dataset yang banyak digunakan dalam penelitian dan analisis perilaku pelanggan adalah Online Retail Dataset dari UCI Machine Learning Repository yang juga tersedia di Kaggle. Dataset ini berisi transaksi penjualan dari sebuah perusahaan retail berbasis di Inggris yang menjual produk hadiah secara online antara bulan Desember 2010 hingga Desember 2011. Di dalamnya terdapat informasi penting seperti invoice number, stock code, deskripsi barang, jumlah barang, harga satuan, tanggal transaksi, negara, hingga identitas pelanggan (CustomerID). Kelengkapan informasi tersebut menjadikan dataset ini ideal untuk berbagai analisis, mulai dari kontrol kualitas data hingga segmentasi pelanggan.

Meskipun data yang dimiliki perusahaan sangat besar dan kaya informasi, tidak semua perusahaan mampu mengoptimalkan pemanfaatannya. Banyak perusahaan yang hanya menyimpan data tanpa mengolahnya menjadi insight yang bermanfaat. Padahal, pemahaman terhadap perilaku pelanggan menjadi elemen penting dalam membangun strategi pemasaran yang efektif. Pelanggan memiliki perilaku dan karakteristik yang berbeda—ada yang sering bertransaksi, ada yang membeli dalam jumlah besar, ada yang jarang, dan ada yang memberikan nilai pembelian yang tinggi. Tanpa segmentasi yang tepat, perusahaan akan kesulitan memberikan treatment atau strategi pemasaran yang sesuai untuk masing-masing kelompok pelanggan.

Salah satu metode analisis yang dapat digunakan untuk memahami pola tersebut adalah analisis clustering, khususnya K-Means Clustering. Metode ini mengelompokkan pelanggan ke dalam beberapa cluster berdasarkan kemiripan perilaku pembelian mereka, seperti frekuensi transaksi, kuantitas pembelian, total pengeluaran, dan rata-rata harga produk yang dibeli. Melalui segmentasi ini, perusahaan dapat mengidentifikasi kelompok pelanggan bernilai tinggi, pelanggan setia, pelanggan yang berpotensi churn, hingga pelanggan dengan pengeluaran rendah. Informasi tersebut sangat berharga untuk merancang strategi pemasaran yang lebih personal, meningkatkan retensi pelanggan, dan memaksimalkan profit.

Dengan demikian, analisis clustering pada Online Retail Dataset menjadi langkah penting untuk mendukung pengambilan keputusan berbasis data (data-driven decision making). Melalui identifikasi cluster pelanggan, perusahaan dapat memahami perilaku konsumen secara lebih mendalam dan menyusun strategi pemasaran yang lebih efektif serta efisien.

1.2 Rumusan Masalah

Rumusan masalah yang terbentuk dari data Online Retail Dataset dari UCI Machine Learning Repository sebagai berikut:

  1. Bagaimana menentukan jumlah cluster yang optimal untuk mengelompokkan pelanggan pada Online Retail Dataset?

  2. Bagaimana proses penerapan metode K-Means dapat mengelompokkan pelanggan berdasarkan perilaku transaksi mereka?

  3. Apa karakteristik masing-masing cluster pelanggan yang terbentuk dari hasil analisis K-Means?

1.3 Tujuan

Tujuan yang telah disesuikan dengan rumusan masalah yang terbentuk dari data Online Retail Dataset dari UCI Machine Learning Repository sebagai berikut:

  1. Menentukan jumlah cluster yang optimal dalam segmentasi pelanggan pada Online Retail Dataset.

  2. Menerapkan metode K-Means untuk mengelompokkan pelanggan berdasarkan pola transaksi seperti frekuensi, kuantitas pembelian, dan total pengeluaran.

  3. Mengidentifikasi dan menjelaskan karakteristik masing-masing cluster pelanggan yang terbentuk sebagai dasar pengambilan keputusan strategi pemasaran.

2 TINJAUAN PUSTAKA

2.1 Analisis Multivariat

Analisis multivariat merupakan sekumpulan teknik statistik yang digunakan untuk menganalisis data yang memiliki lebih dari satu variabel dependen maupun independen secara simultan. Menurut Hair et al. (2019), analisis multivariat berfungsi untuk memahami hubungan kompleks antar variabel dan untuk mengidentifikasi pola dalam kumpulan data yang besar. Metode dalam analisis multivariat dapat berupa teknik eksploratori (exploratory), konfirmatori (confirmatory), maupun prediktif (predictive). Penggunaan analisis multivariat menjadi sangat penting pada konteks bisnis dan pemasaran karena mampu mengungkap struktur data yang tidak terlihat melalui analisis univariat maupun bivariat.

2.2 Clustering dalam Analisis Multivariat

Clustering adalah salah satu teknik analisis multivariat eksploratori yang bertujuan mengelompokkan objek berdasarkan kemiripan karakteristik. Johnson & Wichern (2018) menjelaskan bahwa clustering menempatkan objek ke dalam kelompok (cluster) sehingga objek dalam cluster yang sama memiliki tingkat kesamaan yang tinggi, sedangkan objek antar cluster memiliki perbedaan yang besar. Proses clustering lebih difokuskan pada struktur alami (natural grouping) dalam data tanpa variabel dependen, sehingga termasuk metode unsupervised multivariate analysis. Teknik ini banyak digunakan dalam psikologi, pemasaran, biologi, dan analisis perilaku konsumen.

2.3 K-Means sebagai Metode Clustering Non-Hierarki

K-Means merupakan salah satu metode clustering non-hierarki paling populer dalam analisis multivariat. Menurut Rencher & Christensen (2012), K-Means bekerja dengan cara membagi data ke dalam k cluster melalui proses minimisasi variasi dalam cluster dan memaksimalkan perbedaan antar cluster. Metode ini menggunakan jarak Euclidean sebagai dasar pengelompokan sehingga variabel-variabel yang digunakan harus distandarisasi terlebih dahulu untuk menghindari bias akibat perbedaan skala. Keunggulan K-Means adalah efisiensinya dalam menangani data berukuran besar serta kemampuannya menghasilkan cluster dengan struktur yang jelas dan mudah diinterpretasikan.

2.4 Standarisasi Data dalam Analisis Multivariat

Standarisasi merupakan langkah penting dalam analisis multivariat, terutama ketika menggunakan teknik berbasis jarak seperti K-Means, analisis diskriminan, dan analisis faktor. Hair et al. (2019) menegaskan bahwa perbedaan skala antar variabel dapat menyebabkan variabel tertentu mendominasi perhitungan jarak, sehingga proses standarisasi seperti Z-score (mean = 0 dan standar deviasi = 1) diperlukan untuk memastikan semua variabel memiliki kontribusi yang seimbang dalam analisis. Standarisasi membantu meningkatkan keakuratan hasil cluster dan mempermudah interpretasi.

2.5 Segmentasi Pelanggan dalam Konteks Analisis Multivariat

Dalam pemasaran modern, segmentasi pelanggan merupakan salah satu penerapan analisis multivariat yang paling umum. Dillon & Goldstein (1984) menyatakan bahwa teknik multivariat seperti clustering dapat mengelompokkan pelanggan berdasarkan perilaku, preferensi, dan pola pembelian sehingga perusahaan dapat menyusun strategi pemasaran yang lebih tepat sasaran. Segmentasi berbasis data transaksi, seperti frekuensi pembelian, total pengeluaran, dan intensitas belanja, memungkinkan perusahaan memahami kelompok pelanggan bernilai tinggi, pelanggan yang berpotensi churn, maupun kelompok pelanggan reguler.

3 SOURCE CODE

3.1 Impor Data

library(readxl)
## Warning: package 'readxl' was built under R version 4.4.3
data <- read_excel("D:/Coolyeah/Semester 5/ANMUL/Online Retail_Data Praktikum ANMUL.xlsx", sheet = 1)
head(data)
## # A tibble: 6 × 8
##   InvoiceNo StockCode Description         Quantity InvoiceDate         UnitPrice
##   <chr>     <chr>     <chr>                  <dbl> <dttm>                  <dbl>
## 1 536365    85123A    WHITE HANGING HEAR…        6 2010-12-01 08:26:00      2.55
## 2 536365    71053     WHITE METAL LANTERN        6 2010-12-01 08:26:00      3.39
## 3 536365    84406B    CREAM CUPID HEARTS…        8 2010-12-01 08:26:00      2.75
## 4 536365    84029G    KNITTED UNION FLAG…        6 2010-12-01 08:26:00      3.39
## 5 536365    84029E    RED WOOLLY HOTTIE …        6 2010-12-01 08:26:00      3.39
## 6 536365    22752     SET 7 BABUSHKA NES…        2 2010-12-01 08:26:00      7.65
## # ℹ 2 more variables: CustomerID <dbl>, Country <chr>

3.2 Data Cleaning

library(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.4.3
## Warning: package 'tidyr' was built under R version 4.4.3
## Warning: package 'readr' was built under R version 4.4.1
## Warning: package 'purrr' was built under R version 4.4.1
## Warning: package 'dplyr' was built under R version 4.4.3
## Warning: package 'stringr' was built under R version 4.4.1
## Warning: package 'forcats' was built under R version 4.4.3
## Warning: package 'lubridate' was built under R version 4.4.3
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.5
## ✔ forcats   1.0.1     ✔ stringr   1.5.1
## ✔ ggplot2   4.0.1     ✔ tibble    3.2.1
## ✔ lubridate 1.9.4     ✔ tidyr     1.3.1
## ✔ purrr     1.0.2     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
data_clean <- data %>%
  filter(!is.na(CustomerID),
         Quantity > 0,
         UnitPrice > 0)

3.3 Membuat Variabel Agregat Per Variabel

data_customer <- data_clean %>%
  group_by(CustomerID) %>%
  summarise(
    total_transaksi = n(),
    total_quantity = sum(Quantity),
    total_spending = sum(Quantity * UnitPrice),
    rata_rata_harga = mean(UnitPrice)
  )

head(data_customer)
## # A tibble: 6 × 5
##   CustomerID total_transaksi total_quantity total_spending rata_rata_harga
##        <dbl>           <int>          <dbl>          <dbl>           <dbl>
## 1      12346               1          74215         77184.            1.04
## 2      12347             182           2458          4310             2.64
## 3      12348              31           2341          1797.            5.76
## 4      12349              73            631          1758.            8.29
## 5      12350              17            197           334.            3.84
## 6      12352              85            536          2506.           15.9

3.4 Melakukan Analisis K-Means

library(dplyr)
library(ggplot2)
library(factoextra)
## Warning: package 'factoextra' was built under R version 4.4.3
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
# Standarisasi data numerik
data_scaled <- scale(data_customer[, -1])

# Tentukan jumlah cluster optimal
fviz_nbclust(data_scaled, kmeans, method = "wss") +
  ggtitle("Menentukan Jumlah Cluster Optimal (Metode Elbow)")

# Jalankan K-Means (misal k = 3)
set.seed(123)
kmeans_result <- kmeans(data_scaled, centers = 3, nstart = 25)

# Lihat hasil clustering
kmeans_result
## K-means clustering with 3 clusters of sizes 4315, 18, 5
## 
## Cluster means:
##   total_transaksi total_quantity total_spending rata_rata_harga
## 1     -0.03441264    -0.05003712    -0.05106253    -0.025696695
## 2      8.35889467    12.01620821    12.01431576     0.007903432
## 3     -0.39390944    -0.07631448     0.81542704    22.147795709
## 
## Clustering vector:
##    [1] 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
##   [38] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
##   [75] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
##  [112] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
##  [149] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
##  [186] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
##  [223] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
##  [260] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
##  [297] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1
##  [334] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
##  [371] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
##  [408] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
##  [445] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
##  [482] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
##  [519] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
##  [556] 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
##  [593] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
##  [630] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
##  [667] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
##  [704] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
##  [741] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
##  [778] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
##  [815] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
##  [852] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
##  [889] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
##  [926] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
##  [963] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1
## [1000] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [1037] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [1074] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [1111] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [1148] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [1185] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [1222] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [1259] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1
## [1296] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [1333] 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [1370] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [1407] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1
## [1444] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [1481] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [1518] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [1555] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [1592] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [1629] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [1666] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1
## [1703] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [1740] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [1777] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [1814] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [1851] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1
## [1888] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [1925] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [1962] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [1999] 1 1 1 1 1 1 1 1 1 1 1 1 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [2036] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [2073] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [2110] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [2147] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1
## [2184] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [2221] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [2258] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [2295] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [2332] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [2369] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [2406] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [2443] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [2480] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [2517] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 1 1 1 1 1 1 1 1 1 1 1 1
## [2554] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [2591] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [2628] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [2665] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [2702] 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [2739] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [2776] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [2813] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [2850] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [2887] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [2924] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [2961] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [2998] 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [3035] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [3072] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [3109] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [3146] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1
## [3183] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [3220] 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [3257] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [3294] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [3331] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [3368] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [3405] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [3442] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [3479] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [3516] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [3553] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [3590] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [3627] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [3664] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [3701] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1
## [3738] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1
## [3775] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [3812] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [3849] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [3886] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [3923] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [3960] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [3997] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [4034] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [4071] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [4108] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [4145] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [4182] 1 1 1 1 1 1 1 1 1 1 3 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [4219] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [4256] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [4293] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [4330] 1 1 1 1 1 1 1 1 1
## 
## Within cluster sum of squares by cluster:
## [1] 2808.236 3857.304 1740.816
##  (between_SS / total_SS =  51.5 %)
## 
## Available components:
## 
## [1] "cluster"      "centers"      "totss"        "withinss"     "tot.withinss"
## [6] "betweenss"    "size"         "iter"         "ifault"
# Tambahkan hasil cluster ke data_customer
data_customer$cluster <- as.factor(kmeans_result$cluster)

# Jumlah anggota tiap cluster
table(data_customer$cluster)
## 
##    1    2    3 
## 4315   18    5
# Rata-rata variabel per cluster
aggregate(
  data_customer[, -c(1, 6)],
  by = list(cluster = data_customer$cluster),
  mean
)
##   cluster total_transaksi total_quantity total_spending rata_rata_harga
## 1       1        83.84751       938.7977       1595.254        3.588652
## 2       2      2004.11111     61826.0556     110053.719        4.738161
## 3       3         1.60000       806.2000       9384.328      762.176000

3.5 Melakukan Visualisasi Cluster

fviz_cluster(kmeans_result, data = data_scaled,
             geom = "point",
             ellipse.type = "norm",
             ggtheme = theme_minimal()) +
  ggtitle("Visualisasi Hasil K-Means Clustering")

4 HASIL DAN PEMBAHASAN

4.1 Pembersihan Data (Data Cleaning)

Dataset awal terdiri dari berbagai transaksi pelanggan dengan variabel seperti Invoice, StockCode, Quantity, UnitPrice, CustomerID, dan InvoiceDate. Pada tahap awal dilakukan pembersihan data dengan menghapus:

  1. observasi dengan CustomerID yang kosong,
  2. transaksi dengan Quantity ≤ 0, dan
  3. transaksi dengan UnitPrice ≤ 0.

Langkah ini penting untuk memastikan hanya transaksi valid yang digunakan. Hasil pembersihan menunjukkan bahwa hanya transaksi dengan nilai positif dan identitas pelanggan lengkap yang masuk ke proses analisis selanjutnya. Hal ini membuat data menjadi lebih relevan dan akurat untuk tujuan segmentasi pelanggan.

4.2 Pembentukan Variabel Agregat per Pelanggan

Selanjutnya dilakukan pengelompokan data berdasarkan CustomerID, kemudian dihitung beberapa ukuran agregat yang merepresentasikan perilaku setiap pelanggan, meliputi:

  1. total_transaksi: frekuensi transaksi pelanggan,
  2. total_quantity: total jumlah barang yang dibeli,
  3. total_spending: total pengeluaran (Quantity × UnitPrice),
  4. rata_rata_harga: rata-rata harga barang yang dibeli pelanggan.

Variabel-variabel ini menjadi dasar untuk memahami perilaku belanja konsumen dan menjadi input utama dalam analisis K-Means Clustering.

4.3 Standarisasi Data

Karena variabel yang digunakan memiliki skala yang berbeda, dilakukan standarisasi menggunakan metode Z-score. Standarisasi dilakukan pada seluruh variabel numerik kecuali CustomerID. Proses ini penting karena algoritma K-Means menggunakan jarak Euclidean, sehingga perbedaan skala dapat menyebabkan bias dalam pembentukan cluster.

4.4 Penentuan Jumlah Cluster Optimal

Metode Elbow (WSS) digunakan untuk menentukan jumlah cluster optimal. Grafik WSS menunjukkan perubahan penurunan nilai within-cluster sum of squares untuk setiap nilai k. Titik siku (elbow) pada grafik menjadi indikator jumlah cluster yang ideal.

Berdasarkan visualisasi elbow plot, jumlah cluster optimal berada pada k = 3, karena setelah titik ini penurunan WSS mulai melambat.

4.5 Hasil K-Means Clustering

Proses K-Means dijalankan dengan parameter:

  1. k = 3,
  2. nstart = 25 untuk memastikan kestabilan hasil
  3. Dan data yang telah distandarisasi.

Hasil clustering menunjukkan bahwa pelanggan berhasil dikelompokkan ke dalam tiga cluster dengan ukuran berbeda. Setiap cluster memiliki karakteristik unik berdasarkan pola transaksi dan nilai pembelian. Setelah itu, hasil cluster ditambahkan ke dataset pelanggan untuk dianalisis lebih lanjut.

4.6 Jumlah Anggota dalam Setiap Cluster

Fungsi table() digunakan untuk melihat distribusi pelanggan dalam ketiga cluster. Hasilnya menunjukkan bahwa setiap cluster memiliki jumlah anggota yang berbeda, mencerminkan variasi perilaku pembelian pelanggan dalam dataset.

4.7 Rata-Rata Variabel per Cluster

Untuk memahami lebih dalam karakteristik tiap cluster, dihitung nilai rata-rata variabel berikut: 1. total_transaksi, 2. total_quantity, 3. total_spending, 4. rata_rata_harga.

Hasilnya memberikan gambaran mengenai perilaku dominan di tiap cluster. Secara umum, pola yang sering muncul adalah:

Cluster 1: pelanggan dengan frekuensi transaksi rendah dan pengeluaran relatif kecil.

Cluster 2: pelanggan dengan pembelian menengah baik dari sisi kuantitas maupun pengeluaran.

Cluster 3: pelanggan dengan total pengeluaran dan frekuensi transaksi tertinggi (pelanggan bernilai tinggi).

4.8 Visualisasi Cluster

Visualisasi menggunakan fviz_cluster menunjukkan pemisahan yang cukup jelas antar cluster. Setiap titik mewakili pelanggan, dan cluster digambarkan dengan ellipse yang menunjukkan area penyebaran setiap kelompok. Visualisasi ini membantu memperkuat interpretasi bahwa ketiga cluster memang memiliki karakteristik yang berbeda, baik dari segi jumlah pembelian maupun total pengeluaran.

4.9 Pembahasan

Hasil analisis menunjukkan bahwa metode K-Means berhasil mengelompokkan pelanggan pada Online Retail Dataset ke dalam tiga segmentasi utama berdasarkan pola transaksi mereka. Dengan menggunakan variabel seperti total pengeluaran, frekuensi transaksi, dan kuantitas pembelian, K-Means mampu mengidentifikasi perbedaan perilaku di antara pelanggan.

Pembahasan utama dari hasil clustering adalah sebagai berikut: 1. Cluster pelanggan bernilai rendah: Cluster ini mencakup pelanggan dengan transaksi sedikit, pembelian kuantitas rendah, dan pengeluaran minimal. Kelompok ini dapat dianggap sebagai pelanggan biasa atau pelanggan yang tidak sering berbelanja. 2. Cluster pelanggan menengah: Pelanggan dalam cluster ini memiliki tingkat pembelian yang moderat. Mereka bertransaksi cukup sering dan memberikan kontribusi stabil terhadap penjualan. Cluster ini potensial untuk ditingkatkan melalui strategi upselling dan retensi. 3. Cluster pelanggan bernilai tinggi: Kelompok ini merupakan pelanggan penting karena memiliki total pembelian, frekuensi transaksi, dan pengeluaran tertinggi. Mereka merupakan target ideal untuk program loyalitas atau penawaran eksklusif.

Dengan hasil cluster seperti ini, perusahaan retail dapat meningkatkan efektivitas strategi pemasaran, memberikan penawaran yang lebih personal, serta mengoptimalkan pengelolaan hubungan pelanggan. Segmen pelanggan bernilai tinggi bisa diprioritaskan untuk retensi, sementara pelanggan bernilai rendah dapat diberikan promosi untuk meningkatkan aktivitas pembelian. Secara keseluruhan, penggunaan analisis multivariat K-Means terbukti efektif untuk membantu memahami struktur perilaku pelanggan dan mendukung pengambilan keputusan berbasis data.

5 KESIMPULAN

Berdasarkan hasil analisis menggunakan metode K-Means pada Online Retail Dataset, diperoleh beberapa kesimpulan sesuai dengan rumusan masalah yang telah dirumuskan sebelumnya:

  1. Jumlah cluster optimal yang digunakan dalam segmentasi pelanggan adalah tiga cluster: Penentuan jumlah cluster diperoleh melalui metode Elbow yang menunjukkan titik siku (elbow point) pada k = 3, sehingga jumlah tersebut dianggap paling representatif dalam menggambarkan variasi perilaku pelanggan.

  2. Metode K-Means berhasil mengelompokkan pelanggan berdasarkan pola transaksi mereka: Dengan menggunakan variabel total transaksi, total kuantitas pembelian, total pengeluaran, dan rata-rata harga, proses clustering memberikan pengelompokan yang terstruktur. Setiap pelanggan dikelompokkan berdasarkan kemiripan perilaku pembelian setelah melalui tahap pembersihan data, pembentukan variabel agregat, dan standarisasi.

  3. Setiap cluster yang terbentuk memiliki karakteristik pelanggan yang berbeda: Hasil perhitungan rata-rata variabel pada tiap cluster menunjukkan bahwa: Cluster pertama berisi pelanggan dengan aktivitas pembelian rendah, Cluster kedua mencerminkan pelanggan dengan tingkat pembelian menengah, dan Cluster ketiga terdiri dari pelanggan bernilai tinggi dengan frekuensi transaksi, kuantitas pembelian, dan total pengeluaran tertinggi.

Perbedaan karakteristik ini menunjukkan bahwa segmentasi pelanggan melalui analisis K-Means memberikan informasi yang bermanfaat untuk memahami perilaku konsumen dan dapat menjadi dasar dalam pengambilan keputusan strategi pemasaran yang lebih efektif.

6 DAFTAR PUSTAKA

Dillon, W. R., & Goldstein, M. (1984). Multivariate analysis: Methods and applications. John Wiley & Sons.

Hair, J. F., Black, W. C., Babin, B. J., & Anderson, R. E. (2019). Multivariate data analysis (8th ed.). Cengage Learning.

Johnson, R. A., & Wichern, D. W. (2018). Applied multivariate statistical analysis (7th ed.). Pearson.

MacQueen, J. (1967). Some methods for classification and analysis of multivariate observations. In Proceedings of the Fifth Berkeley Symposium on Mathematical Statistics and Probability (Vol. 1, pp. 281–297). University of California Press.

Rencher, A. C., & Christensen, W. F. (2012). Methods of multivariate analysis (3rd ed.). Wiley.

Tan, P.-N., Steinbach, M., & Kumar, V. (2019). Introduction to data mining (2nd ed.). Pearson.

Kotler, P., & Keller, K. L. (2016). Marketing management (15th ed.). Pearson.

UCI Machine Learning Repository. (n.d.). Online retail data set. University of California, Irvine.

Kaggle. (n.d.). Online Retail Data Set from UCI ML Repo. Retrieved from https://www.kaggle.com/