Tugas Individu UAS
STA1381 - Pengantar Sains Data

Pendahuluan

Analisis gerombol (cluster analysis) merupakan salah satu metode analisis yang digunakan untuk mengelompokan amatan ke dalam beberapa kelompok tertentu sehingga dapat dibedakan dengan amatan-amatan lain. Dengan melakukan analisis gerombol, diharapkan dapat ditemukan amatan-amatan yang relatif homogen dalam gerombol yang sama dibandingkan dengan gerombol yang lain (Utari dan Hanun 2021).

Terdapat dua jenis analisis gerombol yang sering kali digunakan, yaitu analisis gerombol hierarki dan nonhierarki. Pada metode hierarki, setidaknya terdapat lima jenis algoritma yang digunakan untuk membentuk gerombol data, antara lain single linkage, complete linkage, average linkage, centroid linkage, dan Ward’s linkage. Sementara itu, pada metode nonhierarki, dilakukan penempatan amatan pada suatu gerombol tertentu hingga membentuk sejumlah \(k\) gerombol. Metode ini seringkali disebut sebagai metode k-means (Astuti dan Untari 2017).

Pra-Processing Data

Memanggil Package di R

Untuk melakukan proses analisis gerombol, diperlukan beberapa library untuk menunjang proses analisis data sebagai berikut,

library(factoextra)
library(ggplot2)

Impor Data

Data yang digunakan adalah data pelanggan pada sebuah pusat perbelanjaan dalam format csv dengan proses pemanggilan data menggunakan fungsi read.csv sebagai berikut,

mall <- read.csv("D:/DATA AKMAL/IPB/Semester 5/Pengantar Sains Data/Pertemuan 12/Data Mall_Customer.csv")
tidyr::tibble(mall)
## # A tibble: 200 × 5
##    CustomerID Genre    Age Annual.Income Spending.Score
##         <int> <chr>  <int>         <int>          <int>
##  1          1 Male      19            15             39
##  2          2 Male      21            15             81
##  3          3 Female    20            16              6
##  4          4 Female    23            16             77
##  5          5 Female    31            17             40
##  6          6 Female    22            17             76
##  7          7 Female    35            18              6
##  8          8 Female    23            18             94
##  9          9 Male      64            19              3
## 10         10 Female    30            19             72
## # … with 190 more rows
str(mall)
## 'data.frame':    200 obs. of  5 variables:
##  $ CustomerID    : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ Genre         : chr  "Male" "Male" "Female" "Female" ...
##  $ Age           : int  19 21 20 23 31 22 35 23 64 30 ...
##  $ Annual.Income : int  15 15 16 16 17 17 18 18 19 19 ...
##  $ Spending.Score: int  39 81 6 77 40 76 6 94 3 72 ...

Analisis gerombol pada data pelanggan di atas dilakukan terhadap tiga peubah, yaitu peubah Age yang menjelaskan usia pelanggan, Annual.Income yang menjelaskan besar pengeluaran tahunan pelanggan, serta Spending.Score yang menjelaskan indeks pengeluaran pelanggan selama berbelanja pada pusat perbelanjaan yang dimaksud. Dengan demikian, perlu dilakukan pra-processing data sebagai berikut,

mall.ok <- mall[,-c(1,2)]
head(mall.ok)
##   Age Annual.Income Spending.Score
## 1  19            15             39
## 2  21            15             81
## 3  20            16              6
## 4  23            16             77
## 5  31            17             40
## 6  22            17             76

Standardisasi Satuan Peubah

Langkah pra-processing data selanjutnya yang perlu dilakukan adalah standardisasi satuan peubah. Hal ini perlu dilakukan karena ketiga peubah yang digunakan memiliki ketidaksamaan satuan dan range nilai sehingga sangat mungkin untuk menimbulkan hasil analisis yang tidak valid dan bias, terutama pada peubah dengan satuan yang relatif besar, apabila tidak ditangani. Proses standardisasi satuan ini dilakukan dengan sebaran normal terhadap rata-rata dan standar deviasi data dengan sintaks sebagai berikut,

