Pendahuluan

Latar Belakang

Penjualan kopi dengan menganalisis keuntungannya menjadi salah satu indikator penting dalam mengevaluasi efektivitas strategi bisnis. profit atau laba bersih merupakan keuntungan yang diperoleh dari hasil penjualan produk (Sales) setelah dikurangi seluruh biaya, termasuk Cost of Goods Sold (COGS) dan pengeluaran Marketing. Melalui analisis profit, perusahaan dapat memperoleh wawasan mengenaisegmen pasar yang memberikan kontribusi keuntungan tertinggi maupun yang menyebabkan kerugian.

Tujuan analisis ini adalah untuk mengelompokkan data penjualan untuk mengevaluasi profitabilitas berdasarkan variabel COGS, Marketing, Sales dan Profit pada lini produk Beans di negara bagian Ohio, Amerika Serikat. Analisis dilakukan menggunakan pendekatan clustering, yaitu dengan menerapkan metode K-Means Clustering. Untuk menentukan jumlah klaster (k) yang optimal, menggunakan metode Elbow.

Tinjauan Pustaka

Metode Elbow

Metode Elbow adalah metode untuk mendapatkan jumlah klaster yang optimal dimana pada plotnya akan membentuk siku pada suatu titik (Ekasetya and Jananto 2020). Dimana Sum of Square (SSE) digunakan sebagai acuan untuk menentukan klaster yang optimal, akan ada klaster yang mengalami penurunan paling ekstrim yang dilanjutkan dengan nilai K yang akan turun secara perlahan-lahan sampai nilai k stabil (Umargono and Gunawan 2020). SSE adalah nilai menunjukkan seberapa dekat titik data terhadap pusat klaster mereka. Semakin kecil SSE, semakin baik. SSE didapat dengan persamaan pada rumus berikut:

\[ SSE = \sum_{i = 1}^{k}\sum_{x_i\in C_i}D(x_i - C_i)^2 \]

Keterangan:

  • \(k\) = jumlah klaster
  • \(x_i \in C_i\) = titik data \(x_i\) yang berada dalam klaster \(C_i\)
  • \(C_i\) = pusat klaster ke-\(i\)
  • \(D(x_i , C_i)\) = jarak dari titik \(x_i\) ke pusat klaster \(C_i\)

Algoritma K-Means Clustering

Algoritma K-Means merupakan salah satu metode yang mengelompokkan data nonhierarki (sekatan) yang berusaha mempartisi data menjadi bentuk dua atau lebih kelompok (Maori 2023).

berdasarkan (Ekasetya and Jananto 2020) langkah-langkah dalam menerapkan metode algoritma K-Means pada analisis ini sebagai berikut:

  1. Menentukan jumlah klaster dengan menggunakan metode Elbow.
  2. Menentukan titik pusat awal klaster (K centroid) secara acak.
  3. Menghitung jarak objek ke seluruh centroid, yang telah ditentukan. jarak yang digunakan pada analisis ini adalah Euclidian Distance, dengan rumus sebagai berikut:

\[ d(x, y) = \sqrt\sum_{i=1}^{n}(x_i - y_i)^2 \] Keterangan:

  • \(x_i\) = nilai \(x\) ke-\(i\)
  • \(y_i\) = nilai \(y\) ke-\(i\)
  • \(n\) = banyaknya nilai
  1. Mengelompokkan obyek ke klaster berdasarkan jarak terdekat terhadap titik pusat (centroid)
  2. menentukan dan menghitung centroid baru menggunakan hasil nilai rata-rata dari objek yang termasuk dalam klaster tersebut. Menggunakan rumus sebagai berikut:

\[ C_k = \frac{1}{n_k} \sum d_i \] Keterangan:

  • \(C_k\) = centroid klaster ke-k
  • \(n_k\) = jumlah objek klaster k
  • \(d_i\) = nilai data jarak dalam setiap klaster
    langkah 3 hingga 5 diulang terus secara iteratif hingga posisi centroid tidak lagi mengalami perubahan signifikan atau jumlah iterasi maksimum tercapai. Dengan demikian, algoritma akan menghasilkan pengelompokkan data yang stabil dan optimal.

