Analisis Cluster Metode K-Means Pada Pengelompokan Nasabah Bank Berdasarkan Informasi Nasabah

Lia Rahma Fauziah

2024-11-28


1 PENDAHULUAN

1.1 Latar Belakang

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.

1.2 Rumusan Masalah

Bagaimana pengelompokan nasabah (customer) bank berdasarkan informasi nasabah menggunakan analisis cluster non-hierarki metode K-Means?

1.3 Tujuan

Untuk mengelompokkan nasabah (customer) bank berdasarkan informasi nasabah menggunakan analisis cluster non-hierarki metode K-Means.

2 TINJAUAN PUSTAKA

2.1 Pengertian Clustering

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.

2.2 Pengertian Analisis Cluster Metode K-Means

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.

2.3 Tahapan Analisis Cluster Metode K-Means

Tahapan analisis K-Means sebagai berikut :

  1. Tentukan k sebagai jumlah cluster yang akan dibentuk

  2. Tentukan k Centroid (titik pusat cluster) awal secara random/acak.

  3. Hitung jarak setiap objek ke masing-masing centroid dari masing-masing cluster.

  4. Alokasikan masing-masing objek ke dalam centroid yang paling dekat.

  5. Lakukan iterasi, kemudian tentukan posisi centroid baru dengan menggunakan persamaan (1).

3 DATA

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.

4 SOURCE CODE

4.1 Library

> library(readxl)
> library(cluster)
> library(factoextra)
> library(clValid)
> library(dplyr)
> library(knitr)
> library(kableExtra)
> library(rmarkdown)

Fungsi library yang digunakan

  1. readxl : Membaca file Excel.

  2. cluster : Clustering dan analisis klaster.

  3. factoextra : Visualisasi analisis multivariat.

  4. clValid : Validasi model clustering.

  5. dplyr : Manipulasi dan transformasi data.

  6. knitr : Membuat laporan dinamis dengan kode R.

  7. kableExtra : Meningkatkan tampilan tabel untuk laporan.

  8. rmarkdown : Membuat laporan dinamis dalam berbagai format.

4.2 Clustering Non-Hierarki K-Means

> #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"))

5 HASIL DAN PEMBAHASAN

5.1 Input Data

> #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]))

5.2 Statistik Deskriptif

     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   

5.3 Penentuan Banyak Cluster (K)

> #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)

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
> plot(inval)

Penentuan banyak cluster yang terbentuk menggunakan metode elbow, metode silhouete, dan indeks validasi menghasilkan hasil yang sama yaitu sebanyak 2 kluster.

5.4 Analisis Cluster K-Means

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.

5.5 Karakteristik Kluster

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

5.6 Anggota Cluster

   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.

5.7 Plot Cluster

> 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"
> fviz_cluster(km, data = datcus,
+              palette = c("darkblue", "maroon"))

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.

6 PENUTUP

6.1 Kesimpulan

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.

6.2 Saran

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.

7 DAFTAR PUSTAKA

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.