Unsupervised Machine Learning - Mall Customer Clustering

Intro

Our project aims to conduct an analysis of the Mall Customers data, which is sourced from Kaggle, using unsupervised machine learning techniques such as K-means clustering and principal component analysis. Specifically, we will assess how Gender, Age, and Income relate to a customer’s spending habits, with the Spending Score serving as an indicator of the amount a customer spends in the mall. This analysis will enable us to identify patterns and group customers based on similarities in their spending habits.

Load Libraries

library(tidyverse)
library(dplyr)
library(GGally)
library(ggplot2)
library(NbClust)
library(factoextra)
library(FactoMineR)
library(rmarkdown)
library(plotly)

Data preprocessing

# Load dataset
mall_data <- read.csv("Mall_Customers.csv")
paged_table(mall_data)

Let’s check our dataset structure.

# Check data structure
glimpse(mall_data)
## Rows: 200
## Columns: 5
## $ CustomerID             <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, …
## $ Genre                  <chr> "Male", "Male", "Female", "Female", "Female", "…
## $ Age                    <int> 19, 21, 20, 23, 31, 22, 35, 23, 64, 30, 67, 35,…
## $ Annual.Income..k..     <int> 15, 15, 16, 16, 17, 17, 18, 18, 19, 19, 19, 19,…
## $ Spending.Score..1.100. <int> 39, 81, 6, 77, 40, 76, 6, 94, 3, 72, 14, 99, 15…

To improve the quality and usability of the data, we will do the following actions:

  • Firstly, we can remove the CustomerID variable as it is not relevant to the analysis.
  • Secondly, we will update the variable name Genre to Gender and converting it to a numeric type (Female = 1, Male = 2).
  • Lastly, we suggest improving the variable names Annual.Income..k.. and Spending.Score..1.100. to make them more descriptive and interpretable.
# Data wrangling
mall_clean <- mall_data %>% 
  rename(Gender = Genre,
         Annual_Income_K = Annual.Income..k..,
         Spending_Score = Spending.Score..1.100.) %>% 
  mutate_if(is.character, as.factor) %>%
  mutate_if(is.factor, as.numeric) %>% 
  select(-CustomerID) %>% 
  glimpse()
## Rows: 200
## Columns: 4
## $ Gender          <dbl> 2, 2, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 1, 2, 2, 1, 2, …
## $ Age             <int> 19, 21, 20, 23, 31, 22, 35, 23, 64, 30, 67, 35, 58, 24…
## $ Annual_Income_K <int> 15, 15, 16, 16, 17, 17, 18, 18, 19, 19, 19, 19, 20, 20…
## $ Spending_Score  <int> 39, 81, 6, 77, 40, 76, 6, 94, 3, 72, 14, 99, 15, 77, 1…

Upon updating our dataset, we will verify whether there is any missing or incomplete information that needs to be addressed.

mall_clean %>% is.na() %>% colSums()
##          Gender             Age Annual_Income_K  Spending_Score 
##               0               0               0               0
paged_table(mall_clean)

Exploratory Data and Analysis

Exploratory Data Analysis (EDA) is a process of analyzing and summarizing data to gain insights and understanding of the dataset. It is typically the first step in any data analysis project and involves visualizing and summarizing the main characteristics of the data.

In this analysis, we will use a density plot to visualize the distribution of the data, and a scatter plot to examine the correlations between variables. Specifically, we will utilize the ggpairs function to create these plots.

# Create plot using ggpairs
ggpairs(mall_clean, showStrips = F) +
  theme(axis.text = element_text(color = "black", size = 11),
        strip.background = element_rect(fill = "black"),
        strip.text = element_text(color = "white", size = 12))

Above analysis reveals that the majority of the variables in the dataset are not strongly correlated with each other.

This is a positive sign, as it suggests that there is low risk of multicollinearity, which is an important assumption for classification models. To further illustrate this finding, we will create a ggcorr plot to visually display the lack of correlation among variables.

# Create plot using ggcorr
ggcorr(mall_clean, label = T)

From above plit, we can observe that there is no strong correlation among the variables in our dataset. This is a positive finding, as it indicates that there is a low risk of multicollinearity in our analysis.

K-Means Clustering

K-Means Clustering is a machine learning algorithm used for grouping similar data points into a given number of clusters. K-Means Clustering is commonly used in a variety of fields, such as customer segmentation, image segmentation, and anomaly detection.

Prior to conducting clustering analysis, it is important to scale the data to ensure equal weighting of all variables. Once the data has been scaled, we can generate an elbow plot to help determine the optimal number of clusters for our analysis.

# Scale our dataset
mall_scaled <- scale(mall_clean)
set.seed(123)
wss <- function(mall_scaled, maxCluster = 20) {
    SSw <- vector()
    for (i in 2:maxCluster) {
        SSw[i] <- sum(kmeans(mall_scaled, 
                             centers = i)$withinss)
    }
    plot(1:maxCluster, 
         SSw, type = "o", 
         xlab = "Cluster Numbers", 
         ylab = "Sum of Squares", pch=20)
}

# Use wss fucnction for whiskies
wss(mall_scaled)

K-means clustering is a partitioning method where the number of clusters is pre-specified. After initial cluster centers are randomly chosen, observations are assigned to the closest centroid and the centroids are recalculated using the mean of the observations in each cluster.

This process is repeated to minimize the total within-cluster variation. To determine the optimal number of clusters, we will use the elbow method. The elbow plot above shows that the optimal number of clusters for this dataset is 7, which we will use to create our K-means model.

The elbow method involves trying different numbers of clusters and observing the within-cluster variation associated with each number. The optimal number of clusters is the point on the plot where adding an additional cluster does not result in a significant reduction of within-cluster variation, resembling an elbow shape.

# Create k-means clustering
set.seed(123)
kmc_model<-kmeans(mall_scaled, 
                  centers=7)
kmc_model
## K-means clustering with 7 clusters of sizes 19, 33, 23, 16, 31, 57, 21
## 
## Cluster means:
##        Gender         Age Annual_Income_K Spending_Score
## 1  1.12532823 -0.02693934       0.9645919     -1.3936702
## 2  0.82085631  1.41861667      -0.5001293     -0.3902949
## 3 -0.01048442 -0.99148062      -1.3439751      1.0613849
## 4 -0.88418647  0.49395063       1.1446914     -1.0557236
## 5  1.12532823 -0.64278241       0.5031157      0.7754870
## 6 -0.88418647 -0.02568342      -0.4421380     -0.3121050
## 7 -0.88418647 -0.47673565       0.9704127      1.2185273
## 
## Clustering vector:
##   [1] 3 3 6 3 6 3 6 3 2 3 2 3 6 3 2 3 6 3 2 3 2 3 6 3 6 3 6 3 6 3 2 3 2 3 6 3 6
##  [38] 3 6 3 2 3 2 6 6 3 6 6 6 6 6 5 6 2 6 2 6 2 6 2 2 5 2 6 2 5 6 2 5 6 2 6 6 6
##  [75] 2 5 6 5 6 6 2 5 2 6 6 2 6 6 6 6 2 5 2 6 6 5 6 6 2 5 6 6 2 5 2 6 2 2 2 2 2
## [112] 6 6 5 6 6 4 6 6 6 5 6 6 5 6 7 1 5 2 5 1 5 6 7 1 7 4 5 1 7 4 5 6 7 1 5 1 7
## [149] 4 5 1 5 4 7 4 7 1 7 1 7 4 7 1 7 1 7 1 7 4 5 1 5 1 5 4 7 1 5 1 5 4 7 1 7 4
## [186] 5 4 5 4 7 4 7 1 7 4 7 4 5 1 5
## 
## Within cluster sum of squares by cluster:
## [1] 22.652343 56.454253 33.705505 14.956446 42.383725 79.367822  8.620733
##  (between_SS / total_SS =  67.6 %)
## 
## Available components:
## 
## [1] "cluster"      "centers"      "totss"        "withinss"     "tot.withinss"
## [6] "betweenss"    "size"         "iter"         "ifault"

We can now add the results of our clustering analysis to our mall_clean dataset.

mall_clean$Cluster <- as.factor(kmc_model$cluster)
mall_clean %>% paged_table()

Displayed below is the cluster plot obtained from the k-means clustering model we built earlier.

set.seed(123)
fviz_cluster(kmc_model, mall_scaled)

Based on our previous clustering results, we can create a cluster profiling.

# Create customer profiling
mall_customer_profile <- mall_clean %>% 
  group_by(Cluster) %>% 
  summarise_all(.funs = "mean")

