library(ggplot2)
pelanggan <- read.csv("https://storage.googleapis.com/dqlab-dataset/customer_segments.txt", sep="\t")
head(pelanggan)
## Customer_ID Nama.Pelanggan Jenis.Kelamin Umur Profesi Tipe.Residen
## 1 CUST-001 Budi Anggara Pria 58 Wiraswasta Sector
## 2 CUST-002 Shirley Ratuwati Wanita 14 Pelajar Cluster
## 3 CUST-003 Agus Cahyono Pria 48 Professional Cluster
## 4 CUST-004 Antonius Winarta Pria 53 Professional Cluster
## 5 CUST-005 Ibu Sri Wahyuni, IR Wanita 41 Wiraswasta Cluster
## 6 CUST-006 Rosalina Kurnia Wanita 24 Professional Cluster
## NilaiBelanjaSetahun
## 1 9497927
## 2 2722700
## 3 5286429
## 4 5204498
## 5 10615206
## 6 5215541
Data tersebut memiliki tujuh kolom dengan penjelasan sebagai
berikut:
Customer ID : Kode pelanggan dengan format campuran teks CUST- diikuti
angka
Nama Pelanggan : Nama dari pelanggan dengan format teks tentunya
Jenis Kelamin : Jenis kelamin dari pelanggan, hanya terdapat dua isi
data kategori yaitu Pria dan Wanita
Umur : Umur dari pelanggan dalam format angka
Profesi : Profesi dari pelanggan, juga bertipe teks kategori yang
terdiri dari Wiraswasta, Pelajar, Professional, Ibu Rumah Tangga, dan
Mahasiswa.
Tipe Residen : Tipe tempat tinggal dari pelanggan kita, untuk dataset
ini hanya ada dua kategori: Cluster dan Sector.
NilaiBelanjaSetahun: Merupakan total belanja dalam setahun
pelanggan_matrix <- data.matrix(pelanggan[c("Jenis.Kelamin", "Profesi", "Tipe.Residen")])
pelanggan_matrix
## Jenis.Kelamin Profesi Tipe.Residen
## [1,] 1 5 2
## [2,] 2 3 1
## [3,] 1 4 1
## [4,] 1 4 1
## [5,] 2 5 1
## [6,] 2 4 1
## [7,] 1 5 2
## [8,] 1 4 1
## [9,] 2 4 2
## [10,] 1 4 1
## [11,] 2 4 2
## [12,] 2 4 2
## [13,] 2 5 1
## [14,] 1 5 1
## [15,] 2 5 1
## [16,] 1 4 1
## [17,] 2 1 1
## [18,] 2 1 1
## [19,] 2 5 1
## [20,] 2 3 2
## [21,] 2 5 1
## [22,] 2 4 1
## [23,] 1 4 1
## [24,] 2 5 1
## [25,] 2 5 2
## [26,] 2 4 1
## [27,] 2 5 1
## [28,] 2 1 1
## [29,] 2 4 1
## [30,] 2 1 2
## [31,] 2 2 1
## [32,] 2 5 2
## [33,] 2 2 1
## [34,] 2 5 2
## [35,] 2 4 2
## [36,] 2 5 1
## [37,] 2 4 2
## [38,] 2 5 2
## [39,] 2 4 1
## [40,] 2 3 2
## [41,] 2 1 1
## [42,] 2 5 1
## [43,] 2 4 1
## [44,] 2 5 1
## [45,] 2 4 1
## [46,] 2 5 2
## [47,] 2 1 1
## [48,] 2 5 2
## [49,] 2 1 2
## [50,] 2 5 2
pelanggan2 <- data.frame(pelanggan, pelanggan_matrix)
pelanggan2
## Customer_ID Nama.Pelanggan Jenis.Kelamin Umur Profesi
## 1 CUST-001 Budi Anggara Pria 58 Wiraswasta
## 2 CUST-002 Shirley Ratuwati Wanita 14 Pelajar
## 3 CUST-003 Agus Cahyono Pria 48 Professional
## 4 CUST-004 Antonius Winarta Pria 53 Professional
## 5 CUST-005 Ibu Sri Wahyuni, IR Wanita 41 Wiraswasta
## 6 CUST-006 Rosalina Kurnia Wanita 24 Professional
## 7 CUST-007 Cahyono, Agus Pria 64 Wiraswasta
## 8 CUST-008 Danang Santosa Pria 52 Professional
## 9 CUST-009 Elisabeth Suryadinata Wanita 29 Professional
## 10 CUST-010 Mario Setiawan Pria 33 Professional
## 11 CUST-011 Maria Suryawan Wanita 50 Professional
## 12 CUST-012 Erliana Widjaja Wanita 49 Professional
## 13 CUST-013 Cahaya Putri Wanita 64 Wiraswasta
## 14 CUST-014 Mario Setiawan Pria 60 Wiraswasta
## 15 CUST-015 Shirley Ratuwati Wanita 20 Wiraswasta
## 16 CUST-016 Bambang Rudi Pria 35 Professional
## 17 CUST-017 Yuni Sari Wanita 32 Ibu Rumah Tangga
## 18 CUST-018 Nelly Halim Wanita 63 Ibu Rumah Tangga
## 19 CUST-019 Mega Pranoto Wanita 32 Wiraswasta
## 20 CUST-020 Irene Novianto Wanita 16 Pelajar
## 21 CUST-021 Lestari Fabianto Wanita 38 Wiraswasta
## 22 CUST-022 Novita Purba Wanita 52 Professional
## 23 CUST-023 Denny Amiruddin Pria 34 Professional
## 24 CUST-024 Putri Ginting Wanita 39 Wiraswasta
## 25 CUST-025 Julia Setiawan Wanita 29 Wiraswasta
## 26 CUST-026 Christine Winarto Wanita 55 Professional
## 27 CUST-027 Grace Mulyati Wanita 35 Wiraswasta
## 28 CUST-028 Adeline Huang Wanita 40 Ibu Rumah Tangga
## 29 CUST-029 Tia Hartanti Wanita 56 Professional
## 30 CUST-030 Rosita Saragih Wanita 46 Ibu Rumah Tangga
## 31 CUST-031 Eviana Handry Wanita 19 Mahasiswa
## 32 CUST-032 Chintya Winarni Wanita 47 Wiraswasta
## 33 CUST-033 Cecilia Kusnadi Wanita 19 Mahasiswa
## 34 CUST-034 Deasy Arisandi Wanita 21 Wiraswasta
## 35 CUST-035 Ida Ayu Wanita 39 Professional
## 36 CUST-036 Ni Made Suasti Wanita 30 Wiraswasta
## 37 CUST-037 Felicia Tandiono Wanita 25 Professional
## 38 CUST-038 Agatha Salim Wanita 46 Wiraswasta
## 39 CUST-039 Gina Hidayat Wanita 20 Professional
## 40 CUST-040 Irene Darmawan Wanita 14 Pelajar
## 41 CUST-041 Shinta Aritonang Wanita 24 Ibu Rumah Tangga
## 42 CUST-042 Yuliana Wati Wanita 26 Wiraswasta
## 43 CUST-043 Yenna Sumadi Wanita 31 Professional
## 44 CUST-044 Anna Wanita 18 Wiraswasta
## 45 CUST-045 Rismawati Juni Wanita 22 Professional
## 46 CUST-046 Elfira Surya Wanita 25 Wiraswasta
## 47 CUST-047 Mira Kurnia Wanita 55 Ibu Rumah Tangga
## 48 CUST-048 Maria Hutagalung Wanita 45 Wiraswasta
## 49 CUST-049 Josephine Wahab Wanita 33 Ibu Rumah Tangga
## 50 CUST-050 Lianna Nugraha Wanita 55 Wiraswasta
## Tipe.Residen NilaiBelanjaSetahun Jenis.Kelamin.1 Profesi.1 Tipe.Residen.1
## 1 Sector 9497927 1 5 2
## 2 Cluster 2722700 2 3 1
## 3 Cluster 5286429 1 4 1
## 4 Cluster 5204498 1 4 1
## 5 Cluster 10615206 2 5 1
## 6 Cluster 5215541 2 4 1
## 7 Sector 9837260 1 5 2
## 8 Cluster 5223569 1 4 1
## 9 Sector 5993218 2 4 2
## 10 Cluster 5257448 1 4 1
## 11 Sector 5987367 2 4 2
## 12 Sector 5941914 2 4 2
## 13 Cluster 9333168 2 5 1
## 14 Cluster 9471615 1 5 1
## 15 Cluster 10365668 2 5 1
## 16 Cluster 5262521 1 4 1
## 17 Cluster 5677762 2 1 1
## 18 Cluster 5340690 2 1 1
## 19 Cluster 10884508 2 5 1
## 20 Sector 2896845 2 3 2
## 21 Cluster 9222070 2 5 1
## 22 Cluster 5298157 2 4 1
## 23 Cluster 5239290 1 4 1
## 24 Cluster 10259572 2 5 1
## 25 Sector 10721998 2 5 2
## 26 Cluster 5269392 2 4 1
## 27 Cluster 9114159 2 5 1
## 28 Cluster 6631680 2 1 1
## 29 Cluster 5271845 2 4 1
## 30 Sector 5020976 2 1 2
## 31 Cluster 3042773 2 2 1
## 32 Sector 10663179 2 5 2
## 33 Cluster 3047926 2 2 1
## 34 Sector 9759822 2 5 2
## 35 Sector 5962575 2 4 2
## 36 Cluster 9678994 2 5 1
## 37 Sector 5972787 2 4 2
## 38 Sector 10477127 2 5 2
## 39 Cluster 5257775 2 4 1
## 40 Sector 2861855 2 3 2
## 41 Cluster 6820976 2 1 1
## 42 Cluster 9880607 2 5 1
## 43 Cluster 5268410 2 4 1
## 44 Cluster 9339737 2 5 1
## 45 Cluster 5211041 2 4 1
## 46 Sector 10099807 2 5 2
## 47 Cluster 6130724 2 1 1
## 48 Sector 10390732 2 5 2
## 49 Sector 4992585 2 1 2
## 50 Sector 10569316 2 5 2
pelanggan2$NilaiBelanjaSetahun <- pelanggan$NilaiBelanjaSetahun / 1000000
pelanggan2
## Customer_ID Nama.Pelanggan Jenis.Kelamin Umur Profesi
## 1 CUST-001 Budi Anggara Pria 58 Wiraswasta
## 2 CUST-002 Shirley Ratuwati Wanita 14 Pelajar
## 3 CUST-003 Agus Cahyono Pria 48 Professional
## 4 CUST-004 Antonius Winarta Pria 53 Professional
## 5 CUST-005 Ibu Sri Wahyuni, IR Wanita 41 Wiraswasta
## 6 CUST-006 Rosalina Kurnia Wanita 24 Professional
## 7 CUST-007 Cahyono, Agus Pria 64 Wiraswasta
## 8 CUST-008 Danang Santosa Pria 52 Professional
## 9 CUST-009 Elisabeth Suryadinata Wanita 29 Professional
## 10 CUST-010 Mario Setiawan Pria 33 Professional
## 11 CUST-011 Maria Suryawan Wanita 50 Professional
## 12 CUST-012 Erliana Widjaja Wanita 49 Professional
## 13 CUST-013 Cahaya Putri Wanita 64 Wiraswasta
## 14 CUST-014 Mario Setiawan Pria 60 Wiraswasta
## 15 CUST-015 Shirley Ratuwati Wanita 20 Wiraswasta
## 16 CUST-016 Bambang Rudi Pria 35 Professional
## 17 CUST-017 Yuni Sari Wanita 32 Ibu Rumah Tangga
## 18 CUST-018 Nelly Halim Wanita 63 Ibu Rumah Tangga
## 19 CUST-019 Mega Pranoto Wanita 32 Wiraswasta
## 20 CUST-020 Irene Novianto Wanita 16 Pelajar
## 21 CUST-021 Lestari Fabianto Wanita 38 Wiraswasta
## 22 CUST-022 Novita Purba Wanita 52 Professional
## 23 CUST-023 Denny Amiruddin Pria 34 Professional
## 24 CUST-024 Putri Ginting Wanita 39 Wiraswasta
## 25 CUST-025 Julia Setiawan Wanita 29 Wiraswasta
## 26 CUST-026 Christine Winarto Wanita 55 Professional
## 27 CUST-027 Grace Mulyati Wanita 35 Wiraswasta
## 28 CUST-028 Adeline Huang Wanita 40 Ibu Rumah Tangga
## 29 CUST-029 Tia Hartanti Wanita 56 Professional
## 30 CUST-030 Rosita Saragih Wanita 46 Ibu Rumah Tangga
## 31 CUST-031 Eviana Handry Wanita 19 Mahasiswa
## 32 CUST-032 Chintya Winarni Wanita 47 Wiraswasta
## 33 CUST-033 Cecilia Kusnadi Wanita 19 Mahasiswa
## 34 CUST-034 Deasy Arisandi Wanita 21 Wiraswasta
## 35 CUST-035 Ida Ayu Wanita 39 Professional
## 36 CUST-036 Ni Made Suasti Wanita 30 Wiraswasta
## 37 CUST-037 Felicia Tandiono Wanita 25 Professional
## 38 CUST-038 Agatha Salim Wanita 46 Wiraswasta
## 39 CUST-039 Gina Hidayat Wanita 20 Professional
## 40 CUST-040 Irene Darmawan Wanita 14 Pelajar
## 41 CUST-041 Shinta Aritonang Wanita 24 Ibu Rumah Tangga
## 42 CUST-042 Yuliana Wati Wanita 26 Wiraswasta
## 43 CUST-043 Yenna Sumadi Wanita 31 Professional
## 44 CUST-044 Anna Wanita 18 Wiraswasta
## 45 CUST-045 Rismawati Juni Wanita 22 Professional
## 46 CUST-046 Elfira Surya Wanita 25 Wiraswasta
## 47 CUST-047 Mira Kurnia Wanita 55 Ibu Rumah Tangga
## 48 CUST-048 Maria Hutagalung Wanita 45 Wiraswasta
## 49 CUST-049 Josephine Wahab Wanita 33 Ibu Rumah Tangga
## 50 CUST-050 Lianna Nugraha Wanita 55 Wiraswasta
## Tipe.Residen NilaiBelanjaSetahun Jenis.Kelamin.1 Profesi.1 Tipe.Residen.1
## 1 Sector 9.497927 1 5 2
## 2 Cluster 2.722700 2 3 1
## 3 Cluster 5.286429 1 4 1
## 4 Cluster 5.204498 1 4 1
## 5 Cluster 10.615206 2 5 1
## 6 Cluster 5.215541 2 4 1
## 7 Sector 9.837260 1 5 2
## 8 Cluster 5.223569 1 4 1
## 9 Sector 5.993218 2 4 2
## 10 Cluster 5.257448 1 4 1
## 11 Sector 5.987367 2 4 2
## 12 Sector 5.941914 2 4 2
## 13 Cluster 9.333168 2 5 1
## 14 Cluster 9.471615 1 5 1
## 15 Cluster 10.365668 2 5 1
## 16 Cluster 5.262521 1 4 1
## 17 Cluster 5.677762 2 1 1
## 18 Cluster 5.340690 2 1 1
## 19 Cluster 10.884508 2 5 1
## 20 Sector 2.896845 2 3 2
## 21 Cluster 9.222070 2 5 1
## 22 Cluster 5.298157 2 4 1
## 23 Cluster 5.239290 1 4 1
## 24 Cluster 10.259572 2 5 1
## 25 Sector 10.721998 2 5 2
## 26 Cluster 5.269392 2 4 1
## 27 Cluster 9.114159 2 5 1
## 28 Cluster 6.631680 2 1 1
## 29 Cluster 5.271845 2 4 1
## 30 Sector 5.020976 2 1 2
## 31 Cluster 3.042773 2 2 1
## 32 Sector 10.663179 2 5 2
## 33 Cluster 3.047926 2 2 1
## 34 Sector 9.759822 2 5 2
## 35 Sector 5.962575 2 4 2
## 36 Cluster 9.678994 2 5 1
## 37 Sector 5.972787 2 4 2
## 38 Sector 10.477127 2 5 2
## 39 Cluster 5.257775 2 4 1
## 40 Sector 2.861855 2 3 2
## 41 Cluster 6.820976 2 1 1
## 42 Cluster 9.880607 2 5 1
## 43 Cluster 5.268410 2 4 1
## 44 Cluster 9.339737 2 5 1
## 45 Cluster 5.211041 2 4 1
## 46 Sector 10.099807 2 5 2
## 47 Cluster 6.130724 2 1 1
## 48 Sector 10.390732 2 5 2
## 49 Sector 4.992585 2 1 2
## 50 Sector 10.569316 2 5 2
Profesi <- unique(pelanggan2[c("Profesi","Profesi.1")])
Jenis.Kelamin <- unique(pelanggan2[c("Jenis.Kelamin","Jenis.Kelamin.1")])
Tipe.Residen <- unique(pelanggan2[c("Tipe.Residen","Tipe.Residen.1")])
Profesi
## Profesi Profesi.1
## 1 Wiraswasta 5
## 2 Pelajar 3
## 3 Professional 4
## 17 Ibu Rumah Tangga 1
## 31 Mahasiswa 2
Jenis.Kelamin
## Jenis.Kelamin Jenis.Kelamin.1
## 1 Pria 1
## 2 Wanita 2
Tipe.Residen
## Tipe.Residen Tipe.Residen.1
## 1 Sector 2
## 2 Cluster 1
set.seed(100)
field_yang_digunakan = c("Jenis.Kelamin.1", "Umur", "Profesi.1", "Tipe.Residen.1","NilaiBelanjaSetahun")
segmentasi <- kmeans(x=pelanggan2[field_yang_digunakan], centers=5, nstart=25)
segmentasi
## K-means clustering with 5 clusters of sizes 5, 12, 14, 9, 10
##
## Cluster means:
## Jenis.Kelamin.1 Umur Profesi.1 Tipe.Residen.1 NilaiBelanjaSetahun
## 1 1.40 61.80000 4.200000 1.400000 8.696132
## 2 1.75 31.58333 3.916667 1.250000 7.330958
## 3 2.00 20.07143 3.571429 1.357143 5.901089
## 4 2.00 42.33333 4.000000 1.555556 8.804791
## 5 1.70 52.50000 3.800000 1.300000 6.018321
##
## Clustering vector:
## [1] 1 3 5 5 4 3 1 5 2 2 5 5 1 1 3 2 2 1 2 3 4 5 2 4 2 5 2 4 5 4 3 4 3 3 4 2 3 4
## [39] 3 3 3 2 2 3 3 3 5 4 2 5
##
## Within cluster sum of squares by cluster:
## [1] 58.21123 174.85164 316.73367 171.67372 108.49735
## (between_SS / total_SS = 92.4 %)
##
## Available components:
##
## [1] "cluster" "centers" "totss" "withinss" "tot.withinss"
## [6] "betweenss" "size" "iter" "ifault"
Clustering vector ini adalah rangkaian vector yang berisi angka cluster. Dari hasil kita, vector berisi angka 1 sampai dengan 5, maksimum sesuai dengan jumlah cluster yang kita inginkan.
pelanggan2$cluster <- segmentasi$cluster
str(pelanggan2)
## 'data.frame': 50 obs. of 11 variables:
## $ Customer_ID : chr "CUST-001" "CUST-002" "CUST-003" "CUST-004" ...
## $ Nama.Pelanggan : chr "Budi Anggara" "Shirley Ratuwati" "Agus Cahyono" "Antonius Winarta" ...
## $ Jenis.Kelamin : chr "Pria" "Wanita" "Pria" "Pria" ...
## $ Umur : int 58 14 48 53 41 24 64 52 29 33 ...
## $ Profesi : chr "Wiraswasta" "Pelajar" "Professional" "Professional" ...
## $ Tipe.Residen : chr "Sector" "Cluster" "Cluster" "Cluster" ...
## $ NilaiBelanjaSetahun: num 9.5 2.72 5.29 5.2 10.62 ...
## $ Jenis.Kelamin.1 : int 1 2 1 1 2 2 1 1 2 1 ...
## $ Profesi.1 : int 5 3 4 4 5 4 5 4 4 4 ...
## $ Tipe.Residen.1 : int 2 1 1 1 1 1 2 1 2 1 ...
## $ cluster : int 1 3 5 5 4 3 1 5 2 2 ...
which(pelanggan2$cluster == 1)
## [1] 1 7 13 14 18
Hasil di atas menunjukkan data untuk cluster 1. Banyaknya angka pada deretan ini sesuai ukuran untuk cluster ke-1 dari informasi di atas.
pelanggan[which(pelanggan2$cluster == 1),]
## Customer_ID Nama.Pelanggan Jenis.Kelamin Umur Profesi Tipe.Residen
## 1 CUST-001 Budi Anggara Pria 58 Wiraswasta Sector
## 7 CUST-007 Cahyono, Agus Pria 64 Wiraswasta Sector
## 13 CUST-013 Cahaya Putri Wanita 64 Wiraswasta Cluster
## 14 CUST-014 Mario Setiawan Pria 60 Wiraswasta Cluster
## 18 CUST-018 Nelly Halim Wanita 63 Ibu Rumah Tangga Cluster
## NilaiBelanjaSetahun
## 1 9497927
## 7 9837260
## 13 9333168
## 14 9471615
## 18 5340690
pelanggan[which(pelanggan2$cluster == 2),]
## Customer_ID Nama.Pelanggan Jenis.Kelamin Umur Profesi
## 9 CUST-009 Elisabeth Suryadinata Wanita 29 Professional
## 10 CUST-010 Mario Setiawan Pria 33 Professional
## 16 CUST-016 Bambang Rudi Pria 35 Professional
## 17 CUST-017 Yuni Sari Wanita 32 Ibu Rumah Tangga
## 19 CUST-019 Mega Pranoto Wanita 32 Wiraswasta
## 23 CUST-023 Denny Amiruddin Pria 34 Professional
## 25 CUST-025 Julia Setiawan Wanita 29 Wiraswasta
## 27 CUST-027 Grace Mulyati Wanita 35 Wiraswasta
## 36 CUST-036 Ni Made Suasti Wanita 30 Wiraswasta
## 42 CUST-042 Yuliana Wati Wanita 26 Wiraswasta
## 43 CUST-043 Yenna Sumadi Wanita 31 Professional
## 49 CUST-049 Josephine Wahab Wanita 33 Ibu Rumah Tangga
## Tipe.Residen NilaiBelanjaSetahun
## 9 Sector 5993218
## 10 Cluster 5257448
## 16 Cluster 5262521
## 17 Cluster 5677762
## 19 Cluster 10884508
## 23 Cluster 5239290
## 25 Sector 10721998
## 27 Cluster 9114159
## 36 Cluster 9678994
## 42 Cluster 9880607
## 43 Cluster 5268410
## 49 Sector 4992585
pelanggan[which(pelanggan2$cluster == 3),]
## Customer_ID Nama.Pelanggan Jenis.Kelamin Umur Profesi
## 2 CUST-002 Shirley Ratuwati Wanita 14 Pelajar
## 6 CUST-006 Rosalina Kurnia Wanita 24 Professional
## 15 CUST-015 Shirley Ratuwati Wanita 20 Wiraswasta
## 20 CUST-020 Irene Novianto Wanita 16 Pelajar
## 31 CUST-031 Eviana Handry Wanita 19 Mahasiswa
## 33 CUST-033 Cecilia Kusnadi Wanita 19 Mahasiswa
## 34 CUST-034 Deasy Arisandi Wanita 21 Wiraswasta
## 37 CUST-037 Felicia Tandiono Wanita 25 Professional
## 39 CUST-039 Gina Hidayat Wanita 20 Professional
## 40 CUST-040 Irene Darmawan Wanita 14 Pelajar
## 41 CUST-041 Shinta Aritonang Wanita 24 Ibu Rumah Tangga
## 44 CUST-044 Anna Wanita 18 Wiraswasta
## 45 CUST-045 Rismawati Juni Wanita 22 Professional
## 46 CUST-046 Elfira Surya Wanita 25 Wiraswasta
## Tipe.Residen NilaiBelanjaSetahun
## 2 Cluster 2722700
## 6 Cluster 5215541
## 15 Cluster 10365668
## 20 Sector 2896845
## 31 Cluster 3042773
## 33 Cluster 3047926
## 34 Sector 9759822
## 37 Sector 5972787
## 39 Cluster 5257775
## 40 Sector 2861855
## 41 Cluster 6820976
## 44 Cluster 9339737
## 45 Cluster 5211041
## 46 Sector 10099807
pelanggan[which(pelanggan2$cluster == 4),]
## Customer_ID Nama.Pelanggan Jenis.Kelamin Umur Profesi
## 5 CUST-005 Ibu Sri Wahyuni, IR Wanita 41 Wiraswasta
## 21 CUST-021 Lestari Fabianto Wanita 38 Wiraswasta
## 24 CUST-024 Putri Ginting Wanita 39 Wiraswasta
## 28 CUST-028 Adeline Huang Wanita 40 Ibu Rumah Tangga
## 30 CUST-030 Rosita Saragih Wanita 46 Ibu Rumah Tangga
## 32 CUST-032 Chintya Winarni Wanita 47 Wiraswasta
## 35 CUST-035 Ida Ayu Wanita 39 Professional
## 38 CUST-038 Agatha Salim Wanita 46 Wiraswasta
## 48 CUST-048 Maria Hutagalung Wanita 45 Wiraswasta
## Tipe.Residen NilaiBelanjaSetahun
## 5 Cluster 10615206
## 21 Cluster 9222070
## 24 Cluster 10259572
## 28 Cluster 6631680
## 30 Sector 5020976
## 32 Sector 10663179
## 35 Sector 5962575
## 38 Sector 10477127
## 48 Sector 10390732
pelanggan[which(pelanggan2$cluster == 5),]
## Customer_ID Nama.Pelanggan Jenis.Kelamin Umur Profesi
## 3 CUST-003 Agus Cahyono Pria 48 Professional
## 4 CUST-004 Antonius Winarta Pria 53 Professional
## 8 CUST-008 Danang Santosa Pria 52 Professional
## 11 CUST-011 Maria Suryawan Wanita 50 Professional
## 12 CUST-012 Erliana Widjaja Wanita 49 Professional
## 22 CUST-022 Novita Purba Wanita 52 Professional
## 26 CUST-026 Christine Winarto Wanita 55 Professional
## 29 CUST-029 Tia Hartanti Wanita 56 Professional
## 47 CUST-047 Mira Kurnia Wanita 55 Ibu Rumah Tangga
## 50 CUST-050 Lianna Nugraha Wanita 55 Wiraswasta
## Tipe.Residen NilaiBelanjaSetahun
## 3 Cluster 5286429
## 4 Cluster 5204498
## 8 Cluster 5223569
## 11 Sector 5987367
## 12 Sector 5941914
## 22 Cluster 5298157
## 26 Cluster 5269392
## 29 Cluster 5271845
## 47 Cluster 6130724
## 50 Sector 10569316
segmentasi$centers
## Jenis.Kelamin.1 Umur Profesi.1 Tipe.Residen.1 NilaiBelanjaSetahun
## 1 1.40 61.80000 4.200000 1.400000 8.696132
## 2 1.75 31.58333 3.916667 1.250000 7.330958
## 3 2.00 20.07143 3.571429 1.357143 5.901089
## 4 2.00 42.33333 4.000000 1.555556 8.804791
## 5 1.70 52.50000 3.800000 1.300000 6.018321
Apa artinya hasil tersebut?\
Kolom pertama yang berisi angka 1 sampai dengan 5 adalah mewakili
nomor cluster.Kolom Kelamin.1 menunjukkan nilai rata-rata dari data
jenis kelamin yang telah dikonversi menjadi numerik, dengan angka 1
mewakili Pria dan angka 2 mewakili wanita. Pada cluster 1 terlihat
berupa angka 1.40 artinya data bersifat campuran namun cenderung ke Pria
(1), sedangkan cluster 3 hanya ada angka 2.00 yang berarti cluster 3
hanya berisi data dengan profil berjenis kelamin wanita.
Kolom Umur adalah representasi dari dataset awal tanpa mengalami
konversi. Terlihat untuk cluster ke-1 umur rata-rata adalah 61 tahun,
umur 31 tahun untuk cluster ke-2, dan seterusnya.
Angka 1, 2, 3, 4 dan 5 masing-masing mewakili Wiraswasta,
Pelajar, Professional, Ibu Rumah Tangga dan Mahasiswa. Terlihat untuk
seluruh cluster, profesi cenderung ke Professional terutama untuk
cluster ke-4.
Kolom Tipe.Residen.1 menunjukkan representasi data Tipe.Residen
yang telah dikonversi menjadi numerik dengan angka 1 mewakili Cluster
dan 2 mewakili Sector. Terlihat untuk seluruh cluster, terlihat data
cukup tersebar antara Sector dan Cluster terutama untuk cluster ke-4
dimana nilai kolom ini di angka 1.555.
Terakhir, kolom NilaiBelanjaSetahun cukup signifikan pembagiannya untuk tiap cluster. Dimana cluster ke-1 dan ke-4 memiliki nilai belanja lebih tinggi dibandingkan ketiga cluster lainnya. Ini mungkin target customer yang bisa lebih disasar melalui marketing campaign, karena cluster ke-1 saat ini hanya berisi 5 data. Cukup kecil proporsinya, dan ingin ditingkatkan.
segmentasi$size
## [1] 5 12 14 9 10
segmentasi$withinss
## [1] 58.21123 174.85164 316.73367 171.67372 108.49735
Konsep sum of squares (SS) adalah jumlah “jarak kuadrat” perbedaan
tiap titik data dengan mean atau centroidnya. SS ini bisa dengan mean
atau centroid untuk tiap cluster atau secara keseluruhan data. Sum of
squares dalam literatur data science lain sering disebut dengan Sum of
Squared Errors (SSE).Semakin besar nilai SS menyatakan semakin lebarnya
perbedaan antar tiap titik data di dalam cluster tersebut.Berdasarkan
konsep tersebut, berikut adalah penjelasan untuk hasil output kmeans di
atas:
Nilai 316.73367 adalah SS untuk cluster ke-3, 58.21123 adalah SS untuk cluste ke-1, dan seterusnya. Semakin kecil nilainya berpotensi semakin baik. Ini adalah metrik yang bisa kita gunakan untuk menjawab seberapa baik jumlah cluster yang kita bentuk? Apakah dibagi 2, 5, 10 atau 30?
Dari informasi yang dihasilkan oleh function kmeans, metrick Sum of
Squares (SS) atau sering disebut Sum of Squared Errors (SSE) sangat
penting untuk dijadikan dasar kita menentukan jumlah cluster yang paling
optimal. Secara teoritis, berikut adalah beberapa hal yang bisa kita
amati dengan SS:
Semakin sedikit jumlah cluster yang dihasilkan maka semakin besar nilai SS.Begitu juga sebaliknya, semakin banyak jumlah cluster yang dihasilkan maka semakin kecil nilai SS nya. Karena sifatnya kuadratik, jika terdapat perbedaan yang cukup signifikan antara tiap kombinasi cluster maka perbedaan nilai SS akan semakin besar. Dan seiring bertambahnya jumlah cluster, perbedaan tiap SS ini akan semakin kecil. Jika dimasukkan ke dalam grafik garis, maka plotting dari total SS untuk tiap cluster berbentuk sebagai berikut.
sse <- sapply(1:10, function(param_k) {kmeans(pelanggan2[field_yang_digunakan], param_k, nstart=25)$tot.withinss})
sse
## [1] 10990.9740 3016.5612 1550.8725 1064.4187 829.9676 625.1462
## [7] 508.1568 431.6977 374.1095 317.9424
library(ggplot2)
jumlah_cluster_max <- 10
ssdata = data.frame(cluster=c(1:jumlah_cluster_max),sse)
ggplot(ssdata, aes(x=cluster,y=sse)) +
geom_line(color="red") + geom_point() +
ylab("Within Cluster Sum of Squares") + xlab("Jumlah Cluster") +
geom_text(aes(label=format(round(sse, 2), nsmall = 2)),hjust=-0.2, vjust=-0.5) +
scale_x_discrete(limits=c(1:jumlah_cluster_max))
## Warning: Continuous limits supplied to discrete scale.
## Did you mean `limits = factor(...)` or `scale_*_continuous()`?
Titik paling kiri adalah jumlah SS untuk 1 jumlah cluster, titik
kedua adalah untuk 2 jumlah cluster, dan seterusnya.Perhatikan semakin
ke kanan perbedaan jarak antar tiap titik semakin mengecil. Grafik garis
ini memiliki bentuk seperti siku tangan, dan untuk optimal jumlah
cluster biasanya kita mengambil titik sikunya. Pada contoh di atas kita
bisa mengambil 4 atau 5.
Mari kita coba namakan cluster 1 s/d 5 sebagai berikut:
segmentasi$centers
## Jenis.Kelamin.1 Umur Profesi.1 Tipe.Residen.1 NilaiBelanjaSetahun
## 1 1.40 61.80000 4.200000 1.400000 8.696132
## 2 1.75 31.58333 3.916667 1.250000 7.330958
## 3 2.00 20.07143 3.571429 1.357143 5.901089
## 4 2.00 42.33333 4.000000 1.555556 8.804791
## 5 1.70 52.50000 3.800000 1.300000 6.018321
Cluster 1 : Diamond Senior Member: alasannya adalah karena umurnya
rata-rata adalah 61 tahun dan pembelanjaan di atas 8 juta.
Cluster 2 : Gold Young Professional: alasannya adalah karena umurnya
rata-rata adalah 31 tahun, professional dan pembelanjaan cukup
besar.
Cluster 3 : Silver Youth Gals: alasannya adalah karena umurnya rata-rata
adalah 20, wanita semua, profesinya bercampur antar pelajar dan
professional serta pembelanjaan sekitar 6 juta.
Cluster 4 : Diamond Profesional: alasannya adalah karena umurnya
rata-rata adalah 42 tahun, pembelanjaan paling tinggi dan semuanya
professional.
Cluster 5 : Silver Mid Professional: alasannya adalah karena umurnya
rata-rata adalah 52 tahun dan pembelanjaan sekitar 6 juta.