mall.std <- scale(mall.ok)

apply(mall.std, 2, mean)
##            Age  Annual.Income Spending.Score 
##  -1.016906e-16  -8.144310e-17  -1.096708e-16
apply(mall.std, 2, sd)
##            Age  Annual.Income Spending.Score 
##              1              1              1

Eksplorasi Data

Sebagai langkah awal mengenali data yang digunakan, perlu dilakukan proses eksplorasi data terhadap sebaran seluruh peubah yang digunakan menggunakan visualisasi histogram sebagai berikut.

hist(mall.ok$Age, xlab = "Usia", ylab = "Jumlah Pelanggan", 
     main = "Sebaran Usia Pelanggan", breaks = 10)
abline(v = mean(mall.ok$Age), col="red", lwd=3, lty=2)

Berdasarkan histogram di atas, dapat diamati bahwa pelanggan yang berbelanja di pusat perbelanjaan yang dimaksud memiliki sebaran yang menjulur ke kanan dengan rata-rata usia di sekitar angka 38-39 tahun. Hal ini mengindikasikan bahwa konsumen pusat perbelanjaan tersebut didominasi oleh generasi milenial (20-40 tahun).

hist(mall.ok$Annual.Income, xlab = "Pendapatan Tahunan", 
     ylab = "Jumlah Pelanggan", main = "Sebaran Pendaparan Tahunan Pelanggan", 
     breaks = 10)
abline(v = mean(mall.ok$Annual.Income), col="red", lwd=3, lty=2)

Berdasarkan histogram di atas, dapat diamati bahwa sebaran pendapatan pelanggan selama setahun menyebar menjulur ke kanan dengan rata-rata di sekitar angka 60. Dengan demikian, dapat diketahui bahwa mayoritas pelanggan yang berbelanja di pusat perbelanjaan yang dimaksud merupakan pelanggan berpenghasilan relatif menengah hingga sedikit di atas rata-rata.

hist(mall.ok$Spending.Score, xlab = "Indeks Pengeluaran", 
     ylab = "Jumlah Pelanggan", main = "Sebaran Pengeluaran Pelanggan", 
     breaks = 10)
abline(v = mean(mall.ok$Spending.Score), col="red", lwd=3, lty=2)

Berdasarkan histogram di atas, dapat diketahui bahwa secara umum pengeluaran pelanggan di pusat perbelanjaan yang dimaksud menyebar relatif normal. Hal ini mengindikasikan bahwa tidak ada anomali tertentu pada proses jual-beli barang-barang di pusat perbelanjaan tersebut.

Analisis Gerombol Metode Hierarki

Pada analisis gerombol dengan metode hierarki, akan dilakukan penentuan jumlah gerombol optimum dengan empat jenis konsep jarak, yaitu complete linkage, avegare linkage, centroid linkage, dan single linkage.

Penentuan Gerombol dengan Metode Dendogram

Langkah pertama yang akan dilakukan adalah menentukan jenis konsep jarak yang terbaik dengan mengamati partisi gerombol yang terbuat melalui dendogram secara eksploratif. Dengan menggunakan fungsi fviz_dend, didapat hasil sebagai berikut,

fviz_dend(hclust(dist(mall.std, method = "euclidean"), method = "complete"),
          main = "Complete Linkage Clustering Dendogram")
## Warning: The `<scale>` argument of `guides()` cannot be `FALSE`. Use "none" instead as
## of ggplot2 3.3.4.
## ℹ The deprecated feature was likely used in the factoextra package.
##   Please report the issue at <https://github.com/kassambara/factoextra/issues>.

fviz_dend(hclust(dist(mall.std, method = "euclidean"), method = "average"),
          main = "Average Linkage Clustering Dendogram")

