Loyalitas pelanggan mengekspresikan perilaku yang dimaksudkan berkaitan dengan produk atau jasa untuk perusahaan. Loyalitas pelanggan, sebagai salah satu mentalitas pelanggan, memiliki kesan yang baik terhadap perusahaan, berkomitmen untuk membeli kembali produk atau jasa perusahaan, dan merekomendasikan produk atau jasa kepada orang lain (Sinulingga & Sihotang, 2021). Loyalitas pelanggan juga berlaku pada nasabah bank, biasanya nasabah dinilai loyal pada suatu bank ketika nasabah memiliki saldo yang tinggi, kartu kredit yang banyak, atau seberapa sering nasabah mengunjungi bank tersebut baik secara online atau offline. Pengelompokan nasabah perlu dilakukan untuk mengetahui seorang nasabah dikatakan loyal melalui suatu aspek. Salah satu metode clustering yang dapat digunakan adalah analisis cluster nonhierarki dengan metode K-Means.Metode K-means digunakan karena data yang digunakan merupakan data numerik.Metode K-Means digunakan untuk mengelompokkan nasabah berdasarkan kemiripan pada informasi nasabah.
Bagaimana pengelompokan nasabah (customer) bank berdasarkan informasi nasabah menggunakan analisis cluster non-hierarki metode K-Means?
Untuk mengelompokkan nasabah (customer) bank berdasarkan informasi nasabah menggunakan analisis cluster non-hierarki metode K-Means.
Menurut Widodo (2013:9) Clustering atau klasifikasi adalah metode yang digunakan untuk membagi rangkaian data menjadi beberapa group berdasarkan kesamaan-kesamaan yang telah ditentukan sebelumnya. Algoritma clustering terdiri dari dua bagian yaitu secara hirarkis dan secara partitional. Algoritma hirarkis menemukan cluster secara berurutan dimana cluster ditetapkan sebelumnya, sedangkan algoritma partitional menentukan semua kelompok pada waktu tertentu.
Metode K-Means merupakan salah satu algoritma dengan partitional, karena K-Means didasarkan pada penentuan jumlah awal kelompok dengan mendefinisikan nilai centroid awalnya.Metode ini merupakan metode pengelompakan yang bertujuan mengelompokan objek sehingga jarak antar tiap objek ke pusat kelompok di dalam satu kelompok adalah minimum.
Tahapan analisis K-Means sebagai berikut :
Tentukan k sebagai jumlah cluster yang akan dibentuk
Tentukan k Centroid (titik pusat cluster) awal secara random/acak.
Hitung jarak setiap objek ke masing-masing centroid dari masing-masing cluster.
Alokasikan masing-masing objek ke dalam centroid yang paling dekat.
Lakukan iterasi, kemudian tentukan posisi centroid baru dengan menggunakan persamaan (1).
| Sl_No | Avg_Credit_Limit | Total_Credit_Cards | Total_visits_bank | Total_visits_online | Total_calls_made |
|---|---|---|---|---|---|
| 1 | 31000 | 4 | 4 | 2 | 1 |
| 2 | 14000 | 4 | 2 | 0 | 0 |
| 3 | 18000 | 4 | 1 | 3 | 10 |
| 4 | 47000 | 5 | 5 | 1 | 2 |
| 5 | 5000 | 1 | 2 | 2 | 5 |
| 6 | 30000 | 7 | 3 | 1 | 0 |
| 7 | 13000 | 1 | 1 | 2 | 5 |
| 8 | 11000 | 3 | 1 | 5 | 4 |
| 9 | 31000 | 7 | 3 | 0 | 2 |
| 10 | 32000 | 7 | 4 | 0 | 3 |
| 11 | 15000 | 1 | 1 | 2 | 7 |
| 12 | 38000 | 4 | 3 | 0 | 0 |
| 13 | 70000 | 6 | 2 | 0 | 3 |
| 14 | 37000 | 7 | 2 | 1 | 1 |
| 15 | 37000 | 5 | 2 | 1 | 3 |
| 16 | 31000 | 4 | 4 | 1 | 0 |
| 17 | 6000 | 5 | 2 | 1 | 0 |
| 18 | 163000 | 8 | 1 | 7 | 1 |
| 19 | 11000 | 2 | 2 | 2 | 7 |
| 20 | 67000 | 6 | 2 | 2 | 2 |
| 21 | 13000 | 3 | 0 | 5 | 10 |
| 22 | 6000 | 5 | 2 | 2 | 1 |
| 23 | 73000 | 6 | 2 | 0 | 2 |
| 24 | 20000 | 5 | 4 | 1 | 0 |
| 25 | 11000 | 1 | 2 | 2 | 6 |
| 26 | 14000 | 2 | 1 | 5 | 5 |
| 27 | 18000 | 5 | 2 | 2 | 2 |
| 28 | 40000 | 5 | 3 | 1 | 4 |
| 29 | 9000 | 5 | 2 | 2 | 0 |
| 30 | 17000 | 1 | 1 | 4 | 8 |
| 31 | 17000 | 2 | 0 | 3 | 5 |
| 32 | 17000 | 4 | 1 | 2 | 7 |
| 33 | 35000 | 6 | 3 | 1 | 4 |
| 34 | 18000 | 6 | 5 | 0 | 4 |
| 35 | 8000 | 1 | 2 | 2 | 4 |
| 36 | 13000 | 3 | 0 | 4 | 4 |
| 37 | 13000 | 4 | 5 | 0 | 0 |
| 38 | 16000 | 6 | 5 | 0 | 4 |
| 39 | 7000 | 5 | 2 | 2 | 4 |
| 40 | 16000 | 4 | 2 | 3 | 4 |
| 41 | 5000 | 4 | 5 | 0 | 1 |
| 42 | 13000 | 5 | 4 | 1 | 2 |
| 43 | 49000 | 5 | 3 | 0 | 1 |
| 44 | 7000 | 6 | 5 | 2 | 2 |
| 45 | 36000 | 7 | 4 | 0 | 0 |
| 46 | 19000 | 1 | 1 | 4 | 5 |
| 47 | 17000 | 4 | 5 | 0 | 4 |
| 48 | 11000 | 3 | 0 | 3 | 7 |
| 49 | 6000 | 6 | 5 | 2 | 1 |
| 50 | 14000 | 3 | 0 | 4 | 6 |
Data yang digunakan bersumber dari kaggle berisikan 660 data, kemudian dipilih secara acak sebanyak 50 data. Data ini berisikan data customer bank dengan beberapa variabel, yaitu:
Sl_No: Nomor urut atau nomor seri customer.
Avg_Credit_Limit: Rata-rata batas kredit yang diberikan kepada pelanggan.
Total_Credit_Cards: Jumlah kartu kredit yang dimiliki oleh pelanggan.
Total_visits_bank: Jumlah kunjungan pelanggan ke bank fisik.
Total_visits_online: Jumlah kunjungan pelanggan ke platform perbankan online.
Total_calls_made: Jumlah panggilan telepon yang dilakukan pelanggan ke call center atau layanan pelanggan.
> library(readxl)
> library(cluster)
> library(factoextra)
> library(clValid)
> library(dplyr)
> library(knitr)
> library(kableExtra)
> library(rmarkdown)Fungsi library yang digunakan
readxl : Membaca file
Excel.
cluster : Clustering dan analisis
klaster.
factoextra : Visualisasi analisis
multivariat.
clValid : Validasi model
clustering.
dplyr : Manipulasi dan transformasi
data.
knitr : Membuat laporan dinamis
dengan kode R.
kableExtra : Meningkatkan tampilan
tabel untuk laporan.
rmarkdown : Membuat laporan dinamis
dalam berbagai format.
> #Input Data
> Customer <- read_excel("C:/Users/WINDOWS 11/Downloads/Data Projek Praktikum AnMul.xlsx")
> View(Customer)
>
> #Standarisasi data
> datcus <- data.frame(scale(Customer[, 2:6]))
>
> #Statistik Deskriptif
> summary(Customer)
>
> #Menentukan Jumlah Cluster
> #1.Menggunakan Metode Elbow
> fviz_nbclust(datcus, kmeans, method = "wss")
> #2.Menggunakan Metode silhouette
> fviz_nbclust(datcus, kmeans, method = "silhouette")
> #3.Menggunakan Indeks Validitas
> inval <- clValid(datcus, nClust = 2:10, clMethods = "kmeans", validation = "internal", metric = "manhattan")
> summary(inval)
> optimalScores(inval)
> plot(inval)
>
> #Tahapan k-means clustering
> set.seed(123)
> km <- kmeans(datcus, centers = 2, nstart =25)
> km
> #Mendapatkan Informasi Karakteristik Cluster
> datcus %>%
+ mutate(cluster = km$cluster) %>%
+ group_by(cluster) %>%
+ summarise_all(mean)
> #Menampilkan Data Kelompok Cluster
> hasil_kmeans = data.frame(datcus[, 1:5], km$cluster)
> hasil_kmeans
> #Membuat Plot Clustering
> str(km)
> fviz_cluster(km, data = datcus,
+ palette = c("darkblue", "maroon")) Sl_No Avg_Credit_Limit Total_Credit_Cards Total_visits_bank
Min. : 1.00 Min. : 5000 Min. :1.00 Min. :0.00
1st Qu.:13.25 1st Qu.: 11500 1st Qu.:3.00 1st Qu.:1.00
Median :25.50 Median : 17000 Median :4.50 Median :2.00
Mean :25.50 Mean : 25300 Mean :4.28 Mean :2.46
3rd Qu.:37.75 3rd Qu.: 31750 3rd Qu.:6.00 3rd Qu.:4.00
Max. :50.00 Max. :163000 Max. :8.00 Max. :5.00
Total_visits_online Total_calls_made
Min. :0.00 Min. : 0.00
1st Qu.:0.25 1st Qu.: 1.00
Median :2.00 Median : 3.00
Mean :1.80 Mean : 3.26
3rd Qu.:2.00 3rd Qu.: 5.00
Max. :7.00 Max. :10.00
> #3.Menggunakan Indeks Validitas
> inval <- clValid(datcus, nClust = 2:10, clMethods = "kmeans", validation = "internal", metric = "manhattan")
> summary(inval)
Clustering Methods:
kmeans
Cluster sizes:
2 3 4 5 6 7 8 9 10
Validation Measures:
2 3 4 5 6 7 8 9 10
kmeans Connectivity 2.9290 6.7048 19.7290 30.7361 30.5250 38.6671 48.8762 57.3468 59.3885
Dunn 0.7144 0.2109 0.2004 0.1596 0.1549 0.2321 0.2392 0.1603 0.1671
Silhouette 0.5873 0.4937 0.3399 0.3226 0.3350 0.3209 0.3183 0.3045 0.3002
Optimal Scores:
Score Method Clusters
Connectivity 2.9290 kmeans 2
Dunn 0.7144 kmeans 2
Silhouette 0.5873 kmeans 2 > optimalScores(inval)
Score Method Clusters
Connectivity 2.9289683 kmeans 2
Dunn 0.7143656 kmeans 2
Silhouette 0.5873387 kmeans 2
Penentuan banyak cluster yang terbentuk menggunakan metode elbow, metode
silhouete, dan indeks validasi menghasilkan hasil yang sama yaitu
sebanyak 2 kluster.
K-means clustering with 2 clusters of sizes 18, 32
Cluster means:
Avg_Credit_Limit Total_Credit_Cards Total_visits_bank Total_visits_online
1 -0.4550671 -1.0734054 -0.9313257 0.8326715
2 0.2559752 0.6037905 0.5238707 -0.4683777
Total_calls_made
1 1.0495758
2 -0.5903864
Clustering vector:
[1] 2 2 1 2 1 2 1 1 2 2 1 2 2 2 2 2 2 2 1 2 1 2 2 2 1 1 2 2 2 1 1 1 2 2 1 1 2 2
[39] 2 1 2 2 2 2 2 1 2 1 2 1
Within cluster sum of squares by cluster:
[1] 27.63446 104.25794
(between_SS / total_SS = 46.2 %)
Available components:
[1] "cluster" "centers" "totss" "withinss" "tot.withinss"
[6] "betweenss" "size" "iter" "ifault"
Cluster means menunjukkan rata-rata masing-masing cluster pada setiap variabel.
Clustering vector menunjukkan pembagian setiap data ke dalam Cluster 1 atau Cluster 2.
Within-Cluster Sum of Squares (WCSS) adalah metrik yang mengukur seberapa dekat data dalam sebuah cluster terhadap centroidnya (titik pusat cluster). WCSS cluster 1 sebesar 104,25794 lebih besar dibandingkan dengan cluster 2 yang memiliki WCSS sebesar 27,63446, hal itu menunjukkan bahwa anggota cluster 1 lebih banyak daripada cluster 2.
# A tibble: 2 × 6
cluster Avg_Credit_Limit Total_Credit_Cards Total_visits_bank
<int> <dbl> <dbl> <dbl>
1 1 -0.455 -1.07 -0.931
2 2 0.256 0.604 0.524
# ℹ 2 more variables: Total_visits_online <dbl>, Total_calls_made <dbl>
Karakteristik Cluster 1 : Customer yang menjadi anggota cluster 1 memiliki rata-rata batas kredit yang tinggi, kartu kredit yang banyak, dan sering mengunjungi kantor bank. Karakteristik Cluster 2 : Customer yang menjadi anggota cluster 2 sering mengunjungi platform online bank dan sering melakukan panggilan ke call center atau layanan pelanggan bank.
Avg_Credit_Limit Total_Credit_Cards Total_visits_bank Total_visits_online
1 0.2198205 -0.1460573 0.9823572 0.1218544
2 -0.4357846 -0.1460573 -0.2934314 -1.0966892
3 -0.2815245 -0.1460573 -0.9313257 0.7311262
4 0.8368606 0.3755760 1.6202515 -0.4874174
5 -0.7828696 -1.7109572 -0.2934314 0.1218544
6 0.1812555 1.4188425 0.3444629 -0.4874174
7 -0.4743496 -1.7109572 -0.9313257 0.1218544
8 -0.5514796 -0.6676906 -0.9313257 1.9496697
9 0.2198205 1.4188425 0.3444629 -1.0966892
10 0.2583855 1.4188425 0.9823572 -1.0966892
11 -0.3972196 -1.7109572 -0.9313257 0.1218544
12 0.4897756 -0.1460573 0.3444629 -1.0966892
13 1.7238557 0.8972093 -0.2934314 -1.0966892
14 0.4512106 1.4188425 -0.2934314 -0.4874174
15 0.4512106 0.3755760 -0.2934314 -0.4874174
16 0.2198205 -0.1460573 0.9823572 -0.4874174
17 -0.7443046 0.3755760 -0.2934314 -0.4874174
18 5.3104013 1.9404758 -0.9313257 3.1682133
19 -0.5514796 -1.1893239 -0.2934314 0.1218544
20 1.6081607 0.8972093 -0.2934314 0.1218544
21 -0.4743496 -0.6676906 -1.5692200 1.9496697
22 -0.7443046 0.3755760 -0.2934314 0.1218544
23 1.8395508 0.8972093 -0.2934314 -1.0966892
24 -0.2043945 0.3755760 0.9823572 -0.4874174
25 -0.5514796 -1.7109572 -0.2934314 0.1218544
26 -0.4357846 -1.1893239 -0.9313257 1.9496697
27 -0.2815245 0.3755760 -0.2934314 0.1218544
28 0.5669056 0.3755760 0.3444629 -0.4874174
29 -0.6286096 0.3755760 -0.2934314 0.1218544
30 -0.3200895 -1.7109572 -0.9313257 1.3403980
31 -0.3200895 -1.1893239 -1.5692200 0.7311262
32 -0.3200895 -0.1460573 -0.9313257 0.1218544
33 0.3740806 0.8972093 0.3444629 -0.4874174
34 -0.2815245 0.8972093 1.6202515 -1.0966892
35 -0.6671746 -1.7109572 -0.2934314 0.1218544
36 -0.4743496 -0.6676906 -1.5692200 1.3403980
37 -0.4743496 -0.1460573 1.6202515 -1.0966892
38 -0.3586546 0.8972093 1.6202515 -1.0966892
39 -0.7057396 0.3755760 -0.2934314 0.1218544
40 -0.3586546 -0.1460573 -0.2934314 0.7311262
41 -0.7828696 -0.1460573 1.6202515 -1.0966892
42 -0.4743496 0.3755760 0.9823572 -0.4874174
43 0.9139906 0.3755760 0.3444629 -1.0966892
44 -0.7057396 0.8972093 1.6202515 0.1218544
45 0.4126456 1.4188425 0.9823572 -1.0966892
46 -0.2429595 -1.7109572 -0.9313257 1.3403980
47 -0.3200895 -0.1460573 1.6202515 -1.0966892
48 -0.5514796 -0.6676906 -1.5692200 0.7311262
49 -0.7443046 0.8972093 1.6202515 0.1218544
50 -0.4357846 -0.6676906 -1.5692200 1.3403980
Total_calls_made km.cluster
1 -0.84850441 2
2 -1.22394883 2
3 2.53049544 1
4 -0.47305998 2
5 0.65327330 1
6 -1.22394883 2
7 0.65327330 1
8 0.27782888 1
9 -0.47305998 2
10 -0.09761555 2
11 1.40416216 1
12 -1.22394883 2
13 -0.09761555 2
14 -0.84850441 2
15 -0.09761555 2
16 -1.22394883 2
17 -1.22394883 2
18 -0.84850441 2
19 1.40416216 1
20 -0.47305998 2
21 2.53049544 1
22 -0.84850441 2
23 -0.47305998 2
24 -1.22394883 2
25 1.02871773 1
26 0.65327330 1
27 -0.47305998 2
28 0.27782888 2
29 -1.22394883 2
30 1.77960658 1
31 0.65327330 1
32 1.40416216 1
33 0.27782888 2
34 0.27782888 2
35 0.27782888 1
36 0.27782888 1
37 -1.22394883 2
38 0.27782888 2
39 0.27782888 2
40 0.27782888 1
41 -0.84850441 2
42 -0.47305998 2
43 -0.84850441 2
44 -0.47305998 2
45 -1.22394883 2
46 0.65327330 1
47 0.27782888 2
48 1.40416216 1
49 -0.84850441 2
50 1.02871773 1
Cluster 1 memiliki 31 anggota dan cluster 2 memiliki 19 anggota.
> str(km)
List of 9
$ cluster : int [1:50] 2 2 1 2 1 2 1 1 2 2 ...
$ centers : num [1:2, 1:5] -0.455 0.256 -1.073 0.604 -0.931 ...
..- attr(*, "dimnames")=List of 2
.. ..$ : chr [1:2] "1" "2"
.. ..$ : chr [1:5] "Avg_Credit_Limit" "Total_Credit_Cards" "Total_visits_bank" "Total_visits_online" ...
$ totss : num 245
$ withinss : num [1:2] 27.6 104.3
$ tot.withinss: num 132
$ betweenss : num 113
$ size : int [1:2] 18 32
$ iter : int 1
$ ifault : int 0
- attr(*, "class")= chr "kmeans"
Plot cluster memberikan gambaran penyebaran cluster, cluster 1 adalah
daerah yang berwarna biru tua dan cluster 2 adalah daerah yang berwarna
merah maroon. Anggota pada cluster 1 lebih banyak dari anggota cluster
2.
Penggunaan analisis clustering metode K-Means dalam mengelompokkan nasabah bank berdasarkan informasi nasabah menghasilkan cluster sebanyak 2 cluster. Cluster 1 teridiri dari 31 anggota yang memiliki karakteristik rata-rata batas kredit yang tinggi, kartu kredit yang banyak, dan sering mengunjungi kantor bank. Pada Cluster 2 memiliki anggota yang lebih sedikit yaitu 19 anggota dengan karakteristik sering mengunjungi platform online bank dan sering melakukan panggilan ke call center atau layanan pelanggan bank.
Pada analisis clustering metode K-Means kasus ini menggunakan empat metode dalam menentukan jumlah cluster optimal, yaitu metode Elbow, metode Sillhouette, indeks Dunn, serta indeks Connectivity agar hasil yang diperoleh lebih valid dan dapat memberikan gambaran yang lebih akurat.
Merliana, N. P. E., & Santoso, A. J. (2015). Analisa Penentuan Jumlah Cluster Terbaik pada Metode K-Means Clustering. Metisen, B. M., & Sari, H. L. (2015). Analisis clustering menggunakan metode K-Means dalam pengelompokkan penjualan produk pada Swalayan Fadhila. Jurnal media infotama, 11(2). Shah, A.(2020). Credit Card Customer Data. Diakses dari https://www.kaggle.com/datasets/aryashah2k/credit-card-customer-data Srisusilawati, P., Burhanudin, J., Trenggana, A. F. M., Anto, M. A., Kusuma, G. P. E., Rahmasari, L. F., … & Dewi, I. C. (2023). Loyalitas Pelanggan.