Analisis Performa dan Segmentasi Wilayah Berdasarkan Product Type Menggunakan Clustering K-Means (Elbow Method)

Pendahuluan

Pengertian

Clustering adalah proses pengelompokan sekumpulan data ke dalam beberapa kelompok sedemikian rupa sehingga data yang memiliki kemiripan tinggi akan dikelompokkan ke dalam satu cluster, sedangkan data yang berbeda akan ditempatkan di cluster yang lain. Setiap cluster berisi data yang sebisa mungkin memiliki tingkat kemiripan yang tinggi. Tingkat kemiripan ini umumnya ditentukan berdasarkan ukuran jarak—di mana jarak antar data dalam satu cluster diusahakan sekecil mungkin, sedangkan jarak antar cluster dibuat sebesar mungkin. Artinya, elemen-elemen dalam satu cluster harus seragam, dan berbeda dari elemen dalam cluster lainnya. Definisi ini berlandaskan pada asumsi bahwa terdapat sejumlah parameter yang dapat merepresentasikan kemiripan atau perbedaan antar data.

Manfaat Clustering

Clustering merupakan salah satu teknik penting dalam analisis statistik eksploratori yang berguna untuk mengelompokkan data berdasarkan kemiripan karakteristik. Dalam konteks statistika terapan, clustering dapat digunakan untuk segmentasi data dalam berbagai bidang, seperti analisis pasar, perencanaan strategi pemasaran, serta klasifikasi wilayah dalam studi geospasial. Selain itu, metode ini juga berperan dalam pengenalan pola dan identifikasi objek dalam bidang seperti image processing dan computer vision.

Konsep Dasar Clustering

Tujuan utama dari clustering adalah menghasilkan kelompok data (cluster) yang homogen secara internal namun heterogen terhadap kelompok lainnya. Artinya, objek-objek dalam satu cluster memiliki tingkat kesamaan yang tinggi, sedangkan objek-objek antar cluster memiliki perbedaan yang jelas. Ukuran kesamaan ini dihitung secara numerik menggunakan ukuran jarak atau kemiripan. Semakin tinggi kemiripan antar dua objek, maka semakin kecil jaraknya—dan sebaliknya.

Keberhasilan suatu metode clustering sangat dipengaruhi oleh jenis data dan teknik yang digunakan. Dalam analisis statistik, dikenal empat jenis data yang umum digunakan dalam clustering:

  • Data interval, misalnya skor atau nilai suhu

  • Data biner, seperti jawaban ya/tidak

  • Data kategorik (nominal dan ordinal) serta rasio

  • Jenis data lainnya yang dapat diubah ke dalam bentuk numerik

Agar clustering efektif, metode yang digunakan juga harus mampu mengukur seberapa baik hasil pengelompokan tersebut dalam merepresentasikan pola tersembunyi dari data. Salah satu ukuran jarak yang umum digunakan dalam statistika adalah Euclidean Distance, khususnya dalam bentuk weighted jika ingin mempertimbangkan bobot atribut yang berbeda. Euclidean Distance menghitung jarak antar dua titik data berdasarkan nilai dari setiap atribut yang dimiliki. Formula dasar Euclidean Distance adalah sebagai berikut:

\[ \text{Distance}(p, q) = \frac{\sum_{k}^{n} \mu_k \left| p_k - q_k \right|^r}{r} \] Keterangan:

  • \(p\), \(q\) : Dua titik atau objek yang akan dihitung jaraknya

  • \(p_k\), \(q_k\) : Nilai elemen ke-\(k\) dari vektor \(p\) dan \(q\)

  • \(n\) : Jumlah dimensi atau fitur (variabel) dalam data

  • \(\mu_k\) : Bobot (weight) untuk dimensi ke-\(k\); digunakan untuk mengatur pentingnya fitur ke-\(k\)

  • \(r\) : Parameter pangkat Minkowski, menentukan jenis metrik jarak yang digunakan:

    • \(r = 1\) ⟶ Manhattan distance
    • \(r = 2\) ⟶ Euclidean distance
    • \(r = \infty\) ⟶ Chebyshev distance

