Tentang Dataset

Dataset yang digunakan adalah data Wholesale customers yang diperoleh dari kaggle.Dataset ini berisi 440 baris 8 kolom. Kumpulan data ini mengacu pada klien distributor grosir. Ini termasuk pengeluaran tahunan dalam unit moneter (m.u.) pada berbagai kategori produk. Variabel terdiri dari Channel, Region, fresh, Milk, Grocery, Frozen, Detergent_paper, dan delicassen. Dapat di akses melalui link di bawah ini : https://drive.google.com/file/d/1KzxPsUxQUckeHErn6SgGTy7cedqE_6WC/view?usp=sharing

library("factoextra")
## Loading required package: ggplot2
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa

Prosedur Penerapan K-Means

  1. Pre-processing data
  2. Memilih banyaknya Cluster
  3. Menerapkan K-means
  4. Interprestasi cluster yang terbentuk

Mengimpor data set dari csv.

Pelanggan.grosir <- read.csv("D:/STATISTIKA 2021/SEMESTER 5/DATA MINING/Pelanggan grosir.csv")
data <- Pelanggan.grosir
head(data)
##   Channel Region Fresh Milk Grocery Frozen Detergents_Paper Delicassen
## 1       2      3 12669 9656    7561    214             2674       1338
## 2       2      3  7057 9810    9568   1762             3293       1776
## 3       2      3  6353 8808    7684   2405             3516       7844
## 4       1      3 13265 1196    4221   6404              507       1788
## 5       2      3 22615 5410    7198   3915             1777       5185
## 6       2      3  9413 8259    5126    666             1795       1451
dim(data)
## [1] 440   8

Pre-processing data

Peubah yang digunakan untuk menerapkan k-means adalah peubah “Channel”,“Fresh”, dan “Milk.Oleh karena itu peubah yang tidak kita gunakan akan kita hilangkan tersebih dahulu.

data <- data[,c("Channel","Fresh","Milk")]
head(data)
##   Channel Fresh Milk
## 1       2 12669 9656
## 2       2  7057 9810
## 3       2  6353 8808
## 4       1 13265 1196
## 5       2 22615 5410
## 6       2  9413 8259

Standarisasi

data_standardize <- scale(data)
apply(data_standardize,2,mean)
##       Channel         Fresh          Milk 
## -1.972607e-17 -3.394982e-17 -4.271510e-18
apply(data_standardize,2,sd)
## Channel   Fresh    Milk 
##       1       1       1

Jika kita perhatikan rata-rata dan simpangan baku peubah setelah distandarisasi mendekati nol dan satu.

Memilih banyaknya cluster

Umumnya, banyaknya cluster dapat ditentukan dengan menggunakan beberapa kriteria statistik, seperti koefisien silhouette dan WSS atau (Within Sum of Square).

Kriteria koefisien silhouette dihitung berdasarkan jarak antar amatan. Koefisien ini mengukur seberapa dekat suatu amatan dengan amatan lain yang berada di cluster yang sama (dikenal sebagai ukuran cohesion) dibandingkan dengan jarak terhadap amatan lain yang berada di cluster berbeda (dikenal sebagai ukuran separation). Koefisien yang nilainya semakin besar menunjukkan bahwa cluster yang terbentuk sudah sesuai.

Kriteria WSS merupakan kriteria yangmenghitung keragamaan dalam cluster yang terbentuk. Semakin kecil keragaman dalam cluster yang terbentuk menunjukkan bahwa cluster yang terbentuk sudah sesuai.

fviz_nbclust(data_standardize,FUNcluster = kmeans,method = "silhouette")

fviz_nbclust(data_standardize,FUNcluster = kmeans,method = "wss")

Untuk kriteria koefisien silhoutte, banyaknya cluster dengan nilai koefisien tertinggi yangkita pilih. Sedangkan pada WSS, banyaknya cluster yang kita pilih didasarkan pada banyaknya cluster yang mana garisnya berbentuk seperti siku (elbow). Pada gambar diatas garis membentuk siku saat berada di cluster keempat. Karena penentuan ini berdasarkan visual,jadi setiap orang mungkin berbeda melihat pola sikunya Berdasarkan kedua kriteria tersebut, banyaknya cluster terbaik yang dipilih berbeda. Jika demikian, banyaknya cluster bisa ditentukan berdasarkan kemudahan interpretasi cluster yang terbentuk. Pada tulisan ini kita akan menggunakan 4 cluster saja.

