1 . Pendahuluan

Project ini dilakukan untuk tugas Learning By Building sebagai pendalaman dan pembelajaran mandiri atas materi Cluster. Analisis menggunakan dataset “Credit_Card” untuk membuat segmentasi kostumer yang nantinya akan dipakai untuk menentukan strategi marketing. Datasest memuat perilaku dari 9000 orang pemilik kartu kredit aktif selama 6 bulan yang disusun atas 17 variabel dan 1 Customer ID.


2 . Import Data

credit <- read.csv("Credit_Card/CC GENERAL.csv")
glimpse(credit)
## Rows: 8,950
## Columns: 18
## $ CUST_ID                          <chr> "C10001", "C10002", "C10003", "C10004…
## $ BALANCE                          <dbl> 40.90075, 3202.46742, 2495.14886, 166…
## $ BALANCE_FREQUENCY                <dbl> 0.818182, 0.909091, 1.000000, 0.63636…
## $ PURCHASES                        <dbl> 95.40, 0.00, 773.17, 1499.00, 16.00, …
## $ ONEOFF_PURCHASES                 <dbl> 0.00, 0.00, 773.17, 1499.00, 16.00, 0…
## $ INSTALLMENTS_PURCHASES           <dbl> 95.40, 0.00, 0.00, 0.00, 0.00, 1333.2…
## $ CASH_ADVANCE                     <dbl> 0.0000, 6442.9455, 0.0000, 205.7880, …
## $ PURCHASES_FREQUENCY              <dbl> 0.166667, 0.000000, 1.000000, 0.08333…
## $ ONEOFF_PURCHASES_FREQUENCY       <dbl> 0.000000, 0.000000, 1.000000, 0.08333…
## $ PURCHASES_INSTALLMENTS_FREQUENCY <dbl> 0.083333, 0.000000, 0.000000, 0.00000…
## $ CASH_ADVANCE_FREQUENCY           <dbl> 0.000000, 0.250000, 0.000000, 0.08333…
## $ CASH_ADVANCE_TRX                 <int> 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ PURCHASES_TRX                    <int> 2, 0, 12, 1, 1, 8, 64, 12, 5, 3, 12, …
## $ CREDIT_LIMIT                     <dbl> 1000, 7000, 7500, 7500, 1200, 1800, 1…
## $ PAYMENTS                         <dbl> 201.8021, 4103.0326, 622.0667, 0.0000…
## $ MINIMUM_PAYMENTS                 <dbl> 139.50979, 1072.34022, 627.28479, NA,…
## $ PRC_FULL_PAYMENT                 <dbl> 0.000000, 0.222222, 0.000000, 0.00000…
## $ TENURE                           <int> 12, 12, 12, 12, 12, 12, 12, 12, 12, 1…
# meng-assign nilai dari kolom Distillery menjadi rownames
credit <- credit %>% 
  column_to_rownames(var = "CUST_ID")

head(credit)
##           BALANCE BALANCE_FREQUENCY PURCHASES ONEOFF_PURCHASES
## C10001   40.90075          0.818182     95.40             0.00
## C10002 3202.46742          0.909091      0.00             0.00
## C10003 2495.14886          1.000000    773.17           773.17
## C10004 1666.67054          0.636364   1499.00          1499.00
## C10005  817.71434          1.000000     16.00            16.00
## C10006 1809.82875          1.000000   1333.28             0.00
##        INSTALLMENTS_PURCHASES CASH_ADVANCE PURCHASES_FREQUENCY
## C10001                  95.40        0.000            0.166667
## C10002                   0.00     6442.945            0.000000
## C10003                   0.00        0.000            1.000000
## C10004                   0.00      205.788            0.083333
## C10005                   0.00        0.000            0.083333
## C10006                1333.28        0.000            0.666667
##        ONEOFF_PURCHASES_FREQUENCY PURCHASES_INSTALLMENTS_FREQUENCY
## C10001                   0.000000                         0.083333
## C10002                   0.000000                         0.000000
## C10003                   1.000000                         0.000000
## C10004                   0.083333                         0.000000
## C10005                   0.083333                         0.000000
## C10006                   0.000000                         0.583333
##        CASH_ADVANCE_FREQUENCY CASH_ADVANCE_TRX PURCHASES_TRX CREDIT_LIMIT
## C10001               0.000000                0             2         1000
## C10002               0.250000                4             0         7000
## C10003               0.000000                0            12         7500
## C10004               0.083333                1             1         7500
## C10005               0.000000                0             1         1200
## C10006               0.000000                0             8         1800
##         PAYMENTS MINIMUM_PAYMENTS PRC_FULL_PAYMENT TENURE
## C10001  201.8021         139.5098         0.000000     12
## C10002 4103.0326        1072.3402         0.222222     12
## C10003  622.0667         627.2848         0.000000     12
## C10004    0.0000               NA         0.000000     12
## C10005  678.3348         244.7912         0.000000     12
## C10006 1400.0578        2407.2460         0.000000     12