mall_customer_profile
## # A tibble: 7 × 5
##   Cluster Gender   Age Annual_Income_K Spending_Score
##   <fct>    <dbl> <dbl>           <dbl>          <dbl>
## 1 1         2     38.5            85.9           14.2
## 2 2         1.85  58.7            47.4           40.1
## 3 3         1.43  25              25.3           77.6
## 4 4         1     45.8            90.6           22.9
## 5 5         2     29.9            73.8           70.2
## 6 6         1     38.5            48.9           42.1
## 7 7         1     32.2            86.0           81.7

Based on the above data, we can observe that there are 7 distinct clusters with major differences in terms of spending score.

These clusters can be described as follows:

  • A group of women around 53 years old with a midle spending score.
  • A group of men around 30 years old with a relatively high spending score.
  • A group of women around 32 years old with a relatively high spending score.
  • A group of men around 55 years old with a relatively middle spending score.
  • A group of women around 28 years old with a relatively middle spending score.
  • There are two groups with gender values other than 1 or 2.

Principle Component Analysis (PCA)

Principle Component Analysis (PCA) is a statistical technique that is used to transform a dataset with many variables into a smaller set of variables, while still retaining as much of the original information as possible.

PCA is often used in data analysis and machine learning to reduce the dimensionality of a dataset, making it easier to work with and visualize. It can also be used to identify patterns and relationships in the data, and to identify any outliers or unusual observations. PCA can be a powerful tool for exploratory data analysis, and can help to identify the most important variables in a dataset.

# Create PCA
pca_result <- PCA(mall_scaled[,1:4], 
                  graph = F)

# Analysing cumulative variance of each PC
pca_result$eig
##        eigenvalue percentage of variance cumulative percentage of variance
## comp 1  1.3476018               33.69005                          33.69005
## comp 2  1.0492258               26.23064                          59.92069
## comp 3  0.9304255               23.26064                          83.18133
## comp 4  0.6727468               16.81867                         100.00000

Through PCA, informative principal components with high cumulative variance are retained to perform dimensionality reduction while retaining as much information as possible.

In this study, the goal is to retain at least 80% of the information from the data. From the PCA summary (seed_pca$eig), PC1 - PC3 were selected from a total of 4 PCs, reducing the dimensions by ~25% from the original data while retaining 83.18% of the information.

The values of PC1 - PC3 from all observations can be extracted and put into a new data frame for further analysis using supervised learning classification techniques or other purposes.

# Make a new data frame from PCA result
mall_retaining <- PCA(mall_scaled[,1:3], 
              graph = F, 
              ncp = 3)$ind$coord

mall_retaining_final <- cbind(mall_retaining, 
                              Spending = mall_clean$Spending_Score)

head(mall_retaining_final)
##        Dim.1      Dim.2      Dim.3 Spending
## 1 -0.6852667 -0.2976662 -2.4016757       39
## 2 -0.6126785 -0.3950385 -2.3251810       81
## 3 -2.1079335 -0.3422180 -0.9737109        6
## 4 -1.9990512 -0.4882764 -0.8589690       77
## 5 -1.6913239 -0.8497260 -0.5337854       40
## 6 -2.0179709 -0.4115509 -0.8780113       76
tail(mall_retaining_final)
##         Dim.1    Dim.2     Dim.3 Spending
## 195 0.6789422 1.259348 2.0562858       16
## 196 0.2434129 1.843582 1.5973180       79
## 197 0.7106002 1.524957 2.0950212       28
## 198 1.7151121 2.181781 0.2272936       74
## 199 1.9062302 2.490214 0.4385485       18
## 200 1.8336420 2.587586 0.3620538       83

Next we will create a plot to analyse our clustering result