kmeans_data <- eclust(data,stand = TRUE,FUNcluster = "kmeans",k=4,graph = F)
kmeans_data$cluster
##   [1] 3 3 3 4 3 3 3 3 1 3 3 3 3 3 3 1 3 1 3 1 3 1 4 3 3 3 1 4 3 2 4 1 4 4 1 3 4
##  [38] 3 3 2 4 4 3 3 3 3 3 2 3 3 1 1 2 3 4 1 3 3 4 1 3 2 3 3 1 3 1 3 1 1 4 4 1 3
##  [75] 3 4 1 3 1 1 1 3 3 4 3 3 3 2 1 4 1 1 3 1 3 1 3 1 1 1 3 3 3 2 4 4 3 3 3 3 1
## [112] 3 4 4 4 1 1 1 4 1 4 1 1 3 4 2 4 3 1 2 1 1 4 1 1 1 1 1 4 1 4 2 2 1 4 3 1 1
## [149] 1 4 4 1 4 1 1 3 3 4 3 3 3 1 4 3 3 3 3 1 1 1 3 3 1 3 1 3 2 1 1 1 1 2 1 2 1
## [186] 1 1 1 3 3 4 4 1 3 1 4 4 3 1 1 3 3 4 1 1 3 1 3 1 3 4 3 1 1 3 1 3 4 3 1 4 1
## [223] 1 3 1 1 3 1 1 1 3 1 4 1 4 1 1 4 1 2 4 4 4 1 1 3 1 4 4 1 1 3 1 4 1 4 1 1 2
## [260] 2 1 1 4 1 3 1 3 4 3 4 1 1 1 4 1 1 4 1 1 3 1 3 2 4 2 2 1 4 4 2 1 1 1 3 4 3
## [297] 4 3 3 1 3 3 3 3 3 3 3 4 1 3 1 4 3 1 1 3 1 1 1 3 1 1 4 4 4 2 1 1 4 1 1 3 4
## [334] 3 3 3 4 1 1 1 3 3 1 3 1 1 3 3 1 3 1 3 1 3 4 1 4 3 1 1 4 1 1 1 1 3 1 1 4 1
## [371] 2 4 1 3 1 1 3 2 1 3 4 4 2 1 1 1 1 4 1 1 1 1 1 4 1 1 3 1 1 1 1 4 4 4 4 1 4
## [408] 3 3 1 1 1 1 1 1 3 3 1 3 1 1 3 4 3 3 1 1 2 1 1 1 1 4 1 4 2 2 3 1 1
kmeans_data$centers
##      Channel      Fresh       Milk
## 1 -0.6895122 -0.4981702 -0.3543627
## 2 -0.3842955  2.7327557  0.6467321
## 3  1.4470045 -0.3165216  0.6100885
## 4 -0.6895122  0.6933408 -0.4141942
aggregate(data,by =list(cluster=kmeans_data$cluster),FUN = mean)
##   cluster  Channel     Fresh      Milk
## 1       1 1.000000  5699.775  3180.936
## 2       2 1.142857 46562.357 10569.393
## 3       3 2.000000  7997.145 10298.949
## 4       4 1.000000 20769.207  2739.356

Interprestasi cluster yang terbentuk Berdasarkan nilai rata-rata dari $centers ,berikut adalah interpretasinya:

cluster 1 : jika ini adalah data penjualan produk di berbagai saluran distribusi, kita dapat menyimpulkan bahwa saluran 1 memiliki tingkat pembelian tertentu untuk produk segar dan susu.

cluster 2 : cluster ini nilainya bukan 1, ini bisa merujuk pada saluran yang berbeda dari kelompok sebelumnya. nilai “Fresh” menunjukkan bahwa kelompok ini memiliki kecenderungan untuk membeli sejumlah besar produk segar dan memiliki kecenderungan untuk membeli sejumlah besar produk susu.