fviz_dend(hclust(dist(mall.std, method = "euclidean"), method = "centroid"),
          main = "Centroid Linkage Clustering Dendogram")

fviz_dend(hclust(dist(mall.std, method = "euclidean"), method = "single"),
          main = "Single Linkage Clustering Dendogram")

Berdasarkan partisi gerombol yang teramati dengan dendogram di atas, dapat diamati bahwa konsep jarak complete linkage dan average linkage menghasilkan partisi yang terbagi secara proporsional.

Penentuan Gerombol dengan Metode Silhouette

Setelah secara eksploratif didapat konsep jarak complete linkage dan average linkage sebagai konsep jarak yang proporsional, langkah selanjutnya adalah menentukan metode yang terbaik dengan Silhouette. Metode ini dapat dilakukan dengan menggunakan fungsi fviz_nbclust dengan sintaks sebagai berikut,

fviz_nbclust(mall.std, FUNcluster = hcut, method = "silhouette", 
             hc_method = "complete", hc_metric="euclidean")

fviz_nbclust(mall.std, FUNcluster = hcut, method = "silhouette", 
             hc_method = "average", hc_metric="euclidean")

Berdasarkan grafik Silhouette di atas, diketahui bahwa kedua konsep jarak menghasilkan jumlah gerombol optimum yang sama, yaitu sejumlah 5 gerombol. Penentuan konsep jarak terbaik yang akan digunakan dilakukan dengan mengamati nilai average Silhouette width (sumbu \(y\)) yang terkecil. Dengan demikian, konsep jarak yang terbaik untuk data pelanggan di atas adalah jarak complete linkage.

Interpretasi Gerombol

Setelah didapati bahwa melalui metode analisis gerombol hierarki, jumlah gerombol yang optimum adalah sejumlah 5 gerombol, setiap amatan (pelanggan) dapat dikelompokkan berdasarkan gerombol-gerombol yang paling menjelaskan karakteristiknya sebagai berikut,

hc.mall <- eclust(mall.ok, stand = TRUE, FUNcluster = "hclust", k=5, 
                  hc_method = "complete", hc_metric = "euclidean", graph = F)
hc.mall$cluster
##   [1] 1 2 1 2 1 2 1 2 3 2 3 2 3 2 1 2 1 2 3 2 1 2 3 2 3 2 3 1 3 2 3 2 3 2 3 2 3
##  [38] 2 3 2 3 2 3 1 3 2 3 1 1 1 3 1 1 3 3 3 3 3 1 3 3 1 3 3 3 1 1 3 1 1 3 3 3 3
##  [75] 3 1 1 1 1 3 3 1 3 3 1 3 3 1 1 3 3 1 3 1 1 1 3 1 3 1 1 3 3 1 3 1 3 3 3 3 3
## [112] 1 1 1 1 1 3 3 3 3 1 1 1 4 1 4 5 4 5 4 5 4 1 4 5 4 5 4 5 4 5 4 1 4 5 4 5 4
## [149] 5 4 5 4 5 4 5 4 5 4 5 4 5 4 5 4 5 4 5 4 5 4 5 4 5 4 5 4 5 4 5 4 5 4 5 4 5
## [186] 4 5 4 5 4 5 4 5 4 5 4 5 4 5 4

Selanjutnya, amatan-amatan ini dapat divisualisasikan dalam sebuah cluster plot dua dimensi sebagai berikut,

fviz_cluster(hc.mall)

aggregate(mall.ok, by=list(cluster=hc.mall$cluster), FUN = mean)
##   cluster      Age Annual.Income Spending.Score
## 1       1 28.35417      50.29167       45.93750
## 2       2 24.80952      25.61905       80.23810
## 3       3 55.33333      47.31579       41.08772
## 4       4 32.69231      86.53846       82.12821
## 5       5 41.68571      88.22857       17.28571