Berikut adalah deskripsi dari variabel pada dataset di atas.

  • CUSTID : Identifikasi dari pemegang kartu kredit

  • BALANCE: Jumlah uang yang tersisa di akun mereka untuk melakukan pembelian

  • BALANCEFREQUENCY: Seberapa sering balance diupdate, score antara 0 dan 1 (1 = Sering diupdate, 0 = Tidak sering diupdate)

  • PURCHASES: Jumlah nilai pembelian yang dilakukan

  • ONEOFFPURCHASES: Maksimum nilai pembelian dilakukan sekali transaksi cash

  • INSTALLMENTSPURCHASES: Jumlah nilai pembelian yang dilakukan dengan cicilan

  • CASHADVANCE: Penarikan tunai oleh user

  • PURCHASESFREQUENCY: Seberapa sering pembelian dilakukan, score antara 0 dan 1 (1 = Sering melakukan pembelian, 0 = Tidak sering melakukan pembelian)

  • ONEOFFPURCHASESFREQUENCY: Seberapa sering pembelian dilakukan cash, score antara 0 dan 1 (1 = Sering dilakukan, 0 = Tidak sering dilakukan)

  • PURCHASESINSTALLMENTSFREQUENCY: Seberapa sering pembelian dilakukan cicil, score antara 0 dan 1 (1 = Sering dilakukan, 0 = Tidak sering dilakukan)

  • CASHADVANCEFREQUENCY: Seberapa sering penarikan tunai dibayar

  • CASHADVANCETRX: Jumlah transaksi melalui penarikan tunai

  • PURCHASESTRX: Jumlah transaksi pembelian

  • CREDITLIMIT: Limit Kartu Kredit

  • PAYMENTS: Jumlah nilai pembayaran yang dilakukan

  • MINIMUM_PAYMENTS: Nilai pembayaran minimum yang dilakukan

  • PRCFULLPAYMENT: Persentase pembayaran full payment

  • TENURE : Jangka waktu pinjaman

Seluruh variabel yang ada pada dataset akan digunakan dalam proses cluster. Tidak perlu dilakukan perubahan jenis data karena semua data pada dataset sudah berbentuk Numerik sehingga bisa langsung digunakan.


3 . Cek Kelengkapan Data

Kita perlu untuk melakukan cek kelengkapan data untuk memastikan tidak ada data yang bolong.

colSums(is.na(credit))
##                          BALANCE                BALANCE_FREQUENCY 
##                                0                                0 
##                        PURCHASES                 ONEOFF_PURCHASES 
##                                0                                0 
##           INSTALLMENTS_PURCHASES                     CASH_ADVANCE 
##                                0                                0 
##              PURCHASES_FREQUENCY       ONEOFF_PURCHASES_FREQUENCY 
##                                0                                0 
## PURCHASES_INSTALLMENTS_FREQUENCY           CASH_ADVANCE_FREQUENCY 
##                                0                                0 
##                 CASH_ADVANCE_TRX                    PURCHASES_TRX 
##                                0                                0 
##                     CREDIT_LIMIT                         PAYMENTS 
##                                1                                0 
##                 MINIMUM_PAYMENTS                 PRC_FULL_PAYMENT 
##                              313                                0 
##                           TENURE 
##                                0

Pada datase ditemukan ada beberapa kolom yang datanya tidak lengkap, yakni: MINIMUM_PAYMENTS sebanyak 313 baris dan CREDIT_LIMIT sebanyak 1 baris. Seluruh baris yang datanya tidak lengkap akan dibuang.

credit_clean <-  drop_na(credit)
#colSums(is.na(credit_clean))


4 . Cek Skala Antar Variabel

Setelah data dinilai lengkap dan sesuai selanjutnya dilakukan pengecekan terhadap skala antar variabel.