cluster 3 : cluster ini nilainya bukan 1, ini bisa merujuk pada saluran yang berbeda dari kelompok sebelumnya. nilai “Fresh” menunjukkan bahwa mungkin kurang cenderung untuk membeli sejumlah besar produk segar dan mungkin lebih cenderung untuk membeli sejumlah besar produk susu .

cluster 4 : jika ini adalah data penjualan produk di berbagai saluran distribusi, kita dapat menyimpulkan bahwa saluran 1 memiliki tingkat pembelian tertentu. nilai “Fresh” menunjukkan bahwa kelompok ini cenderung untuk membeli sejumlah besar produk segar dan mungkin kurang cenderung untuk membeli sejumlah besar produk susu.

fviz_cluster(kmeans_data)

Interpretasi dua komponen utama bisa dilihat dengan akar cirinya.

pca_data <- prcomp(data_standardize)
pca_data$rotation
##                PC1        PC2        PC3
## Channel  0.7188195 -0.1594918 -0.6766542
## Fresh   -0.1129425  0.9336052 -0.3400373
## Milk     0.6859610  0.3208484  0.6530802

Interpretasi hasil yang diperoleh diatas adalah

1.Nilai positif pada PC1 (0.7188195) menunjukkan bahwa “Channel” cenderung memiliki kontribusi positif terhadap variasi yang diukur oleh PC1. Artinya, observasi dengan nilai “Channel” yang lebih tinggi akan cenderung memiliki nilai PC1 yang lebih tinggi.

Nilai negatif pada PC2 (-0.1594918) menunjukkan bahwa “Channel” cenderung memiliki kontribusi negatif terhadap variasi yang diukur oleh PC2. Artinya, observasi dengan nilai “Channel” yang lebih tinggi akan cenderung memiliki nilai PC2 yang lebih rendah.

Nilai negatif pada PC3 (-0.6766542) menunjukkan bahwa “Channel” cenderung memiliki kontribusi negatif terhadap variasi yang diukur oleh PC3. Artinya, observasi dengan nilai “Channel” yang lebih tinggi akan cenderung memiliki nilai PC3 yang lebih rendah.

2.Koefisien negatif pada PC1 (-0.1129425) menunjukkan bahwa variabel “Fresh” cenderung memiliki kontribusi negatif terhadap variasi yang diukur oleh PC1. Artinya, observasi dengan nilai “Fresh” yang lebih tinggi akan cenderung memiliki nilai PC1 yang lebih rendah.

Koefisien positif pada PC2 (0.9336052) menunjukkan bahwa variabel “Fresh” memiliki kontribusi positif yang signifikan terhadap variasi yang diukur oleh PC2. Artinya, observasi dengan nilai “Fresh” yang lebih tinggi akan cenderung memiliki nilai PC2 yang lebih tinggi.

Koefisien negatif pada PC3 (-0.3400373) menunjukkan bahwa variabel “Fresh” cenderung memiliki kontribusi negatif terhadap variasi yang diukur oleh PC3. Artinya, observasi dengan nilai “Fresh” yang lebih tinggi akan cenderung memiliki nilai PC3 yang lebih rendah.

  1. Koefisien positif pada PC1 (0.6859610) menunjukkan bahwa variabel “Milk” memiliki kontribusi positif terhadap variasi yang diukur oleh PC1. Artinya, observasi dengan nilai “Milk” yang lebih tinggi akan cenderung memiliki nilai PC1 yang lebih tinggi.

Koefisien positif pada PC2 (0.3208484) menunjukkan bahwa variabel “Milk” juga memiliki kontribusi positif yang signifikan terhadap variasi yang diukur oleh PC2. Artinya, observasi dengan nilai “Milk” yang lebih tinggi akan cenderung memiliki nilai PC2 yang lebih tinggi.

Koefisien positif pada PC3 (0.6530802) menunjukkan bahwa variabel “Milk” memiliki kontribusi positif terhadap variasi yang diukur oleh PC3. Artinya, observasi dengan nilai “Milk” yang lebih tinggi akan cenderung memiliki nilai PC3 yang lebih tinggi.