Berdasarkan visualisasi di atas, teramati lima gerombol dengan lima karakteristik yang berbeda, yaitu:

  1. Cluster 1: pelanggan usia muda (21-30 tahun), berpenghasilan menengah ke atas, dan tidak terlalu konsumtif.

  2. Cluster 2: pelanggan usia muda, berpengasilan rendah, tetapi sangat konsumtif.

  3. Cluster 3: pelanggan lanjut usia (> 50 tahun), berpenghasilan menengah ke atas, dan tidak terlalu konsumtif.

  4. Cluster 4: pelanggan usia mid-career (31-50 tahun), berpenghasilan tinggi, dan sangat konsumtif.

  5. Cluster 5: pelanggan usia mid-career, berpenghasilan tinggi, tetapi tidak konsumtif.

Analisis Gerombol Metode Nonhierarki (K-means)

Analisis kedua yang digunakan adalah analisis gerombol dengan metode nonhierarki, lebih spesifik lagi yaitu metode k-means. Penentuan banyaknya gerombol optimum pada metode nonhierarki dilakukan secara aglomeratif, bukan secara eksploratif seperti metode hierarki.

Penentuan Gerombol dengan Within Sum Square

Terdapat beberapa metode yang dapat digunakan untuk menentukan jumlah gerombol secara aglomeratif pada metode analisis gerombol nonhierarki. Pada kesempatan kali ini, penentuan jumlah gerombol optimum dilakukan dengan metode within sum square menggunakan fungsi fviz_nbclust sebagai berikut,

fviz_nbclust(mall.std, FUNcluster = kmeans, method = "wss")

Berdasarkan grafik di atas, jumlah gerombol optimum dapat ditentukan secara subjektif dengan menentukan patahan pada grafik. Dengan demikian, secara subjektif, ditentukan bahwa jumlah gerombol optimum menggunakan metode within sum square adalah sejumlah 6 gerombol.

Interpretasi Gerombol

Setelah didapati bahwa melalui metode analisis gerombol nonhierarki, jumlah gerombol yang optimum adalah sejumlah 6 gerombol, setiap amatan (pelanggan) dapat dikelompokkan berdasarkan gerombol-gerombol yang paling menjelaskan karakteristiknya sebagai berikut,

kmeans.mall <- eclust(mall.ok, stand = TRUE, FUNcluster = "kmeans", 
                      k=6, graph = F)
kmeans.mall$cluster
##   [1] 6 3 6 3 6 3 6 3 2 3 2 3 2 3 6 3 6 3 2 3 6 3 2 3 2 3 2 3 6 3 2 3 2 3 2 3 2
##  [38] 3 6 3 2 3 2 6 2 3 2 6 6 6 2 6 6 2 2 2 2 2 6 2 2 6 2 2 2 6 2 2 6 6 2 2 2 2
##  [75] 2 6 2 6 6 2 2 6 2 2 6 2 2 6 6 2 2 6 2 6 6 6 2 6 2 6 6 2 2 6 2 6 2 2 2 2 2
## [112] 6 6 6 6 6 2 2 2 2 6 6 5 5 6 5 4 5 4 5 4 5 6 5 1 5 4 5 1 5 4 5 6 5 1 5 4 5
## [149] 1 5 4 5 4 5 4 5 1 5 1 5 4 5 1 5 4 5 4 5 1 5 4 5 1 5 4 5 4 5 4 5 1 5 4 5 4
## [186] 5 4 5 4 5 1 5 1 5 4 5 4 5 1 5

Selanjutnya, amatan-amatan ini dapat divisualisasikan dalam sebuah cluster plot dua dimensi sebagai berikut,

fviz_cluster(kmeans.mall)

km <- aggregate(mall, by=list(cluster=kmeans.mall$cluster), FUN = mean)
km[,-c(2,3)]
##   cluster      Age Annual.Income Spending.Score
## 1       1 30.46154      89.46154       13.38462
## 2       2 55.54386      47.94737       41.89474
## 3       3 25.27273      25.72727       79.36364
## 4       4 48.31818      87.50000       19.59091
## 5       5 32.87500      86.10000       81.52500
## 6       6 27.69565      49.58696       44.34783