Rumus ini disebut juga weighted Minkowski distance dan digunakan dalam algoritma clustering seperti K-Means, K-Medoids, dan Hierarchical Clustering untuk mengukur kemiripan antar data.

Jarak adalah pendekatan yang umum dipakai untuk menentukan kesamaan atau ketidaksamaan dua vektor fitur yang dinyatakan dengan ranking. Apabila nilai ranking yang dihasilkan semakin kecil nilainya maka semakin dekat/tinggi kesamaan antara kedua vektor tersebut. Teknik pengukuran jarak dengan metode Euclidean menjadi salah satu metode yang paling umum digunakan. Pengukuran jarak dengan metode euclidean dapat dituliskan dengan persamaan berikut:

\[j(v_1, v_2) = \sqrt{ \sum_{k=1}^{N} \left( v_1(k) - v_2(k) \right)^2 }\]

dimana v1 dan v2 adalah dua vektor yang jaraknya akan dihitung dan N menyatakan panjang vektor.

Clustering K-Means dengan Elbow-Method

Clustering K-Means adalah metode pengelompokan data berbasis partisi yang sederhana dan efisien, di mana data dibagi ke dalam \(k\) cluster berdasarkan kedekatannya dengan titik pusat (centroid). Algoritma ini bekerja dengan meminimalkan jumlah kuadrat jarak antara data dan centroid secara iteratif. Untuk menentukan jumlah cluster optimal \((k)\), digunakan Elbow-Method, yaitu dengan memplot nilai within-cluster sum of squares \((WCSS)\) terhadap jumlah \(k\), dan titik “siku” pada grafik menandakan jumlah cluster terbaik sebelum penurunan WCSS mulai melambat.

Pre-Processing Data Sebelum Klasterisasi

Dalam analisis ini, dilakukan proses klasterisasi untuk mengelompokkan performa dari masing-masing jenis produk, yaitu Coffee, Espresso, Herbal Tea, dan Tea. Tujuan utama dari klasterisasi ini adalah untuk mengidentifikasi segmen-segmen performa produk di berbagai wilayah Amerika Serikat berdasarkan indikator-indikator kunci yang relevan.

Variabel yang Digunakan dalam Klasterisasi

  1. Cost of Goods Sold (COGS) – Variabel ini dipilih untuk menggambarkan besarnya biaya produksi atau pengadaan masing-masing produk. Dengan memahami perbedaan COGS antar wilayah, kita dapat melihat efisiensi biaya yang mungkin memengaruhi profitabilitas produk di tiap negara bagian.
  2. Sales – Penjualan mencerminkan daya serap pasar terhadap produk. Variabel ini menjadi indikator utama dalam mengukur sejauh mana suatu jenis produk diminati di wilayah tertentu, yang penting dalam mengevaluasi keberhasilan pemasaran.
  3. Profit – Laba digunakan untuk menilai performa akhir dari suatu produk setelah mempertimbangkan biaya dan penjualan. Analisis profit memungkinkan kita untuk mengetahui wilayah mana yang memberikan kontribusi tertinggi terhadap keuntungan secara keseluruhan.

Dengan menggunakan ketiga variabel tersebut, analisis ini bertujuan untuk membentuk klaster performa produk yang dapat memberikan wawasan strategis mengenai distribusi dan efektivitas masing-masing jenis produk di berbagai negara bagian.

Menentukan Banyak Cluster dengan Elbow-Method

Langkah pertama dalam proses klasterisasi adalah menentukan jumlah klaster optimal dengan menggunakan Elbow Method. Metode ini dilakukan menggunakan data keseluruhan yang diharapkan dapat mewakili setiap Product Type. Setelah nilai \(k\) (jumlah klaster) ditentukan, dilakukan penerapan algoritma K-Means Clustering untuk setiap kelompok produk.

1.Pilih Variabel

library(readxl)
data <- read_excel("C:/Users/user/OneDrive/Documents/SEM 4/SIM/datasetCM2.xlsx")
data_numeric <- data[, c("COGS","Sales", "Profit")]