summary(credit_clean)
##     BALANCE        BALANCE_FREQUENCY   PURCHASES        ONEOFF_PURCHASES  
##  Min.   :    0.0   Min.   :0.0000    Min.   :    0.00   Min.   :    0.00  
##  1st Qu.:  148.1   1st Qu.:0.9091    1st Qu.:   43.37   1st Qu.:    0.00  
##  Median :  916.9   Median :1.0000    Median :  375.40   Median :   44.99  
##  Mean   : 1601.2   Mean   :0.8950    Mean   : 1025.43   Mean   :  604.90  
##  3rd Qu.: 2105.2   3rd Qu.:1.0000    3rd Qu.: 1145.98   3rd Qu.:  599.10  
##  Max.   :19043.1   Max.   :1.0000    Max.   :49039.57   Max.   :40761.25  
##  INSTALLMENTS_PURCHASES  CASH_ADVANCE     PURCHASES_FREQUENCY
##  Min.   :    0.00       Min.   :    0.0   Min.   :0.00000    
##  1st Qu.:    0.00       1st Qu.:    0.0   1st Qu.:0.08333    
##  Median :   94.78       Median :    0.0   Median :0.50000    
##  Mean   :  420.84       Mean   :  994.2   Mean   :0.49600    
##  3rd Qu.:  484.15       3rd Qu.: 1132.4   3rd Qu.:0.91667    
##  Max.   :22500.00       Max.   :47137.2   Max.   :1.00000    
##  ONEOFF_PURCHASES_FREQUENCY PURCHASES_INSTALLMENTS_FREQUENCY
##  Min.   :0.00000            Min.   :0.0000                  
##  1st Qu.:0.00000            1st Qu.:0.0000                  
##  Median :0.08333            Median :0.1667                  
##  Mean   :0.20591            Mean   :0.3688                  
##  3rd Qu.:0.33333            3rd Qu.:0.7500                  
##  Max.   :1.00000            Max.   :1.0000                  
##  CASH_ADVANCE_FREQUENCY CASH_ADVANCE_TRX  PURCHASES_TRX     CREDIT_LIMIT  
##  Min.   :0.0000         Min.   :  0.000   Min.   :  0.00   Min.   :   50  
##  1st Qu.:0.0000         1st Qu.:  0.000   1st Qu.:  1.00   1st Qu.: 1600  
##  Median :0.0000         Median :  0.000   Median :  7.00   Median : 3000  
##  Mean   :0.1376         Mean   :  3.314   Mean   : 15.03   Mean   : 4522  
##  3rd Qu.:0.2500         3rd Qu.:  4.000   3rd Qu.: 18.00   3rd Qu.: 6500  
##  Max.   :1.5000         Max.   :123.000   Max.   :358.00   Max.   :30000  
##     PAYMENTS        MINIMUM_PAYMENTS   PRC_FULL_PAYMENT     TENURE     
##  Min.   :    0.05   Min.   :    0.02   Min.   :0.0000   Min.   : 6.00  
##  1st Qu.:  418.56   1st Qu.:  169.16   1st Qu.:0.0000   1st Qu.:12.00  
##  Median :  896.68   Median :  312.45   Median :0.0000   Median :12.00  
##  Mean   : 1784.48   Mean   :  864.30   Mean   :0.1593   Mean   :11.53  
##  3rd Qu.: 1951.14   3rd Qu.:  825.50   3rd Qu.:0.1667   3rd Qu.:12.00  
##  Max.   :50721.48   Max.   :76406.21   Max.   :1.0000   Max.   :12.00

Pada dataset ditemukan perbedaan skala yang cukup besar di antara variabel yang ada karena itu perlu dilakukan scaling agar perbedaan range antar variabel tidak terlalu besar.