Metodologi

Data

Dataset yang digunakan dalam analisis adalah data Coffee Chain yaitu data mengenai penjualan kopi di market yang tersebar di beberapa negara bagian Amerika Serikat. Dataset Coffee Chain memiliki total 4248 baris dan memiliki 20 kolom (variabel). Dataset yang digunakan dapat dilihat pada tabel 1 berikut:

library(readxl) # library r untuk import data dalam format excel
library(DT) # library r untuk menampilkan data dalam bentuk tabel
coffee_data <- read_excel("D:/Kuliah UNS/Semester 4/Sistem Informasi Manajemen/3. CM1/3. CM1 - Coffee Chain Datasets.xlsx")

datatable(data = coffee_data, # untuk menampilkan data
          options = list(
            pageLength = 5,
            scrollX = TRUE
  ),
  caption = htmltools::tags$caption(
    style = 'caption-side: top; text-align: left; font-weight: bold; font-size: 18px;
    color : black;',
    'Tabel 1. Data Coffee Chain'
    ))

Data Preprocessing

Seleksi Data

Variabel yang digunakan dalam analisis ini adalah COGS (Biaya Produksi Aktual), Marketing (Biaya Promosi Aktual), Sales (Pendapatan), dan Profit (Keuntungan Bersih). Variabel tersebut dipilih karena mencerminkan hasil performa bisnis secara langsung, sesuai dengan tujuan segmentasi untuk strategi dan pemasaran. Setelah memilih variabel data yang telah dipilih di tampilkan pada tabel 2 berikut:

library(dplyr) # library r untuk manipulasi data
beans_data <- coffee_data %>% # untuk memfilter data berdasarkan Ohio dan Beans
  filter(State == "Ohio", `Product Line` == "Beans")

beans_ohio_data <- beans_data %>% # untuk mengambil variabel yang diperlukan
  select(Marketing, COGS, Sales, Profit)

datatable(data = beans_ohio_data, # untuk menampilkan data
          options = list(pageLength = 5),
          caption = htmltools::tags$caption(
    style = 'caption-side: top; text-align: left; font-weight: bold; font-size: 18px;
    color : black;',
    'Tabel 2. Data Lini Produk Beans di Ohio'
          ))

Transformasi Data

Perhitungan K-Means sensitif terhadap perbedaan skala antar variabel, sehingga data dilakukan standarisasi menggunakan z-score untuk memastikan semua variabel memiliki skala yang sama (Ekasetya and Jananto 2020). persamaan z-score sebagai berikut:

\[ z = \frac{x - \mu}{\sigma} \] Keterangan:

  • \(x\) = nilai aktual sampel
  • \(\mu\) = rata-rata dari sampel
  • \(\sigma\) = standar deviasi
ohio_scaled <- scale(beans_ohio_data)

Pembersihan Data

Keberadaan outlier dan data hilang pada dataset dapat menyebabkan rendahnya hasil akurasi pada proses klasifikasi. Perhitungan K-Means memerlukan nilai numerik untuk semua variabel (misalnya, Sales dan Marketing). Jika ada NA (missing value), perhitungan jarak seperti \(\sqrt((x1 - c1)^2 + (x2 - c2)^2)\) tidak dapat dilakukan karena nilai NA tidak valid (Sugriyono and Siregar 2020).

sum(is.na(ohio_scaled))
## [1] 0
# apabila terdapat data hilang, maka gunakan "na.om(data)"

Hasil dan Pembahasan

Untuk mengetahui jumlah klaster (k) yang optimal, menggunakan metode elbow sebagai berikut:

library(factoextra) # library r untuk melakukan perhitungan dan visualisasi K-Means

elbow_plot <- fviz_nbclust(
  ohio_scaled, 
  FUNcluster = kmeans, 
  method = "wss") +