Berdasarkan visualisasi di atas, teramati lima gerombol dengan lima karakteristik yang berbeda, yaitu:

  1. Cluster 1: pelanggan usia mid-career (31-50 tahun), berpenghasilan tinggi, tetapi tidak konsumtif.

  2. Cluster 2: pelanggan lanjut usia (> 50 tahun), berpenghasilan menengah ke atas, dan tidak terlalu konsumtif.

  3. Cluster 3: pelanggan usia muda (21-30 tahun), berpengasilan rendah, tetapi sangat konsumtif.

  4. Cluster 4: pelanggan usia mid-career, berpenghasilan tinggi, tetapi tidak konsumtif.

  5. Cluster 5: pelanggan usia mid-career, berpengasilan tinggi, dan sangat konsumtif.

  6. Cluster 6: pelanggan usia muda, berpengasilan menengah ke atas, dan tidak terlalu konsumtif.

Kesimpulan dan Saran

Berdasarkan analisis gerombol dengan metode hierarki maupun nonhierarki, dapat disimpulkan bahwa hasil clustering terbaik adalah hasil penggerombolan dengan metode hierarki. Kesimpulan ini menimbang bahwa terdapat dua klaster pada hasil penggerombolan nonhierarki yang memiliki karakteristik serupa (klaster 1 dan 4 pada hasil analisis nonhierarki), yaitu gerombol pelanggan yang berada dalam usia mid-career (31-50 tahun), berpenghasilan tinggi, tetapi tidak konsumtif. Hal ini divalidasi dengan visualisasi gerombol yang saling tumpah tindih pada cluster plot. Dengan demikian, diketahui terdapat 5 gerombol pelanggan dengan karakteristik yang berbeda sebagai berikut,

  1. Cluster 1: pelanggan usia muda (21-30 tahun), berpenghasilan menengah ke atas, dan tidak terlalu konsumtif.

  2. Cluster 2: pelanggan usia muda, berpengasilan rendah, tetapi sangat konsumtif.

  3. Cluster 3: pelanggan lanjut usia (> 50 tahun), berpenghasilan menengah ke atas, dan tidak terlalu konsumtif.

  4. Cluster 4: pelanggan usia mid-career (31-50 tahun), berpenghasilan tinggi, dan sangat konsumtif.

  5. Cluster 5: pelanggan usia mid-career, berpenghasilan tinggi, tetapi tidak konsumtif.

Guna meningkatan pendapatan pusat perbelanjaan, dapat disusun beberapa kebijakan berdasarkan gerombol-gerombol pelanggan sebagai berikut,

  1. Membuat paket-paket penjualan barang khas usia muda (21-30 tahun) dengan harga terjangkau dan lebih murah dibandingkan pembelian barang-barang tersebut secara satuan. Dengan pembuatan paket ini, pendapatan pusat perbelanjaan pada target usia muda yang berpenghasilan rendah hingga menengah ke atas diharapkan akan meningkat.

  2. Meningkatkan penjualan barang-barang berkualitas tinggi dan branded dengan target pada pelanggan usia mid-career berpenghasilan tinggi.

  3. Membatasi stok barang-barang dengan target penjualan kepada pelanggan lanjut usia karena karakteristik pelanggan yang tidak terlalu konsumtif guna menekan biaya.

Daftar Pustaka

Astuti CC, Untari RS. 2017. Applied hierarchical cluster analysis with average linkage algoritm. Jurnal Matematika Murni dan Aplikasi. 5(1): 1-7 doi: http://dx.doi.org/10.18860/ca.v5i1.3862.

Utari DT, Hanun DS. 2021. Hierarchical clustering approach for region analysis of contraceptive users. Journal of Sciences and Data Analysis. 2(2): 99-108. doi: http://dx.doi.org/10.18860/ca.v5i1.3862.