2.Cleaning Dataset

data_scaled <- na.omit(data_numeric)

3.Elbow-Method

wss <- vector()
for (k in 1:10) {
  wss[k] <- sum(kmeans(data_scaled, centers = k, nstart = 20)$withinss)
}
plot(1:10, wss, type = "b", pch = 19, frame = FALSE,
     xlab = "Jumlah Cluster (k)", ylab = "Within-Cluster Sum of Squares")

Berdasarkan hasil Elbow Method, jumlah cluster optimal adalah tiga \((k = 3)\). Titik tekuk pada grafik menunjukkan bahwa setelah \(k = 3\), penurunan variasi dalam cluster tidak lagi signifikan. Artinya, data secara alami terbagi ke dalam tiga kelompok yang memiliki karakteristik serupa berdasarkan variabel seperti Cost of Good Sold(COGS), Sales, dan Profit. Model ini cukup efisien untuk menggambarkan struktur data tanpa menambah kompleksitas berlebihan.

Memisahkan data berdasarkan Product Type

Karena tujuan kita adalah untuk mengamati karakteristik wilayah berdasarkan jenis produk, maka data “Coffee Chain” perlu dibagi menjadi empat bagian sesuai dengan masing-masing jenis produk, yaitu Coffee, Espresso, Herbal Tea, dan Tea.

1.Pilih Variabel

library(readxl)
library(dplyr)
selected_df <- read_excel("C:/Users/user/OneDrive/Documents/SEM 4/SIM/datasetCM2.xlsx") %>%
  select(State, `Product Type`, COGS, Sales, Profit) %>%
  rename(ProductType = `Product Type`) %>%
  na.omit()

2.Memisahkan Data Berdasarkan Productype nya

coffee <- selected_df %>% filter(ProductType == "Coffee")
espresso <- selected_df %>% filter(ProductType == "Espresso")
herbal_tea <- selected_df %>% filter(ProductType == "Herbal Tea")
tea <- selected_df %>% filter(ProductType == "Tea")

Jika sudah terpisah data hanya akan mengandung Productype tertentu, Berikut contoh hasil pemisahan data Product Type “Coffee”.

library(DT)
datatable(coffee)

Menghitung Rata-rata COGS, Sales, dan Profit disetiap State

Agar klasterisasi dapat dilakukan, setiap State harus direpresentasikan oleh satu data tunggal. Namun, karena setiap State memiliki lebih dari satu entri, maka dilakukan estimasi nilai COGS, Sales, dan Profit untuk masing-masing State dengan cara menghitung rata-rata dari ketiga variabel tersebut. Nilai rata-rata ini kemudian digunakan sebagai representasi performa masing-masing State dalam proses klasterisasi.

Rata-rata Variable data Coffee

avg_coffee <- coffee %>%
  group_by(State) %>%
  summarise(across(c(COGS, Sales, Profit), ~round(mean(.x, na.rm = TRUE), 2)))

datatable(avg_coffee)

Rata-rata Variable data Espresso

avg_espresso <- espresso %>%
  group_by(State) %>%
  summarise(across(c(COGS, Sales, Profit), ~round(mean(.x, na.rm = TRUE), 2)))

datatable(avg_espresso)

Rata-rata Variable data Herbal Tea

avg_herbal_tea <- herbal_tea %>%
  group_by(State) %>%
  summarise(across(c(COGS, Sales, Profit), ~round(mean(.x, na.rm = TRUE), 2)))

datatable(avg_herbal_tea)

Rata-rata Variable data Tea

avg_tea <- tea %>%
  group_by(State) %>%
  summarise(across(c(COGS, Sales, Profit), ~round(mean(.x, na.rm = TRUE), 2)))

datatable(avg_tea)

Klasterisasi Performa Product Type di Amerika Serikat

Klasterisasi Coffee

1. Mengelompokkan State Berdasarkan Clusternya

data1 <- avg_coffee
data_coffee <- data1[, c("COGS", "Sales", "Profit")]
data_coffee <- na.omit(data_coffee)
set.seed(123) 
k <- 3  # Nilai Elbow k=3
kmeans_coffee <- kmeans(data_coffee, centers = k, nstart = 25)