credit_clean_scale <- scale(credit_clean)
summary(credit_clean_scale)
##     BALANCE        BALANCE_FREQUENCY    PURCHASES        ONEOFF_PURCHASES   
##  Min.   :-0.7641   Min.   :-4.30933   Min.   :-0.47318   Min.   :-0.359139  
##  1st Qu.:-0.6934   1st Qu.: 0.06767   1st Qu.:-0.45317   1st Qu.:-0.359139  
##  Median :-0.3266   Median : 0.50538   Median :-0.29995   Median :-0.332425  
##  Mean   : 0.0000   Mean   : 0.00000   Mean   : 0.00000   Mean   : 0.000000  
##  3rd Qu.: 0.2405   3rd Qu.: 0.50538   3rd Qu.: 0.05563   3rd Qu.:-0.003444  
##  Max.   : 8.3232   Max.   : 0.50538   Max.   :22.15586   Max.   :23.841455  
##  INSTALLMENTS_PURCHASES  CASH_ADVANCE      PURCHASES_FREQUENCY
##  Min.   :-0.45881       Min.   :-0.46863   Min.   :-1.236067  
##  1st Qu.:-0.45881       1st Qu.:-0.46863   1st Qu.:-1.028396  
##  Median :-0.35548       Median :-0.46863   Median : 0.009968  
##  Mean   : 0.00000       Mean   : 0.00000   Mean   : 0.000000  
##  3rd Qu.: 0.06902       3rd Qu.: 0.06515   3rd Qu.: 1.048332  
##  Max.   :24.07116       Max.   :21.75062   Max.   : 1.256004  
##  ONEOFF_PURCHASES_FREQUENCY PURCHASES_INSTALLMENTS_FREQUENCY
##  Min.   :-0.6862            Min.   :-0.9265                 
##  1st Qu.:-0.6862            1st Qu.:-0.9265                 
##  Median :-0.4085            Median :-0.5078                 
##  Mean   : 0.0000            Mean   : 0.0000                 
##  3rd Qu.: 0.4247            3rd Qu.: 0.9575                 
##  Max.   : 2.6465            Max.   : 1.5855                 
##  CASH_ADVANCE_FREQUENCY CASH_ADVANCE_TRX   PURCHASES_TRX      CREDIT_LIMIT    
##  Min.   :-0.6819        Min.   :-0.47941   Min.   :-0.5970   Min.   :-1.2221  
##  1st Qu.:-0.6819        1st Qu.:-0.47941   1st Qu.:-0.5573   1st Qu.:-0.7986  
##  Median :-0.6819        Median :-0.47941   Median :-0.3190   Median :-0.4160  
##  Mean   : 0.0000        Mean   : 0.00000   Mean   : 0.0000   Mean   : 0.0000  
##  3rd Qu.: 0.5570        3rd Qu.: 0.09925   3rd Qu.: 0.1178   3rd Qu.: 0.5405  
##  Max.   : 6.7515        Max.   :17.31443   Max.   :13.6203   Max.   : 6.9626  
##     PAYMENTS        MINIMUM_PAYMENTS   PRC_FULL_PAYMENT       TENURE       
##  Min.   :-0.61325   Min.   :-0.36428   Min.   :-0.53770   Min.   :-4.2216  
##  1st Qu.:-0.46942   1st Qu.:-0.29299   1st Qu.:-0.53770   1st Qu.: 0.3552  
##  Median :-0.30511   Median :-0.23260   Median :-0.53770   Median : 0.3552  
##  Mean   : 0.00000   Mean   : 0.00000   Mean   : 0.00000   Mean   : 0.0000  
##  3rd Qu.: 0.05728   3rd Qu.:-0.01636   3rd Qu.: 0.02485   3rd Qu.: 0.3552  
##  Max.   :16.81794   Max.   :31.83974   Max.   : 2.83759   Max.   : 0.3552


5 . K-means

kita akan melakukan clustering dengan menggunakan metode K-Means. K-means adalah centroid-based clustering algorithms, artinya tiap cluster memiliki satu centroid/titik pusat yang mewakili cluster tersebut (sebanyak k). Pengelompokkan data berdasarkan kemiripan karakteristik, dimana observasi pada satu cluster yang sama semakin mirip dan sebaliknya observasi dari cluster yang berbeda semakin berbeda/jauh.

5.1 Memilih Nilai K Optimum

Penentuan k optimum menggunakan elbow method pada visualisasi dengan menggunakan fungsi fviz_nbclust()

fviz_nbclust(x = credit_clean_scale, FUNcluster = kmeans, method = "wss")

Terlihat bahwa K-optimum ada di angka 4

# k-means dengan 3 cluster
RNGkind(sample.kind = "Rounding")
## Warning in RNGkind(sample.kind = "Rounding"): non-uniform 'Rounding' sampler
## used
set.seed(100)

credit_kmeans <- kmeans(x = credit_clean_scale, centers = 4)
credit_kmeans_6 <- kmeans(x = credit_clean_scale, centers = 6) #sebagai pembanding untuk nilai Rasio BSS/TSS

Untuk melihat kebaikan dari hasil Clustering, analisis ini akan menggunakan Rasio BSS/TSS. Hasil yang bagus adalah ketika angka dari Rasio BSS/TSS mendekati 1 karena kelompok hasil clustering semakin mewakili persebaran data yang sesungguhnya

