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
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
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
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.
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
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.
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.