length(mall_clean$Spending_Score)
## [1] 200
pca_result$ind
## $coord
##            Dim.1        Dim.2         Dim.3        Dim.4
## 1   -0.406382715 -0.520713635  2.0725266304 -1.335529032
## 2   -1.427672870 -0.367310199  2.2776436916 -0.082328739
## 3    0.050760571 -1.894067743  0.3673752317 -2.174381119
## 4   -1.694513100 -1.631908046  0.7174666910 -0.075228496
## 5   -0.313108383 -1.810482723  0.4264599237 -0.683070448
## 6   -1.717446272 -1.599264180  0.6963794226 -0.153191637
## 7    0.790821124 -1.947271123  0.1864915934 -1.411858004
## 8   -2.148321588 -1.505373688  0.7584635962  0.391407991
## 9    2.774286226 -0.882987672  1.3881411249 -0.035557608
## 10  -1.216294767 -1.616404641  0.5557697022  0.144050713
## 11   2.629050845 -0.861237043  1.4201135777  0.418453647
## 12  -1.689470378 -1.545427839  0.6550076467  1.138367667
## 13   1.685822527 -2.023944789 -0.0169391673  0.003841659
## 14  -1.646073388 -1.522512590  0.6104099427 -0.023401630
## 15   1.174436277 -0.612790961  1.6537368377 -1.132728859
## 16  -1.326130702 -0.236719149  2.1354145698 -0.085083370
## 17   0.016772825 -1.743445723  0.2665438932 -0.615936694
## 18  -1.078424540 -0.244715641  2.0594866218 -0.542875452
## 19   1.487587800 -0.572676028  1.5331165278  0.068755170
## 20  -1.663731685 -1.432597745  0.5514320367  1.111974842
## 21   0.488090311 -0.392921145  1.6896730902 -0.630085495
## 22  -1.018950513 -0.166247511  1.9789796776 -0.096169306
## 23   1.358914922 -1.828669357 -0.0874035749 -0.878673835
## 24  -0.722972722 -0.181687017  1.9017125410  0.208891250
## 25   1.513159311 -1.764511959 -0.1836559172 -0.224727640
## 26  -1.062411573 -0.043115061  1.8932914154  0.354830768
## 27   0.588832908 -1.625416137 -0.0091721202 -0.188391239
## 28  -0.206188227 -0.171906970  1.7292510331  0.083835296
## 29   0.368426440 -1.563006448  0.0048730980 -0.469557051
## 30  -1.964204138 -1.212119903  0.4510972391  0.202296875
## 31   2.547591942 -0.527913522  1.1583231220 -0.208519212
## 32  -1.689830672 -1.224123213  0.3698673076 -0.282914231
## 33   2.201317215 -0.388195647  1.1460997538 -0.563354238
## 34  -1.873296950  0.224855270  1.9200835550  0.071496398
## 35   1.265156926 -1.581258540 -0.2625823420 -0.477448232
## 36  -1.903865569 -1.104440986  0.3385779552 -0.062792400
## 37   0.839344590 -1.487938668 -0.2097629466 -0.750539288
## 38  -1.246444368 -1.174259402  0.1925455861  0.175317976
## 39   0.302432444 -1.319600889 -0.1830515856 -0.807802441
## 40  -1.794158677 -1.004203525  0.2172755497 -0.277081007
## 41   1.493875943 -1.470132517 -0.4146126697  0.912444678
## 42  -1.578247771  0.326252676  1.7445427918  0.377583151
## 43   1.099728922 -0.047514830  1.2122683924  0.061590449
## 44  -0.878229151 -1.083736531 -0.0027033701 -0.101626883
## 45   0.890421740 -1.349907722 -0.3357650137 -0.092042616
## 46  -1.330476638 -1.015619070  0.0799864154 -0.347555466
## 47   0.219540681 -1.219955869 -0.2259629891  0.699328217
## 48  -0.702592333 -1.080856929 -0.0663670582 -0.688439324
## 49  -0.470519161 -1.115773930 -0.1104432187 -0.723933102
## 50  -0.371782513 -1.130656841 -0.1280094621 -0.622331767
## 51   0.249709965 -1.166116410 -0.2822226310  0.566783580
## 52  -0.281507713  0.247898317  1.3975576001 -0.041593371
## 53  -0.692486630 -0.994947343 -0.1380908807 -0.292533845
## 54   1.001836558  0.083629696  1.1446280300  1.279480540
## 55   0.485517270 -1.172396363 -0.3526880434  0.425907637
## 56   0.916095461  0.096797627  1.1492878047  0.148911093
## 57   0.401316916 -1.130594501 -0.3595296545  0.614059968
## 58   1.868629912 -0.017671083  0.9580006385  1.403877447
## 59  -0.810654470 -0.889574289 -0.1925695643 -0.577223936
## 60   1.078272422  0.159810666  1.0493937720  0.591579862
## 61   1.650860882  0.073374096  0.9531005380  1.729381442
## 62  -0.840256337  0.448881521  1.3957377597 -0.888871636
## 63   1.137179032 -1.154016473 -0.5631608543  1.482478346
## 64   0.308719686 -1.029229824 -0.4118663885  1.014002825
## 65   1.438154832  0.163848653  0.9389356592  1.237194752
## 66  -0.996758186  0.530768704  1.3765920019 -0.829483114
## 67   0.005441712 -0.954225943 -0.3875383077  0.208680824
## 68   1.292984422 -1.148275972 -0.6177203163  1.423859472
## 69  -0.947389862  0.523327249  1.3678088802 -0.778682446
## 70  -0.457607937 -0.884390383 -0.3068299196 -0.432383590
## 71   1.676831727  0.156994962  0.8740933347  1.702732067
## 72   0.416021294 -0.986837080 -0.4896550685  0.192787862
## 73   0.870906219 -1.026319052 -0.5912901728  1.045386252
## 74   0.684235085 -0.998271327 -0.5541762887  1.237319411
## 75   1.345957837  0.352842574  0.8054497723  0.925855286
## 76  -0.469867989  0.626458338  1.1324066715 -0.558633590
## 77   0.022783528 -0.781833032 -0.5366090405  0.394078524
## 78   0.381292376  0.498237051  0.9776310675 -0.011938378
## 79  -1.036652295 -0.622127824 -0.3486823472 -0.750955189
## 80   0.513597177 -0.855673851 -0.6300633451  0.295671944
## 81   1.140551970  0.383752756  0.8442239494  0.933930042
## 82   0.095884594  0.541167687  1.0323111949  0.078393446
## 83   1.900908258  0.269270021  0.7033728983  1.167746491
## 84   0.312157595 -0.825335848 -0.5931100132  0.198107987
## 85  -1.268725468 -0.587210823 -0.3046061867 -0.715461410
## 86   0.829573578  0.430691769  0.8967621272  0.339628918
## 87   0.382433784 -0.748585816 -0.6716355599  1.039949964
## 88  -1.166718993 -0.515038230 -0.3976984951 -0.718729140
## 89  -0.707867782 -0.555092382 -0.5011544446  0.028230536
## 90   0.455367669 -0.730251123 -0.7159121595  0.457174901
## 91   1.103759604 -0.798926738 -0.8508589052  1.618614675
## 92  -0.519300383  0.779947493  1.0109038270 -1.320203481
## 93   0.748178745  0.617967591  0.7652576378  0.423425283
## 94   0.121223952 -0.621459016 -0.7090296567 -0.214832815
## 95  -0.327057250 -0.553913735 -0.6281607165 -0.566400111
## 96  -0.516662945  0.808582982  0.9919585082 -0.713533674
## 97   0.280131086 -0.645501482 -0.7333976243  0.332705019
## 98  -0.787237308 -0.484651914 -0.5418292406 -0.601051267
## 99   0.934617726  0.619129095  0.7035753470  0.231748673
## 100 -0.634366480  0.855537580  0.9866166379 -0.998736864
## 101 -0.745169167 -0.432528995 -0.6035514182 -1.050512045
## 102  0.351736123 -0.597959120 -0.7947986975  0.462238476
## 103  1.419039546  0.575066566  0.6022613472  1.663341297
## 104 -0.498392518  0.864138980  0.9411614019 -0.529162172
## 105  0.610411629  0.696992316  0.7444515869  0.666672209
## 106 -0.870573120 -0.413639266 -0.5806831914 -1.124694357
## 107  1.137430868 -0.687241003 -0.9580762056  1.380944423
## 108  1.123694144  0.648926087  0.6229477375  0.646741869
## 109  1.894852595  0.532725254  0.4840780838  1.275694149
## 110  1.662779422  0.567642254  0.5281542443  1.311187928
## 111  1.506741879  0.591110981  0.5581452998  1.370063351
## 112 -1.289549579 -0.321465312 -0.5240615534 -0.897010870
## 113 -0.031775918 -0.481725557 -0.7791330730 -0.260569907
## 114 -0.604429349  0.938586267  0.9057885893 -1.131024952
## 115 -1.179378380 -0.279646307 -0.5962271456 -1.111812576
## 116 -1.183344665 -0.279074127 -0.5944063004 -1.006173862
## 117  1.175532724 -0.634545905 -1.0179775380  1.037122359
## 118  0.057699311 -0.466256439 -0.8101820996  0.764617375
## 119  0.582648530 -0.486829980 -0.9617168912  0.428027445
## 120  0.159937938 -0.423293075 -0.8787060014  0.761093096
## 121 -0.476852264  1.006750483  0.8148382305 -0.449659734
## 122  0.020862233 -0.402111508 -0.8634422598 -0.314638304
## 123 -0.360876912 -0.286453243 -0.8347096145  0.281018541
## 124 -0.818252351  1.116110093  0.8458733776  1.120127176
## 125 -0.427018733 -0.246936984 -0.8637224725 -1.377487923
## 126 -1.312102773 -0.114141375 -0.6794922408  0.345030514
## 127  0.872125709  0.920380930  0.4646930049 -0.211622332
## 128 -0.876017553  1.183114365  0.8091613764  1.281117034
## 129  2.302034209  0.705154010  0.1969154557 -0.056868195
## 130 -0.441408104  1.117860920  0.7206879509  0.631135242
## 131  1.762948930  0.786437844  0.2917089488 -0.721314254
## 132 -0.392039780  1.110419465  0.7119048292  0.681935910
## 133 -0.462082916 -0.183367350 -0.9039156119 -1.138278375
## 134 -1.152563250 -0.079763826 -0.7604409547  0.181029476
## 135  0.536209096  1.029748334  0.4585084869 -2.202095275
## 136 -1.704876233  0.032444217 -0.6773093995  0.545808077
## 137  1.195700318 -0.403729862 -1.2385168832 -0.913122754
## 138 -0.684747745  1.212914476  0.7136459008  0.272006289
## 139  0.353272095  1.086433107  0.4692331191 -2.115544280
## 140 -0.982221565 -0.047104375 -0.8394082712  0.412164268
## 141  1.890358833 -0.450063966 -1.4124382451 -0.307039020
## 142 -1.218558147  1.351469288  0.7705487563  0.820899844
## 143 -0.474910385 -0.064813898 -0.9967267029 -0.820336037
## 144 -1.530800416  0.093740716 -0.7826659678  0.671560706
## 145  0.595450970  1.137425692  0.3534331361 -1.755132579
## 146 -1.523164969  1.455680838  0.7777523635  0.727886363
## 147  1.090907106  1.062435837  0.2786689402  0.071339326
## 148 -1.184357606  0.070861312 -0.8761601592  0.315369959
## 149  0.300846740 -0.123166897 -1.1939979481 -1.008561343
## 150 -1.040516044  1.412193607  0.6633713427  0.841013759
## 151  1.350512125  1.052722806  0.1972784566 -0.703368896
## 152 -0.740339814  1.366972693  0.6088517675  1.040179052
## 153  0.847864590 -0.205595090 -1.2924331317 -0.555392711
## 154 -0.941714425  0.063435442 -0.9428233290  0.675268560
## 155  1.102638781 -0.243946728 -1.3399904304 -0.512666799
## 156 -1.831440951  0.197380086 -0.7772832059  0.472908512
## 157  1.480979058  1.033262455  0.1651454515 -1.446877268
## 158 -1.389995626  0.130980723 -0.8619543887  0.323701264
## 159  1.332874086  1.055586823  0.1914948165 -1.599279271
## 160 -1.256659102  0.110946634 -0.8884643059  0.186606150
## 161  1.040042752 -0.205581064 -1.3428692467  0.465757194
## 162 -1.572932628  0.187665496 -0.8512297565  0.410252260
## 163  0.484983547  1.270863614  0.2707443554 -2.250843548
## 164 -1.741333334  0.271269219 -0.8649129787  0.786556922
## 165  1.454459578  1.241158573  0.0115356094 -0.099197171
## 166 -1.015408839  0.278776132 -1.1025379155  0.548044048
## 167  1.219284662  1.305858540  0.0254202755 -0.669860101
## 168 -1.697092061  0.410446083 -0.9947172884  0.944279050
## 169  0.264157486  0.144867334 -1.4061699339 -0.767555949
## 170 -0.421324839  1.581775491  0.3166683735  0.001407752
## 171  1.306986994  1.321902955 -0.0186957719 -0.963138046
## 172 -0.938805793  1.659623127  0.4154246614  0.127233355
## 173  1.189515613  1.339648324  0.0005307644 -1.248597786
## 174 -0.997203383  1.668207384  0.4352934065  0.999762085
## 175  1.427160785 -0.001082179 -1.6454960555 -0.338355035
## 176 -1.605655596  0.455127547 -1.0652225876  0.545618940
## 177  2.142050064  1.225179615 -0.1907564017  0.006368568
## 178 -0.828402441  1.672232904  0.3678274758 -0.087824900
## 179  2.216924927  1.359777482 -0.3276835400  0.031032960
## 180 -0.994630016  1.842890573  0.2860621215  0.895662668
## 181  0.177867756  0.449552248 -1.6341272048 -0.577094673
## 182 -1.509008325  0.703127688 -1.3039044906  0.649529220
## 183  1.547308645  1.606569365 -0.3310430081 -0.600673951
## 184 -1.710680060  0.762674919 -1.2915195654  0.552221812
## 185  0.188205612  0.506252606 -1.6812826206 -0.181445743
## 186 -1.429535688  2.083400945  0.2196811741  0.835131785
## 187  1.229539090  0.407829870 -1.9241297672  0.068190694
## 188 -0.755384802  2.040504596  0.0343530844 -0.061108113
## 189  0.773957706  0.534939526 -1.8961998829 -0.783638048
## 190 -1.286260643  0.844610416 -1.4917494006  0.826852165
## 191  0.268375609  0.611070624 -1.8029061305 -0.974728585
## 192 -1.057057061  0.810267154 -1.5414486489  0.184945129
## 193  1.088709271  2.113398986 -0.6225024100 -1.449167550
## 194 -1.349849354  1.145860692 -1.7231878096  1.095533131
## 195  1.092888353  0.982840852 -2.3718635092 -0.501891724
## 196 -1.179571739  1.324567842 -1.9324410924  0.615898700
## 197  0.672751128  1.221060946 -2.4380839043 -0.272925490
## 198 -0.723719161  2.765010382 -0.5831776675  0.313022430
## 199  0.767096226  2.861930095 -1.1503412132 -1.219620804
## 200 -1.065015236  3.137256163 -0.7881460462  0.461014343
## 
## $cos2
##            Dim.1        Dim.2        Dim.3        Dim.4
## 1   2.534758e-02 4.161634e-02 6.592744e-01 2.737617e-01
## 2   2.766502e-01 1.831216e-02 7.041176e-01 9.199761e-04
## 3   3.048202e-04 4.244063e-01 1.596653e-02 5.593223e-01
## 4   4.742220e-01 4.398284e-01 8.501496e-02 9.346664e-04
## 5   2.436099e-02 8.145061e-01 4.519205e-02 1.159409e-01
## 6   4.903223e-01 4.251633e-01 8.061339e-02 3.901085e-03
## 7   9.703036e-02 5.883070e-01 5.395972e-03 3.092667e-01
## 8   6.064842e-01 2.977896e-01 7.559453e-02 2.013169e-02
## 9   7.397415e-01 7.493535e-02 1.852016e-01 1.215185e-04
## 10  3.345660e-01 5.908868e-01 6.985441e-02 4.692831e-03
## 11  7.020399e-01 7.533716e-02 2.048377e-01 1.778519e-02
## 12  4.096563e-01 3.427803e-01 6.157596e-02 1.859874e-01
## 13  4.095893e-01 5.903672e-01 4.135319e-05 2.126975e-06
## 14  5.017002e-01 4.292079e-01 6.899047e-02 1.014000e-04
## 15  2.389337e-01 6.504938e-02 4.737523e-01 2.222647e-01
## 16  2.755644e-01 8.780460e-03 7.145208e-01 1.134331e-03
## 17  8.060253e-05 8.708696e-01 2.035512e-02 1.086947e-01
## 18  2.019417e-01 1.039848e-02 7.364861e-01 5.117372e-02
## 19  4.519803e-01 6.698418e-02 4.800700e-01 9.655282e-04
## 20  4.351587e-01 3.226485e-01 4.780409e-02 1.943887e-01
## 21  6.536539e-02 4.236023e-02 7.833446e-01 1.089297e-01
## 22  2.080053e-01 5.537052e-03 7.846048e-01 1.852854e-03
## 23  3.093014e-01 5.601029e-01 1.279546e-03 1.293162e-01
## 24  1.239821e-01 7.830024e-03 8.578375e-01 1.035037e-02
## 25  4.172572e-01 5.673927e-01 6.146733e-03 9.203383e-03
## 26  2.331564e-01 3.839899e-04 7.404517e-01 2.600784e-02
## 27  1.146470e-01 8.735898e-01 2.781749e-05 1.173545e-02
## 28  1.385077e-02 9.627933e-03 9.742315e-01 2.289812e-03
## 29  4.849112e-02 8.727346e-01 8.483420e-06 7.876575e-02
## 30  6.924397e-01 2.636938e-01 3.652154e-02 7.344920e-03
## 31  7.959452e-01 3.417819e-02 1.645443e-01 5.332312e-03
## 32  6.247261e-01 3.278336e-01 2.992920e-02 1.751108e-02
## 33  7.311756e-01 2.273829e-02 1.981989e-01 4.788721e-02
## 34  4.839242e-01 6.972207e-03 5.083986e-01 7.049080e-04
## 35  3.639509e-01 5.685383e-01 1.567780e-02 5.183302e-02
## 36  7.303348e-01 2.457732e-01 2.309760e-02 7.944446e-04
## 37  1.998143e-01 6.279369e-01 1.247968e-02 1.597691e-01
## 38  5.178195e-01 4.595795e-01 1.235662e-02 1.024438e-02
## 39  3.631215e-02 6.913220e-01 1.330277e-02 2.590631e-01
## 40  7.397610e-01 2.317465e-01 1.084904e-02 1.764344e-02
## 41  4.134694e-01 4.004306e-01 3.184926e-02 1.542508e-01
## 42  4.306994e-01 1.840484e-02 5.262440e-01 2.465183e-02
## 43  4.504214e-01 8.408259e-04 5.473250e-01 1.412780e-03
## 44  3.942967e-01 6.004197e-01 3.736100e-06 5.279888e-03
## 45  2.897517e-01 6.659515e-01 4.120077e-02 3.096081e-03
## 46  6.043916e-01 3.521808e-01 2.184421e-03 4.124318e-02
## 47  2.321000e-02 7.166933e-01 2.458780e-02 2.355089e-01
## 48  2.306450e-01 5.458505e-01 2.057986e-03 2.214464e-01
## 49  1.105495e-01 6.216624e-01 6.090884e-03 2.616972e-01
## 50  7.593417e-02 7.022972e-01 9.002093e-03 2.127665e-01
## 51  3.420322e-02 7.458974e-01 4.368969e-02 1.762097e-01
## 52  3.781575e-02 2.932509e-02 9.320336e-01 8.255443e-04
## 53  3.046419e-01 6.288789e-01 1.211426e-02 5.436496e-02
## 54  2.535872e-01 1.767074e-03 3.310262e-01 4.136195e-01
## 55  1.230291e-01 7.173770e-01 6.492022e-02 9.467370e-02
## 56  3.829241e-01 4.275242e-03 6.026829e-01 1.011778e-02
## 57  8.277793e-02 6.569819e-01 6.643686e-02 1.938033e-01
## 58  5.472382e-01 4.893912e-05 1.438340e-01 3.088789e-01
## 59  3.613208e-01 4.350967e-01 2.038903e-02 1.831935e-01
## 60  4.405051e-01 9.676215e-03 4.172256e-01 1.325930e-01
## 61  4.110691e-01 8.120438e-04 1.370160e-01 4.511028e-01
## 62  1.936611e-01 5.526909e-02 5.343508e-01 2.167190e-01
## 63  2.515994e-01 2.591051e-01 6.170450e-02 4.275911e-01
## 64  4.051416e-02 4.503010e-01 7.210924e-02 4.370756e-01
## 65  4.588666e-01 5.956086e-03 1.955901e-01 3.395872e-01
## 66  2.575045e-01 7.301561e-02 4.911517e-01 1.783283e-01
## 67  2.681514e-05 8.245392e-01 1.359998e-01 3.943428e-02
## 68  3.096343e-01 2.442053e-01 7.067182e-02 3.754886e-01
## 69  2.459933e-01 7.506069e-02 5.127630e-01 1.661830e-01
## 70  1.645423e-01 6.145801e-01 7.397516e-02 1.469024e-01
## 71  4.325960e-01 3.792058e-03 1.175490e-01 4.460629e-01
## 72  1.215533e-01 6.839535e-01 1.683899e-01 2.610328e-02
## 73  2.330719e-01 3.236770e-01 1.074357e-01 3.358154e-01
## 74  1.417520e-01 3.017281e-01 9.298532e-02 4.635346e-01
## 75  5.263138e-01 3.616961e-02 1.884772e-01 2.490394e-01
## 76  1.000053e-01 1.777689e-01 5.808662e-01 1.413596e-01
## 77  4.920140e-04 5.793801e-01 2.729302e-01 1.471977e-01
## 78  1.077293e-01 1.839458e-01 7.082193e-01 1.056108e-04
## 79  5.004871e-01 1.802544e-01 5.662218e-02 2.626363e-01
## 80  1.781876e-01 4.945939e-01 2.681641e-01 5.905443e-02
## 81  4.288926e-01 4.855359e-02 2.349815e-01 2.875723e-01
## 82  6.691948e-03 2.131663e-01 7.756686e-01 4.473160e-03
## 83  6.517390e-01 1.307758e-02 8.923242e-02 2.459510e-01
## 84  8.330914e-02 5.823798e-01 3.007567e-01 3.355435e-02
## 85  6.289838e-01 1.347387e-01 3.625614e-02 2.000214e-01
## 86  3.837751e-01 1.034428e-01 4.484577e-01 6.432448e-02
## 87  6.531523e-02 2.502564e-01 2.014510e-01 4.829774e-01
## 88  5.915234e-01 1.152705e-01 6.873014e-02 2.244760e-01
## 89  4.721985e-01 2.903694e-01 2.366811e-01 7.510322e-04
## 90  1.418169e-01 3.647102e-01 3.505282e-01 1.429448e-01
## 91  2.342656e-01 1.227364e-01 1.392114e-01 5.037865e-01
## 92  7.402790e-02 1.669894e-01 2.805290e-01 4.784537e-01
## 93  3.280109e-01 2.237736e-01 3.431570e-01 1.050585e-01
## 94  1.547222e-02 4.066312e-01 5.293032e-01 4.859336e-02
## 95  9.472916e-02 2.717192e-01 3.494441e-01 2.841075e-01
## 96  1.105867e-01 2.708553e-01 4.076384e-01 2.109197e-01
## 97  6.861303e-02 3.643162e-01 4.702870e-01 9.678380e-02
## 98  4.105692e-01 1.556091e-01 1.944912e-01 2.393305e-01
## 99  4.837900e-01 2.123006e-01 2.741638e-01 2.974564e-02
## 100 1.295936e-01 2.357117e-01 3.134728e-01 3.212219e-01
## 101 2.512329e-01 8.464421e-02 1.648145e-01 4.993084e-01
## 102 9.325668e-02 2.695188e-01 4.761681e-01 1.610565e-01
## 103 3.678750e-01 6.041538e-02 6.626455e-02 5.054451e-01
## 104 1.149483e-01 3.455626e-01 4.099093e-01 1.295798e-01
## 105 2.006409e-01 2.615953e-01 2.984330e-01 2.393308e-01
## 106 2.994311e-01 6.759738e-02 1.332186e-01 4.997530e-01
## 107 2.818032e-01 1.028760e-01 1.999383e-01 4.153826e-01
## 108 5.070768e-01 1.691095e-01 1.558407e-01 1.679730e-01
## 109 6.259541e-01 4.947641e-02 4.085286e-02 2.837166e-01
## 110 5.437009e-01 6.336365e-02 5.485451e-02 3.380809e-01
## 111 4.721584e-01 7.266881e-02 6.478948e-02 3.903833e-01
## 112 5.844001e-01 3.631637e-02 9.651589e-02 2.827676e-01
## 113 1.111997e-03 2.555681e-01 6.685450e-01 7.477490e-02
## 114 1.091872e-01 2.632868e-01 2.452078e-01 3.823182e-01
## 115 4.544421e-01 2.554997e-02 1.161437e-01 4.038642e-01
## 116 4.923903e-01 2.738584e-02 1.242378e-01 3.559861e-01
## 117 3.546524e-01 1.033379e-01 2.659561e-01 2.760536e-01
## 118 2.277537e-03 1.487215e-01 4.490446e-01 3.999563e-01
## 119 2.015205e-01 1.406891e-01 5.490354e-01 1.087550e-01
## 120 1.643816e-02 1.151417e-01 4.961778e-01 3.722423e-01
## 121 1.079157e-01 4.810172e-01 3.151082e-01 9.595883e-02
## 122 4.323538e-04 1.606241e-01 7.406011e-01 9.834243e-02
## 123 1.318140e-01 8.305216e-02 7.052032e-01 7.993065e-02
## 124 1.723201e-01 3.206088e-01 1.841502e-01 3.229209e-01
## 125 6.316483e-02 2.112291e-02 2.584222e-01 6.572900e-01
## 126 7.435499e-01 5.626789e-03 1.994084e-01 5.141495e-02
## 127 4.070819e-01 4.533764e-01 1.155729e-01 2.396882e-02
## 128 1.719421e-01 3.136246e-01 1.466989e-01 3.677344e-01
## 129 9.076404e-01 8.516443e-02 6.641251e-03 5.538972e-04
## 130 8.248371e-02 5.290091e-01 2.198782e-01 1.686291e-01
## 131 7.174719e-01 1.427757e-01 1.964377e-02 1.201087e-01
## 132 6.516452e-02 5.227873e-01 2.148794e-01 1.971687e-01
## 133 9.047924e-02 1.424797e-02 3.462301e-01 5.490426e-01
## 134 6.827000e-01 3.269733e-03 2.971881e-01 1.684221e-02
## 135 4.487346e-02 1.654944e-01 3.281073e-02 7.568214e-01
## 136 7.932197e-01 2.872648e-04 1.251936e-01 8.129947e-02
## 137 3.609974e-01 4.115676e-02 3.873140e-01 2.105318e-01
## 138 1.858186e-01 5.830264e-01 2.018336e-01 2.932147e-02
## 139 2.079727e-02 1.966951e-01 3.669145e-02 7.458162e-01
## 140 5.239089e-01 1.204923e-03 3.826338e-01 9.225237e-02
## 141 6.092571e-01 3.453509e-02 3.401348e-01 1.607308e-02
## 142 3.242830e-01 3.988817e-01 1.296677e-01 1.471676e-01
## 143 1.189458e-01 2.215451e-03 5.239358e-01 3.549029e-01
## 144 6.860532e-01 2.572629e-03 1.793385e-01 1.320357e-01
## 145 7.304974e-02 2.665464e-01 2.573601e-02 6.346679e-01
## 146 4.162421e-01 3.801758e-01 1.085262e-01 9.505594e-02
## 147 4.955369e-01 4.700087e-01 3.233535e-02 2.119134e-03
## 148 6.166163e-01 2.207332e-03 3.374553e-01 4.372099e-02
## 149 3.551444e-02 5.952540e-03 5.593988e-01 3.991342e-01
## 150 2.562948e-01 4.720963e-01 1.041731e-01 1.674358e-01
## 151 5.262585e-01 3.197645e-01 1.122953e-02 1.427475e-01
## 152 1.416510e-01 4.829222e-01 9.580333e-02 2.796235e-01
## 153 2.623640e-01 1.542683e-02 6.096316e-01 1.125775e-01
## 154 3.966564e-01 1.799865e-03 3.975911e-01 2.039525e-01
## 155 3.647010e-01 1.785091e-02 5.386092e-01 7.883894e-02
## 156 7.946502e-01 9.229896e-03 1.431359e-01 5.298396e-02
## 157 4.075509e-01 1.983834e-01 5.067774e-03 3.889980e-01
## 158 6.907735e-01 6.133715e-03 2.656302e-01 3.746257e-02
## 159 3.238823e-01 2.031407e-01 6.685333e-03 4.662916e-01
## 160 6.537225e-01 5.095499e-03 3.267672e-01 1.441486e-02
## 161 3.440289e-01 1.344184e-02 5.735352e-01 6.899406e-02
## 162 7.272036e-01 1.035153e-02 2.129754e-01 4.946952e-02
## 163 3.364983e-02 2.310611e-01 1.048691e-02 7.248022e-01
## 164 6.779633e-01 1.645294e-02 1.672581e-01 1.383256e-01
## 165 5.770622e-01 4.202173e-01 3.629948e-05 2.684219e-03
## 166 3.928258e-01 2.960938e-02 4.631324e-01 1.144324e-01
## 167 4.082781e-01 4.683151e-01 1.774624e-04 1.232293e-01
## 168 5.842372e-01 3.417359e-02 2.007140e-01 1.808752e-01
## 169 2.626020e-02 7.897927e-03 7.441283e-01 2.217136e-01
## 170 6.385856e-02 9.000667e-01 3.607401e-02 7.129146e-07
## 171 3.896808e-01 3.986260e-01 7.973578e-05 2.116136e-01
## 172 2.304518e-01 7.201908e-01 4.512458e-02 4.232827e-03
## 173 2.967217e-01 3.763488e-01 5.907620e-08 3.269295e-01
## 174 2.002311e-01 5.603560e-01 3.815295e-02 2.012599e-01
## 175 4.191844e-01 2.410226e-07 5.572538e-01 2.356159e-02
## 176 6.112687e-01 4.911268e-02 2.690346e-01 7.058400e-02
## 177 7.490164e-01 2.450370e-01 5.940053e-03 6.620879e-06
## 178 1.892779e-01 7.712777e-01 3.731690e-02 2.127417e-03
## 179 7.151763e-01 2.690586e-01 1.562501e-02 1.401385e-04
## 180 1.877359e-01 6.445005e-01 1.552905e-02 1.522345e-01
## 181 9.773102e-03 6.243072e-02 8.249159e-01 1.028803e-01
## 182 4.653281e-01 1.010286e-01 3.474302e-01 8.621312e-02
## 183 4.396489e-01 4.739702e-01 2.012430e-02 6.625668e-02
## 184 5.339150e-01 1.061240e-01 3.043242e-01 5.563674e-02
## 185 1.124007e-02 8.132767e-02 8.969851e-01 1.044714e-02
## 186 2.866226e-01 6.087881e-01 6.768713e-03 9.782063e-02
## 187 2.807357e-01 3.088666e-02 6.875142e-01 8.635016e-04
## 188 1.204019e-01 8.785611e-01 2.490166e-04 7.879426e-04
## 189 1.175722e-01 5.616676e-02 7.057295e-01 1.205316e-01
## 190 3.135339e-01 1.351884e-01 4.217143e-01 1.295634e-01
## 191 1.550269e-02 8.037180e-02 6.996279e-01 2.044976e-01
## 192 2.670468e-01 1.569087e-01 5.678697e-01 8.174785e-03
## 193 1.456246e-01 5.487491e-01 4.760943e-02 2.580168e-01
## 194 2.494426e-01 1.797478e-01 4.065044e-01 1.643051e-01
## 195 1.485946e-01 1.201760e-01 6.998915e-01 3.133801e-02
## 196 1.916639e-01 2.416796e-01 5.144037e-01 5.225287e-02
## 197 5.684195e-02 1.872556e-01 7.465474e-01 9.355097e-03
## 198 6.085296e-02 8.882498e-01 3.951330e-02 1.138394e-02
## 199 5.077176e-02 7.067089e-01 1.141763e-01 1.283430e-01
## 200 9.603934e-02 8.333693e-01 5.259578e-02 1.799560e-02
## 
## $contrib
##            Dim.1        Dim.2        Dim.3        Dim.4
## 1   6.127437e-02 1.292108e-01 2.308281e+00 1.325638e+00
## 2   7.562508e-01 6.429349e-02 2.787789e+00 5.037572e-03
## 3   9.560077e-04 1.709590e+00 7.252840e-02 3.513902e+00
## 4   1.065365e+00 1.269090e+00 2.766253e-01 4.206134e-03
## 5   3.637456e-02 1.562032e+00 9.773381e-02 3.467762e-01
## 6   1.094397e+00 1.218825e+00 2.606035e-01 1.744169e-02
## 7   2.320411e-01 1.806982e+00 1.868990e-02 1.481496e+00
## 8   1.712407e+00 1.079915e+00 3.091419e-01 1.138617e-01
## 9   2.855689e+00 3.715441e-01 1.035513e+00 9.396874e-04
## 10  5.488910e-01 1.245091e+00 1.659885e-01 1.542230e-02
## 11  2.564522e+00 3.534650e-01 1.083764e+00 1.301407e-01
## 12  1.059033e+00 1.138147e+00 2.305585e-01 9.631267e-01
## 13  1.054465e+00 1.952083e+00 1.541958e-04 1.096872e-05
## 14  1.005326e+00 1.104645e+00 2.002311e-01 4.070151e-04
## 15  5.117612e-01 1.789475e-01 1.469675e+00 9.536088e-01
## 16  6.525008e-01 2.670348e-02 2.450489e+00 5.380315e-03
## 17  1.043809e-04 1.448498e+00 3.817911e-02 2.819619e-01
## 18  4.315071e-01 2.853806e-02 2.279325e+00 2.190376e-01
## 19  8.210576e-01 1.562856e-01 1.263103e+00 3.513412e-03
## 20  1.027011e+00 9.780241e-01 1.634076e-01 9.189846e-01
## 21  8.839115e-02 7.357188e-02 1.534242e+00 2.950647e-01
## 22  3.852251e-01 1.317078e-02 2.104607e+00 6.873711e-03
## 23  6.851615e-01 1.593571e+00 4.105318e-03 5.738174e-01
## 24  1.939332e-01 1.573073e-02 1.943471e+00 3.243089e-02
## 25  8.495281e-01 1.483714e+00 1.812584e-02 3.753456e-02
## 26  4.187878e-01 8.858477e-04 1.926297e+00 9.357522e-02
## 27  1.286449e-01 1.259013e+00 4.520931e-05 2.637787e-02
## 28  1.577379e-02 1.408277e-02 1.606958e+00 5.223627e-03
## 29  5.036281e-02 1.164187e+00 1.276141e-05 1.638683e-01
## 30  1.431468e+00 7.001518e-01 1.093525e-01 3.041562e-02
## 31  2.408065e+00 1.328087e-01 7.210209e-01 3.231547e-02
## 32  1.059485e+00 7.140873e-01 7.351573e-02 5.948780e-02
## 33  1.797934e+00 7.181288e-02 7.058838e-01 2.358748e-01
## 34  1.302032e+00 2.409390e-02 1.981201e+00 3.799152e-03
## 35  5.938780e-01 1.191535e+00 3.705266e-02 1.694224e-01
## 36  1.344872e+00 5.812809e-01 6.160355e-02 2.930438e-03
## 37  2.613900e-01 1.055045e+00 2.364536e-02 4.186636e-01
## 38  5.764401e-01 6.570965e-01 1.992304e-02 2.284395e-02
## 39  3.393635e-02 8.298245e-01 1.800675e-02 4.849854e-01
## 40  1.194346e+00 4.805566e-01 2.536939e-02 5.706001e-02
## 41  8.280136e-01 1.029945e+00 9.237906e-02 6.187731e-01
## 42  9.241847e-01 5.072350e-02 1.635504e+00 1.059604e-01
## 43  4.487244e-01 1.075869e-03 7.897433e-01 2.819325e-03
## 44  2.861700e-01 5.596912e-01 3.927348e-06 7.676010e-03
## 45  2.941710e-01 8.683788e-01 6.058418e-02 6.296457e-03
## 46  6.567845e-01 4.915444e-01 3.438119e-03 8.977731e-02
## 47  1.788292e-02 7.092336e-01 2.743867e-02 3.634799e-01
## 48  1.831535e-01 5.567208e-01 2.366974e-03 3.522489e-01
## 49  8.214158e-02 5.932715e-01 6.554906e-03 3.895069e-01
## 50  5.128452e-02 6.092039e-01 8.805875e-03 2.878474e-01
## 51  2.313557e-02 6.480147e-01 4.280279e-02 2.387552e-01
## 52  2.940282e-02 2.928520e-02 1.049610e+00 1.285780e-03
## 53  1.779226e-01 4.717384e-01 1.024751e-02 6.360197e-02
## 54  3.723936e-01 3.332898e-03 7.040721e-01 1.216706e+00
## 55  8.746167e-02 6.550131e-01 6.684514e-02 1.348184e-01
## 56  3.113794e-01 4.465093e-03 7.098163e-01 1.648058e-02
## 57  5.975625e-02 6.091367e-01 6.946368e-02 2.802463e-01
## 58  1.295552e+00 1.488084e-04 4.931965e-01 1.464795e+00
## 59  2.438260e-01 3.771078e-01 1.992800e-02 2.476321e-01
## 60  4.313854e-01 1.217062e-02 5.917869e-01 2.601028e-01
## 61  1.011182e+00 2.565586e-03 4.881641e-01 2.222798e+00
## 62  2.619582e-01 9.602062e-02 1.046878e+00 5.872140e-01
## 63  4.798065e-01 6.346365e-01 1.704328e-01 1.633409e+00
## 64  3.536202e-02 5.048075e-01 9.115932e-02 7.641818e-01
## 65  7.673963e-01 1.279342e-02 4.737618e-01 1.137613e+00
## 66  3.686278e-01 1.342492e-01 1.018354e+00 5.113679e-01
## 67  1.098701e-05 4.339138e-01 8.070820e-02 3.236558e-02
## 68  6.202903e-01 6.283384e-01 2.050558e-01 1.506790e+00
## 69  3.330166e-01 1.305112e-01 1.005401e+00 4.506497e-01
## 70  7.769544e-02 3.727255e-01 5.059223e-02 1.389494e-01
## 71  1.043248e+00 1.174553e-02 4.105859e-01 2.154820e+00
## 72  6.421545e-02 4.640791e-01 1.288454e-01 2.762344e-02
## 73  2.814176e-01 5.019562e-01 1.878840e-01 8.122167e-01
## 74  1.737077e-01 4.748957e-01 1.650381e-01 1.137842e+00
## 75  6.721579e-01 5.932845e-02 3.486304e-01 6.370955e-01
## 76  8.191438e-02 1.870189e-01 6.891174e-01 2.319383e-01
## 77  1.925974e-04 2.912924e-01 1.547406e-01 1.154207e-01
## 78  5.394170e-02 1.182968e-01 5.136158e-01 1.059276e-04
## 79  3.987261e-01 1.844422e-01 6.533536e-02 4.191277e-01
## 80  9.787092e-02 3.489133e-01 2.133324e-01 6.497384e-02
## 81  4.826570e-01 7.017850e-02 3.830044e-01 6.482567e-01
## 82  3.411191e-03 1.395612e-01 5.726769e-01 4.567493e-03
## 83  1.340697e+00 3.455231e-02 2.658641e-01 1.013481e+00
## 84  3.615399e-02 3.246104e-01 1.890423e-01 2.916905e-02
## 85  5.972329e-01 1.643195e-01 4.986156e-02 3.804440e-01
## 86  2.553396e-01 8.839632e-02 4.321583e-01 8.572898e-02
## 87  5.426514e-02 2.670449e-01 2.424129e-01 8.037912e-01
## 88  5.050576e-01 1.264096e-01 8.499557e-02 3.839272e-01
## 89  1.859143e-01 1.468357e-01 1.349682e-01 5.923203e-04
## 90  7.693657e-02 2.541239e-01 2.754279e-01 1.553399e-01
## 91  4.520197e-01 3.041690e-01 3.890483e-01 1.947176e+00
## 92  1.000566e-01 2.898890e-01 5.491716e-01 1.295389e+00
## 93  2.076917e-01 1.819837e-01 3.147051e-01 1.332514e-01
## 94  5.452370e-03 1.840459e-01 2.701576e-01 3.430201e-02
## 95  3.968770e-02 1.462128e-01 2.120459e-01 2.384322e-01
## 96  9.904283e-02 3.115661e-01 5.287805e-01 3.783966e-01
## 97  2.911595e-02 1.985617e-01 2.890463e-01 8.226916e-02
## 98  2.299428e-01 1.119337e-01 1.577659e-01 2.684982e-01
## 99  3.240981e-01 1.826684e-01 2.660171e-01 3.991654e-02
## 100 1.493100e-01 3.488022e-01 5.231006e-01 7.413452e-01
## 101 2.060242e-01 8.915208e-02 1.957568e-01 8.202012e-01
## 102 4.590314e-02 1.703900e-01 3.394710e-01 1.588000e-01
## 103 7.471321e-01 1.575931e-01 1.949209e-01 2.056274e+00
## 104 9.216190e-02 3.558510e-01 4.760106e-01 2.081114e-01
## 105 1.382465e-01 2.315032e-01 2.978251e-01 3.303262e-01
## 106 2.812023e-01 8.153509e-02 1.812036e-01 9.401288e-01
## 107 4.800190e-01 2.250708e-01 4.932743e-01 1.417329e+00
## 108 4.684947e-01 2.006742e-01 2.085411e-01 3.108711e-01
## 109 1.332169e+00 1.352408e-01 1.259271e-01 1.209516e+00
## 110 1.025835e+00 1.535502e-01 1.499029e-01 1.277757e+00
## 111 8.423375e-01 1.665095e-01 1.674106e-01 1.395082e+00
## 112 6.169991e-01 4.924581e-02 1.475887e-01 5.980173e-01
## 113 3.746318e-04 1.105861e-01 3.262208e-01 5.046228e-02
## 114 1.355500e-01 4.198068e-01 4.409020e-01 9.507421e-01
## 115 5.160773e-01 3.726655e-02 1.910345e-01 9.187165e-01
## 116 5.195543e-01 3.711421e-02 1.898695e-01 7.524270e-01
## 117 5.127172e-01 1.918789e-01 5.568840e-01 7.994261e-01
## 118 1.235235e-03 1.035978e-01 3.527392e-01 4.345169e-01
## 119 1.259568e-01 1.129421e-01 4.970303e-01 1.361638e-01
## 120 9.490988e-03 8.538535e-02 4.149307e-01 4.305206e-01
## 121 8.436768e-02 4.829973e-01 3.568052e-01 1.502749e-01
## 122 1.614842e-04 7.705380e-02 4.006406e-01 7.357691e-02
## 123 4.831997e-02 3.910286e-02 3.744201e-01 5.869327e-02
## 124 2.484179e-01 5.936290e-01 3.845024e-01 9.325089e-01
## 125 6.765537e-02 2.905851e-02 4.009007e-01 1.410243e+00
## 126 6.387694e-01 6.208508e-03 2.481175e-01 8.847760e-02
## 127 2.822062e-01 4.036791e-01 1.160435e-01 3.328445e-02
## 128 2.847305e-01 6.670440e-01 3.518509e-01 1.219821e+00
## 129 1.966219e+00 2.369567e-01 2.083761e-02 2.403572e-03
## 130 7.229180e-02 5.954929e-01 2.791148e-01 2.960487e-01
## 131 1.153156e+00 2.947337e-01 4.572860e-02 3.866939e-01
## 132 5.702545e-02 5.875911e-01 2.723531e-01 3.456252e-01
## 133 7.922244e-02 1.602305e-02 4.390805e-01 9.629756e-01
## 134 4.928763e-01 3.031887e-03 3.107559e-01 2.435661e-02
## 135 1.066785e-01 5.053162e-01 1.129752e-01 3.604048e+00
## 136 1.078435e+00 5.016209e-04 2.465259e-01 2.214105e-01
## 137 5.304606e-01 7.767527e-02 8.243132e-01 6.196931e-01
## 138 1.739681e-01 7.010700e-01 2.736868e-01 5.498905e-02
## 139 4.630491e-02 5.624799e-01 1.183221e-01 3.326309e+00
## 140 3.579541e-01 1.057362e-03 3.786473e-01 1.262580e-01
## 141 1.325858e+00 9.652716e-02 1.072080e+00 7.006570e-02
## 142 5.509357e-01 8.703890e-01 3.190720e-01 5.008396e-01
## 143 8.368194e-02 2.001877e-03 5.338762e-01 5.001519e-01
## 144 8.694519e-01 4.187527e-03 3.291859e-01 3.351883e-01
## 145 1.315529e-01 6.165199e-01 6.712788e-02 2.289487e+00
## 146 8.608001e-01 1.009795e+00 3.250656e-01 3.937726e-01
## 147 4.415541e-01 5.379061e-01 4.173165e-02 3.782477e-03
## 148 5.204441e-01 2.392872e-03 4.125299e-01 7.391949e-02
## 149 3.358142e-02 7.229180e-03 7.661178e-01 7.560020e-01
## 150 4.017038e-01 9.503630e-01 2.364840e-01 5.256837e-01
## 151 6.767144e-01 5.281157e-01 2.091451e-02 3.676924e-01
## 152 2.033624e-01 8.904729e-01 1.992102e-01 8.041453e-01
## 153 2.667236e-01 2.014311e-02 8.976449e-01 2.292549e-01
## 154 3.290386e-01 1.917631e-03 4.776932e-01 3.388999e-01
## 155 4.511022e-01 2.835901e-02 9.649210e-01 1.953389e-01
## 156 1.244498e+00 1.856555e-02 3.246736e-01 1.662159e-01
## 157 8.137786e-01 5.087710e-01 1.465621e-02 1.555900e+00
## 158 7.168615e-01 8.175528e-03 3.992611e-01 7.787663e-02
## 159 6.591537e-01 5.309932e-01 1.970618e-02 1.900934e+00
## 160 5.859268e-01 5.865828e-03 4.241977e-01 2.588036e-02
## 161 4.013385e-01 2.014036e-02 9.690715e-01 1.612269e-01
## 162 9.179704e-01 1.678301e-02 3.893875e-01 1.250893e-01
## 163 8.726949e-02 7.696600e-01 3.939192e-02 3.765381e+00
## 164 1.125051e+00 3.506728e-02 4.020066e-01 4.598102e-01
## 165 7.848953e-01 7.341006e-01 7.151044e-05 7.313359e-03
## 166 3.825518e-01 3.703499e-02 6.532440e-01 2.232283e-01
## 167 5.515929e-01 8.126309e-01 3.472553e-04 3.334929e-01
## 168 1.068610e+00 8.028109e-02 5.317258e-01 6.627032e-01
## 169 2.589013e-02 1.000097e-02 1.062586e+00 4.378632e-01
## 170 6.586316e-02 1.192314e+00 5.388871e-02 1.472892e-06
## 171 6.337981e-01 8.327223e-01 1.878344e-04 6.894383e-01
## 172 3.270092e-01 1.312563e+00 9.274125e-02 1.203151e-02
## 173 5.249872e-01 8.552295e-01 1.513882e-07 1.158680e+00
## 174 3.689571e-01 1.326176e+00 1.018246e-01 7.428680e-01
## 175 7.557084e-01 5.580840e-07 1.455064e+00 8.508708e-02
## 176 9.565622e-01 9.871140e-02 6.097743e-01 2.212571e-01
## 177 1.702424e+00 7.153203e-01 1.955450e-02 3.014407e-05
## 178 2.546192e-01 1.332584e+00 7.270708e-02 5.732627e-03
## 179 1.823519e+00 8.811234e-01 5.770290e-02 7.157556e-04
## 180 3.670553e-01 1.618453e+00 4.397533e-02 5.962210e-01
## 181 1.173824e-02 9.630779e-02 1.435027e+00 2.475212e-01
## 182 8.448735e-01 2.355968e-01 9.136502e-01 3.135564e-01
## 183 8.883054e-01 1.229986e+00 5.889212e-02 2.681612e-01
## 184 1.085790e+00 2.771915e-01 8.963763e-01 2.266446e-01
## 185 1.314237e-02 1.221337e-01 1.519042e+00 2.446876e-02
## 186 7.582256e-01 2.068458e+00 2.593427e-02 5.183563e-01
## 187 5.609099e-01 7.926092e-02 1.989560e+00 3.455959e-03
## 188 2.117117e-01 1.984158e+00 6.341907e-04 2.775339e-03
## 189 2.222506e-01 1.363674e-01 1.932220e+00 4.564039e-01
## 190 6.138558e-01 3.399491e-01 1.195859e+00 5.081291e-01
## 191 2.672357e-02 1.779442e-01 1.746766e+00 7.061317e-01
## 192 4.145771e-01 3.128654e-01 1.276869e+00 2.542167e-02
## 193 4.397767e-01 2.128453e+00 2.082430e-01 1.560830e+00
## 194 6.760503e-01 6.256979e-01 1.595709e+00 8.920093e-01
## 195 4.431594e-01 4.603281e-01 3.023206e+00 1.872140e-01
## 196 5.162465e-01 8.360831e-01 2.006785e+00 2.819272e-01
## 197 1.679257e-01 7.105191e-01 3.194373e+00 5.536133e-02
## 198 1.943339e-01 3.643297e+00 1.827638e-01 7.282311e-02
## 199 2.183273e-01 3.903185e+00 7.111181e-01 1.105524e+00
## 200 4.208430e-01 4.690304e+00 3.338119e-01 1.579600e-01
## 
## $dist
##         1         2         3         4         5         6         7         8 
## 2.5525074 2.7143333 2.9073987 2.4606740 2.0060752 2.4526882 2.5387763 2.7586052 
##         9        10        11        12        13        14        15        16 
## 3.2256056 2.1027999 3.1377482 2.6396161 2.6341321 2.3239514 2.4026514 2.5262409 
##        17        18        19        20        21        22        23        24 
## 1.8682366 2.3998092 2.2127017 2.5220834 1.9090893 2.2341682 2.4434378 2.0532525 
##        25        26        27        28        29        30        31        32 
## 2.3425169 2.2002351 1.7390449 1.7519712 1.6730914 2.3604545 2.8555402 2.1379541 
##        33        34        35        36        37        38        39        40 
## 2.5743749 2.6928858 2.0971187 2.2277953 1.8777035 1.7321429 1.5870931 2.0860040 
##        41        42        43        44        45        46        47        48 
## 2.3232335 2.4048504 1.6386120 1.3986088 1.6541801 1.7113862 1.4410446 1.4629562 
##        49        50        51        52        53        54        55        56 
## 1.4151384 1.3491814 1.3502132 1.4476178 1.2546327 1.9894507 1.3842061 1.4804181 
##        57        58        59        60        61        62        63        64 
## 1.3948586 2.5260101 1.3486191 1.6246245 2.5748565 1.9093722 2.2671176 1.5337723 
##        65        66        67        68        69        70        71        72 
## 2.1230607 1.9642531 1.0508617 2.3236395 1.9101483 1.1281186 2.5494603 1.1932520 
##        73        74        75        76        77        78        79        80 
## 1.8039581 1.8173591 1.8552783 1.4858137 1.0271461 1.1616923 1.4653341 1.2167011 
##        81        82        83        84        85        86        87        88 
## 1.7415695 1.1721213 2.3546388 1.0815026 1.5997346 1.3391108 1.4964045 1.5169816 
##        89        90        91        92        93        94        95        96 
## 1.0301248 1.2092004 2.2804481 1.9086264 1.3063551 0.9745680 1.0626297 1.5536599 
##        97        98        99       100       101       102       103       104 
## 1.0694439 1.2286056 1.3437101 1.7621728 1.4866769 1.1517998 2.3396149 1.4700098 
##       105       106       107       108       109       110       111       112 
## 1.3627401 1.5909511 2.1426541 1.5780154 2.3949926 2.2550419 2.1927798 1.6868749 
##       113       114       115       116       117       118       119       120 
## 0.9528978 1.8291937 1.7494998 1.6863842 1.9739369 1.2090323 1.2979174 1.2474551 
##       121       122       123       124       125       126       127       128 
## 1.4515818 1.0033238 0.9939815 1.9711482 1.6990622 1.5216431 1.3669045 2.1126214 
##       129       130       131       132       133       134       135       136 
## 2.4163223 1.5369375 2.0813125 1.5357642 1.5361918 1.3949217 2.5312755 1.9142388 
##       137       138       139       140       141       142       143       144 
## 1.9900790 1.5884958 2.4496623 1.3570054 2.4218317 2.1398540 1.3770098 1.8481604 
##       145       146       147       148       149       150       151       152 
## 2.2031124 2.3608802 1.5497077 1.5082570 1.5964041 2.0553175 1.8616538 1.9670766 
##       153       154       155       156       157       158       159       160 
## 1.6552910 1.4952436 1.8258488 2.0544942 2.3198399 1.6724209 2.3420464 1.5542496 
##       161       162       163       164       165       166       167       168 
## 1.7731836 1.8445147 2.6438424 2.1148463 1.9146541 1.6200967 1.9082139 2.2202957 
##       169       170       171       172       173       174       175       176 
## 1.6300987 1.6672760 2.0937113 1.9556255 2.1837128 2.2285275 2.2042982 2.0536967 
##       177       178       179       180       181       182       183       184 
## 2.4750499 1.9041071 2.6214672 2.2955561 1.7992065 2.2121369 2.3335869 2.3411687 
##       185       186       187       188       189       190       191       192 
## 1.7752033 2.6701754 2.3205639 2.1769657 2.2571738 2.2971360 2.1554580 2.0455247 
##       193       194       195       196       197       198       199       200 
## 2.8529527 2.7027133 2.8351390 2.6943514 2.8217593 2.9337912 3.4043855 3.4366178
# Analysis of clustering result