# cek rasio BSS/TSS
credit_kmeans$betweenss/credit_kmeans$totss
## [1] 0.3485114
credit_kmeans_6$betweenss/credit_kmeans$totss
## [1] 0.4435349

Hasil Rasio BSS/TSS dari cluster yang terbentuk berada di angka 0.3485 tidak jauh berbeda dengan rasionya ketika cluster berjumlah lebih banyak (6). Hal ini berarti cluster yang terbentuk sudah baik karena rasio mendekati angka 1 dan jumlah cluster masih terhitung sedikit (4).

5.2 Banyaknya observasi pada tiap cluster

Dari hasil cluster yang sudah dibuat kita dapat melihat jumlah observasi untuk tiap cluster

credit_kmeans$size
## [1] 3814 3276 1155  391

5.3 Profiling Cluster

5.3.1 Letak pusat cluster/centroid

Perlu dilakukan penentuan pusat cluster yang akan digunakan untuk melihat profil dan membuat label untuk masing-masing cluster berdasarkan 17 variabel yang ada pada dataset.

as.data.frame(credit_kmeans$centers)
##      BALANCE BALANCE_FREQUENCY  PURCHASES ONEOFF_PURCHASES
## 1 -0.2583188        -0.3658865 -0.3465002     -0.233693191
## 2 -0.3262022         0.2468721  0.1126475      0.004264522
## 3  1.4570937         0.3570119 -0.2403425     -0.169600023
## 4  0.9486524         0.4460078  3.1460718      2.744816577
##   INSTALLMENTS_PURCHASES CASH_ADVANCE PURCHASES_FREQUENCY
## 1             -0.3895629   -0.1833030          -0.7988029
## 2              0.2582812   -0.3653530           0.9771706
## 3             -0.2566518    1.6943725          -0.5129989
## 4              2.3941088   -0.1559753           1.1200438
##   ONEOFF_PURCHASES_FREQUENCY PURCHASES_INSTALLMENTS_FREQUENCY
## 1                 -0.3929036                       -0.7162568
## 2                  0.3222531                        0.8691288
## 3                 -0.2206328                       -0.4552502
## 4                  1.7843074                        1.0494916
##   CASH_ADVANCE_FREQUENCY CASH_ADVANCE_TRX PURCHASES_TRX CREDIT_LIMIT   PAYMENTS
## 1            -0.09246162       -0.1599999    -0.4767967  -0.34588946 -0.2654666
## 2            -0.46456538       -0.3613717     0.2977302  -0.06928368 -0.1386313
## 3             1.73410714        1.6120383    -0.2891468   0.85427789  0.6090544
## 4            -0.32820699       -0.1734290     3.0104937   1.43095846  1.9518869
##   MINIMUM_PAYMENTS PRC_FULL_PAYMENT      TENURE
## 1      -0.12270995       -0.2524492 -0.04363260
## 2      -0.08902596        0.3881404  0.05316575
## 3       0.49496706       -0.4183565 -0.11373867
## 4       0.48076171        0.4462792  0.31614291

Memasukkan nama untuk masing-masing cluster ke data awal dengan nama label_cluster

credit_clean$label_cluster <- credit_kmeans$cluster

Melakukan profiling dengan summarise data

credit_clean_centroid <- credit_clean %>% 
  group_by(label_cluster) %>%
  summarise_all(mean)

credit_clean_centroid
## # A tibble: 4 × 18
##   label_cluster BALANCE BALANCE_FREQUENCY PURCHASES ONEOFF_PURCHASES
##           <int>   <dbl>             <dbl>     <dbl>            <dbl>
## 1             1   1060.             0.819      275.             211.
## 2             2    918.             0.946     1270.             612.
## 3             3   4655.             0.969      505.             319.
## 4             4   3589.             0.988     7843.            5228.
## # … with 13 more variables: INSTALLMENTS_PURCHASES <dbl>, CASH_ADVANCE <dbl>,
## #   PURCHASES_FREQUENCY <dbl>, ONEOFF_PURCHASES_FREQUENCY <dbl>,
## #   PURCHASES_INSTALLMENTS_FREQUENCY <dbl>, CASH_ADVANCE_FREQUENCY <dbl>,
## #   CASH_ADVANCE_TRX <dbl>, PURCHASES_TRX <dbl>, CREDIT_LIMIT <dbl>,
## #   PAYMENTS <dbl>, MINIMUM_PAYMENTS <dbl>, PRC_FULL_PAYMENT <dbl>,
## #   TENURE <dbl>