avg2_coffee <- avg_coffee
avg2_coffee$cluster <- kmeans_coffee$cluster
datatable(avg2_coffee) 

2. Rata-rata Variabel Setiap Cluster

KM_coffee <- aggregate(avg2_coffee[, c("COGS", "Sales", "Profit")], 
          by = list(Cluster = avg2_coffee$cluster), mean)
KM_coffee$COGS <- round(KM_coffee$COGS, 2)
KM_coffee$Sales <- round(KM_coffee$Sales, 2)
KM_coffee$Profit <- round(KM_coffee$Profit, 2)

KM_coffee$Performance <- c("Low", "High", "Medium")

datatable(KM_coffee, options = list(searching = FALSE), rownames = FALSE) %>%
  formatStyle(
    'Performance',
    target = 'cell',
    color = styleEqual(
      c("Low", "High", "Medium"),
      c("red", "green", "orange")))

3. Peta Clusterisasi Performance Product Type Coffee

Klasterisasi Espresso

1. Mengelompokkan State Berdasarkan Clusternya

data2 <- avg_espresso
data_espresso <- data2[, c("COGS","Sales", "Profit")]
set.seed(123) 
k <- 3  # Nilai Elbow k=3
kmeans_espresso <- kmeans(data_espresso, centers = k, nstart = 25)

avg2_espresso <- avg_espresso
avg2_espresso$cluster <- kmeans_espresso$cluster
datatable(avg2_espresso)

2. Rata-rata Variabel Setiap Cluster

KM_Esp <- aggregate(avg2_espresso[, c("COGS", "Sales", "Profit")], 
          by = list(Cluster = avg2_espresso$cluster), mean)
KM_Esp$COGS <- round(KM_Esp$COGS, 2)
KM_Esp$Sales <- round(KM_Esp$Sales, 2)
KM_Esp$Profit <- round(KM_Esp$Profit, 2)

KM_Esp$Performance <- c("Medium", "low", "High")

datatable(KM_Esp, options = list(searching = FALSE), rownames = FALSE) %>%
  formatStyle(
    'Performance',
    target = 'cell',
    color = styleEqual(
      c("Medium", "low", "High"),
      c("orange", "red", "green")))

3. Peta Clusterisasi Performance Product Type Espresso

Klasterisasi Herbal Tea

1. Mengelompokkan State Berdasarkan Clusternya

data3 <- avg_herbal_tea
data_herbal_tea <- data3[, c("COGS","Sales", "Profit")]
set.seed(123) 
k <- 3  # Nilai Elbow k=3
kmeans_herbal_tea <- kmeans(data_herbal_tea, centers = k, nstart = 25)

avg2_herbal_tea <- avg_herbal_tea
avg2_herbal_tea$cluster <- kmeans_herbal_tea$cluster
datatable(avg2_herbal_tea)

2. Rata-rata Variabel Setiap Cluster

KM_herb <- aggregate(avg2_herbal_tea[, c("COGS", "Sales", "Profit")], 
          by = list(Cluster = avg2_herbal_tea$cluster), mean)
KM_herb$COGS <- round(KM_herb$COGS, 2)
KM_herb$Sales <- round(KM_herb$Sales, 2)
KM_herb$Profit <- round(KM_herb$Profit, 2)

KM_herb$Performance <- c("Medium", "High", "Low")

datatable(KM_herb, options = list(searching = FALSE), rownames = FALSE) %>%
  formatStyle(
    'Performance',
    target = 'cell',
    color = styleEqual(
      c("Medium", "High", "Low"),
      c("orange", "green", "red")))

3. Peta Clusterisasi Performance Product Type Herbal Tea

Klasterisasi Tea

1.Mengelompokkan State Berdasarkan Clusternya

data4 <- avg_tea
data_tea <- data4[, c("COGS","Sales", "Profit")]
set.seed(123)  
k <- 3  # Nilai Elbow k=3
kmeans_tea <- kmeans(data_tea, centers = k, nstart = 25)