par(mfcol=c(1,2))
plot.PCA(x = pca_result, 
         choix = "ind",
         label = "quali", 
         col.ind = "blue", 
         title = "Spending Score")

plot.PCA(x = pca_result, 
         choix = "ind", 
         label = "quali", 
         col.ind = "red", 
         title = "Cluster")

The above plots illustrate individual factor maps of a biplot, where the points represent observations colored by their Spending Score (form Kaggle) and Cluster (after clustering).

Dim1 and Dim2 represent PC1 and PC2, respectively, and each has a percentage share of information from the total dataset.

3D Plot

mall_3d <- as.data.frame(cbind(mall_retaining, 
                               cluster = mall_clean$Cluster))

plot_ly(mall_3d, x = ~Dim.1, 
        y = ~Dim.2, 
        z = ~Dim.3, 
        color = ~cluster, #
        colors = c('#A6D0DD', '#FF6969', '#FFD3B0')) %>%
  add_markers() %>%
  layout(scene = list(xaxis = list(title = 'Dim.1'),
                     yaxis = list(title = 'Dim.2'),
                     zaxis = list(title = 'Dim.3')))

Summary

  • Our data demonstrates non-multicollinearity, indicating that each predictor or variable is independent of the others. This is evident in our ggpair and ggcorr plots.

  • To perform K-means clustering, we first identify the optimal k-value using the elbow plot. We then use this value in the “kmodel” to generate a clustering plot.

  • Cluster profiling is subsequently conducted, allowing us to identify four distinct groups :

    1. A group of women around 53 years old with a midle spending score.
    2. A group of men around 30 years old with a relatively high spending score.
    3. A group of women around 32 years old with a relatively high spending score.
    4. A group of men around 55 years old with a relatively middle spending score.
    5. A group of women around 28 years old with a relatively middle spending score.
  • We need to explore more to know why we have 5th and 6th group

  • We can use the eigenvalues obtained from the clustering to perform dimensionality reduction, selecting three principal components (PCs) from a total of four to retain at least 80% of the information from the original data. By doing so, we were able to reduce the dimensions by approximately 25% while retaining 83% of the information.

  • The improved dataset resulting from unsupervised learning, such as PCA, can be used for various purposes, such as supervised learning (classification) or better visualization of high-dimensional data with insights.