labs(
    title = "Gambar 1. Plot Elbow Berdasarkan Nilai k",
    x = "Jumlah Klaster (k)",
    y = "Total Within Sum of Squares (WSS)"
  ) +
  theme_minimal() # supaya tambilan plot lebih bersih

print(elbow_plot)

Untuk mengetahui hasil dari SSE dari setiap klaster yang dihasilkan diperoleh sebagai berikut:

library(tidyverse) # library r untuk keperluan perhitungan kompleks data sains

elbow <- function(k) {
  kmeans(ohio_scaled, k, nstart = 50)$tot.withinss
}

k_value <- 1:10
SSE_value <- map_dbl(k_value, elbow)

SSE_table <- data.frame(
  k = 1:10, 
  SSE = SSE_value,
  Selisih = c(NA, abs(diff(SSE_value)))
)

print(SSE_table)
##     k        SSE    Selisih
## 1   1 476.000000         NA
## 2   2 117.653964 358.346036
## 3   3  34.943700  82.710264
## 4   4  26.838759   8.104941
## 5   5  21.064857   5.773902
## 6   6  16.747398   4.317459
## 7   7  12.464368   4.283030
## 8   8  10.784045   1.680323
## 9   9   9.404371   1.379674
## 10 10   7.868413   1.535958

Berdasarkan hasil plot menggunakan metode Elbow pada Gambar 1, jumlah klaster yang optimal ditentukan pada saat k = 3. Hal ini terlihat dari adanya penurunan nilai SSE (Sum of Squared Error) yang sangat signifikan hingga membentuk “siku” pada titik tersebut. Penurunan ekstrem ini mengindikasikan bahwa penambahan klaster hingga k = 3 memberikan pengelompokan yang jauh lebih baik dibandingkan ketika k = 1 atau k = 2. Setelah titik k = 3, penurunan nilai SSE cenderung melandai, sehingga penambahan klaster selanjutnya tidak memberikan peningkatan yang signifikan terhadap kualitas klasterisasi. Dengan kata lain, SSE telah mencapai nilai yang cukup optimal pada k = 3, menunjukkan bahwa data dalam masing-masing klaster sudah cukup dekat dengan pusat klasternya. Oleh karena itu, k = 3 dipilih sebagai jumlah klaster yang paling tepat untuk analisis ini.

Karena diketahui nilai k yang optimal adalah ketika k = 3, maka hasil untuk klaster sebagai berikut:

kmeans_result <- kmeans(ohio_scaled, centers = 3, nstart = 50)
kmeans_result$size
## [1] 72 24 24

Berdasarkan hasil klasterisasi K-Means dengan k = 3, diperoleh bahwa klaster 2 dan klaster 3 masing-masing berisi 24 data, sementara klaster 1 memiliki jumlah data terbanyak yaitu 72 data. Bentuk visualisasi dari setiap klaster ditunjukkan pada Gambar 2.

fviz_cluster(kmeans_result, data = ohio_scaled,
             geom = "point", 
             ggtheme = theme_minimal()) + labs(
    title = "Gambar 2. Visualisasi Klaster K = 3")

Untuk mengetahui secara detail produk apa saja yang berada di tiap-tiap klasternya, ditunjukkan pada tabel 3.

beans_data$Klaster <- as.factor(kmeans_result$cluster)

datatable(beans_data, # untuk menampilkannya dalam bentuk tabel hasil klaster
          options = list(pageLength = 5,
                         scrollX = TRUE),
          caption = htmltools::tags$caption(
    style = 'caption-side: top; text-align: left; font-weight: bold; font-size: 18px;
    color : black;',
    'Tabel 3. Data Hasil Klaster'
          )
    )

Hasil masing-masing variabel dari setiap klaster ditunjukkan sebagai berikut:

rerata_tiap_klaster <- beans_data %>%
  group_by(Klaster) %>%
  summarise(
    "Jumlah tiap Klaster k" = n(),
    "rata-rata Profit" = mean(Profit),
    "rata-rata Sales" = mean(Sales),
    "rata-rata Marketing" = mean(Marketing),
    "rata-rata COGS" = mean(COGS)
  )

datatable(rerata_tiap_klaster, 
          options = list(
            scrollX = TRUE),# menampilkan hasil statstik deskriptif ke bentuk tabel
          rownames = FALSE,)

Berdasarkan hasil rata-rata masing-masing klaster, Klaster 2 menunjukkan performa terbaik dalam hal profit, dengan rata-rata profit sebesar 111,33, namun memerlukan biaya COGS dan anggaran marketing yang juga tinggi, yaitu 158,5 dan 43,83. Hal ini menunjukkan bahwa Klaster 2 menghasilkan profit tinggi tetapi dengan biaya operasional yang besar.

Klaster 1 memiliki profit yang sedang (27,81), namun dengan biaya marketing paling rendah (16,75) dan COGS sedang (50). Ini mengindikasikan bahwa klaster ini cukup efisien, meskipun profitnya tidak setinggi Klaster 2.

Sementara itu, Klaster 3 menunjukkan kondisi yang kurang menguntungkan, yaitu dengan rata-rata profit negatif (-5,46). Padahal, rata-rata sales Klaster 3 (122,29) sedikit lebih tinggi dibanding Klaster 1 (120,14), dan biaya marketing-nya juga tinggi (44,92). Ini mengindikasikan adanya ketidakefisienan dalam proses penjualan atau pengeluaran biaya yang tidak sebanding dengan pendapatan yang dihasilkan.

Kesimpulan

Berdasarkan penerapan metode K-Means Clustering pada lini produk “Beans” di State Ohio dengan menggunakan variabel Sales, Marketing, COGS, dan Profit, diperoleh jumlah klaster yang optimal ketika k = 3, setiap klaster masing-masing merepresentasikan karakteristik berbeda dari segi biaya operasional dan hasil dari profitabilitasnya. Dapat diambil kesimpulan sebagai berikut:

  1. Klaster 2 merupakan segmen pelanggan atau unit dengan Profit tertinggi, namun diiringi dengan pengeluaran biaya untuk COGS dan Marketing yang tinggi. Ini menunjukkan potensi besar namun juga memerlukan strategi efisiensi biaya.
  2. Klaster 1 menunjukkan Profit sedang dengan biaya yang cukup rendah, menandakan adanya efisiensi operasional, meskipun skalanya belum sebesar Klaster 2.
  3. Klaster 3 menunjukkan Profit negatif meskipun nilai sales-nya cukup tinggi, sehingga dapat disimpulkan terjadi inefisiensi atau pemborosan biaya yang perlu diperbaiki.

Melalui analisis ini, perusahaan dapat merumuskan strategi pemasaran dan manajemen biaya yang berbeda-beda sesuai dengan karakteristik tiap klaster untuk meningkatkan profitabilitas.

Daftar Pustaka

Ekasetya, V. A., and A. Jananto. 2020. “Klusterisasi Optimal Dengan Elbow Method Untuk Pengelompokkan Data Kecelakaan Lalu Lintas Di Kota Semarang.” Dinamika Informatika.
Maori, N. A. 2023. “Metode Elbow Dalam Optimasi Jumlah Cluster Pada k-Means Clustering.” Jurnal SIMETRIS.
Sugriyono., and M. U. Siregar. 2020. “Prapemrosesan Klasifikasi Algoritma kNN Menggunakan k-Means Dan Matriks Jarak Untuk Dataset Hasil Studi Mahasiswa.” Jurnal Teknologi Dan Sistem Komputer. https://doi.org/10.14710/jtsiskom.2020.13874.
Umargono, Suseno, E., and V. S. K. Gunawan. 2020. “K-Means Clustering Optimization Using the Elbow Method and Early Centroid Determination Based-on Mean and Median.” Science and Technology Publications. https://doi.org/10.5220/0009908402340240.