Menampilkan cluster dengan nilai terendah dan tertinggi untuk masing-masing karakteristik

credit_clean_centroid %>% 
  tidyr::pivot_longer(-label_cluster) %>% 
  group_by(name) %>% 
  summarize(cluster_min_val = which.min(value),
            cluster_max_val = which.max(value))
## # A tibble: 17 × 3
##    name                             cluster_min_val cluster_max_val
##    <chr>                                      <int>           <int>
##  1 BALANCE                                        2               3
##  2 BALANCE_FREQUENCY                              1               4
##  3 CASH_ADVANCE                                   2               3
##  4 CASH_ADVANCE_FREQUENCY                         2               3
##  5 CASH_ADVANCE_TRX                               2               3
##  6 CREDIT_LIMIT                                   1               4
##  7 INSTALLMENTS_PURCHASES                         1               4
##  8 MINIMUM_PAYMENTS                               1               3
##  9 ONEOFF_PURCHASES                               1               4
## 10 ONEOFF_PURCHASES_FREQUENCY                     1               4
## 11 PAYMENTS                                       1               4
## 12 PRC_FULL_PAYMENT                               3               4
## 13 PURCHASES                                      1               4
## 14 PURCHASES_FREQUENCY                            1               4
## 15 PURCHASES_INSTALLMENTS_FREQUENCY               1               4
## 16 PURCHASES_TRX                                  1               4
## 17 TENURE                                         3               4

5.3.2 Hasil Profiling dan Kesimpulan:

Cluster 1:

  • Paling tinggi: None

  • Paling rendah: Balance Frequency, Credit Limit, Installment Purchase, Minimum Payment, Oneoff Purchase, One Off Purchase Frequency, Payments, Purchase, Purchase Frequency, Purchases Installments Frequency, PurchasesTrx.

  • Insight: Kustomer dengan penggunaan kartu kredit biasa-biasa saja/minimum, dan sangat mengindari belanja baik dengan atau tanpa cicilan.

Cluster 2:

  • Paling tinggi: None

  • Paling rendah: Balance, Cash Advance, Cash Advance Frequency, Cash Advance Transaksi.

  • Insight: Kustomer dengan penggunaan kartu kredit biasa-biasa saja/minimum, dan sangat menghindari adanya tarik tunai.

Cluster 3:

  • Paling tinggi: Balance, Cash Advance, Cash Advance Frequency, Cash Advance Transaksi, Minimum Payment.

  • Paling rendah: Tenure

  • Insight: Kustomer dengan kebutuhan tarik tunai tinggi, kartu kredit jarang digunkan untuk pembelian cicilan terutama dengan jangka waktu yang panjang.

Cluster 4:

  • Paling tinggi: Balance Frequency, Credit Limit, Installment Purchase, Oneoff Purchase, Oneoff Purchase Frequency, Payments, Purchase, Purchase Frequency, Purchases Installments Frequency, PurchasesTrx, Tenure.

  • Paling rendah: None

  • Insight: Kustomer dengan penggunaan kartu kredit yang sangat maksimal untuk tujuan belanja, baik dengan atau tanpa cicilan.

Insight pada masing-masing cluster di atas kemudian dapat digunakan oleh bank yang memberikan layanan kartu kredit tersebut untuk membuat strategi yang mampu menyasar masing-masing cluster yang disesuaikan tujuan dan jumlah resources yang ingin diinvestasikan, seperti misalnya memberikan informasi promo terbaru untuk kustomer yang sudah sering menggunakan kartu kredit untuk keperluan belanja dan memberikan informasi manfaat-manfaat kartu kredit lainnya di luar pembelanjaan (contoh: cash advance dan asuransi) untuk kustomer yang tidak banyak menggunakan kartu kredit yang mereka miliki untuk keperluan belanja.

6 . Visualisasi Cluster

Jika kita ingin buat sebuah visualisasi yang mempermudah cluster profiling, dimana tampil gabungan individual + variable factor map menjadi satu. Visualisasi dapat dibuat menggunakan fungsi fviz_pca_biplot() dari package factoextra.

# PCA menggunakan FactoMineR
credit_pca <- PCA(X = credit_clean, # data awal
                  scale.unit = T, #tidak dilakukan scaling
                  graph = F)
# visualisasi PCA + hasil kmeans clustering
fviz_pca_biplot(X = credit_pca,
                habillage = "label_cluster",
                geom.ind = "point",
                addEllipses = TRUE,
                alpha.var = 0.1,
                col.var = "#7b7675")