avg2_tea <- avg_tea
avg2_tea$cluster <- kmeans_tea$cluster
datatable(avg2_tea)

2. Rata-rata Variabel Setiap Cluster

KM_tea <- aggregate(avg2_tea[, c("COGS", "Sales", "Profit")], 
          by = list(Cluster = avg2_tea$cluster), mean)
KM_tea$COGS <- round(KM_tea$COGS, 2)
KM_tea$Sales <- round(KM_tea$Sales, 2)
KM_tea$Profit <- round(KM_tea$Profit, 2)

KM_tea$Performance <- c("High", "Medium", "Low")

datatable(KM_tea, options = list(searching = FALSE), rownames = FALSE) %>%
  formatStyle(
    'Performance',
    target = 'cell',
    color = styleEqual(
      c("High", "Medium", "Low"),
      c("green", "orange", "red")))

3. Peta Clusterisasi Performance Product Type Tea

Kesimpulan

Perbandingan Performa Tipe Produk di Amerika Serikat

Aspek Coffee Espresso Herbal Tea Tea (Reguler)
Sebaran Klaster Tinggi Terfokus di wilayah timur laut Timur laut & sebagian midwest Timur laut & sebagian tengah Lebih merata, termasuk pantai barat
Efisiensi Biaya Sedang Tinggi Sedang Tinggi
Dominasi Wilayah Timur laut, barat kurang dominan Dominasi wilayah urban & timur laut Persebaran cukup merata Persebaran paling merata
Potensi Pasar Tinggi di wilayah tertentu Tinggi di wilayah spesifik (ceruk) Cenderung stabil, tapi tidak terlalu kuat Potensi luas karena stabil dan efisien
Profitabilitas Umum Tertinggi secara total profit Tinggi dan efisien Sedang Cukup tinggi dan efisien

Berdasarkan hasil analisis klaster terhadap empat jenis produk—Coffee, Espresso, Herbal Tea, dan Tea—dapat disimpulkan bahwa masing-masing produk memiliki karakteristik performa yang berbeda-beda di berbagai wilayah.

Produk Tea (reguler) menunjukkan performa yang paling merata dan stabil. Penyebaran wilayah dengan klaster performa tinggi cukup luas, ditambah profitabilitas dan efisiensi biaya yang seimbang, menjadikannya produk dengan kinerja menyeluruh yang paling konsisten. Hal ini menunjukkan bahwa Tea merupakan produk andalan yang layak untuk dipertahankan dan diperluas pemasarannya.

Produk Espresso menonjol dalam hal efisiensi biaya dan profitabilitas tinggi di wilayah-wilayah tertentu, terutama area perkotaan dan timur laut. Meskipun tidak tersebar luas seperti Tea, Espresso menunjukkan margin keuntungan yang besar pada pasar yang spesifik, menjadikannya produk yang cocok difokuskan pada segmen pasar premium atau urban.

Produk Coffee memiliki potensi pasar dan profitabilitas total yang tinggi, dengan performa sangat baik di beberapa wilayah tertentu seperti timur laut. Namun, penyebaran klaster tinggi tidak merata dan masih banyak wilayah yang menunjukkan performa sedang. Artinya, meskipun produk ini memiliki potensi besar, perlu strategi penetrasi pasar lebih lanjut agar keunggulannya dapat lebih tersebar luas.

Sementara itu, Herbal Tea cenderung memiliki performa yang stabil namun tidak terlalu menonjol. Klaster tinggi dan sedang tersebar secara moderat, namun tidak ada keunggulan signifikan yang membuatnya dominan di wilayah tertentu. Produk ini tampaknya memiliki ceruk pasar yang loyal, namun kurang kompetitif dibandingkan ketiga produk lainnya.

Rekomendasi Strategis

  • Fokus ekspansi untuk Coffee dan Tea ke wilayah-wilayah dengan klaster performa sedang.

  • Pertahankan dominasi Espresso di pasar urban atau segmen premium.

  • Lakukan pengembangan produk atau promosi tambahan untuk Herbal Tea agar daya saingnya meningkat.