Feature Extraction and Brand Perceptual Map Using PCA in R

Kelly Szutu
Analytics Vidhya
Published in
4 min readApr 20, 2020
Photo by Capturing the human heart. on Unsplash

In the previous article “Feature Extraction Using Factor Analysis in R”, we mentioned that besides factor analysis, principal component analysis is also a common way to reduce the dimensionality. So here, I’m going to use the same data to introduce PCA, and also show its result on the perceptual map.

What is PCA?

An unsupervised learning mathematical procedure that uses an orthogonal transformation to convert a set of observations of possibly correlated variables into a set of linearly uncorrelated principal components.

Since that PCA calculates a new projection of the data set and the new axis is based on the standard deviation of variables, it is necessary to normalize data before performing PCA so that all variables can have the same weight due to the same standard deviation.

To start with, we use the same steps as what we did before: first import the data, scale the data and then use the aggregate function to compute the mean across 10 brands.

#read data
rating <- read.csv(“http://goo.gl/IQl8nc")
#scale data
rating.sc <- rating
rating.sc[,1:9] <- scale(rating[,1:9])
#compute mean
brand.mean <- aggregate(rating.sc[,1:9], list(rating.sc[,10]), mean)

Next, change the row name to brand name and exclude brand column before doing PCA (with prcomp function).

rownames(brand.mean) <- paste("",letters,sep="")[1:10]
(brand.mean <- brand.mean[,-1] )
rating.pc <- prcomp(brand.mean, scale=TRUE)
summary(rating.pc)

Eigenvalue equals to the square of standard deviation. Therefore, we got 2 key variables that can explain 84% of the data. Key variables can also be determined by finding the kink point.

plot(rating.pc, type="l")

It’s obvious that the first two components account for the largest proportion, meaning that those two can explain more of the data and the remaining part is relatively not important. However, there is no guarantee that the dimensions are interpretable. In order words, we don't know what feature or feature combination represents the key components.

Why Mapping?

This provides a useful graph for marketers to understand the competition structure among brands, products or industries. So for the brand rating data like this, performing a perceptual map can let us understand how each brand is comparatively positioned in peoples’ minds. It is also helpful for developing a marketing strategy for differentiating from other competing brands.

#positioning
biplot(rating.pc, main=”Brand Positioning”, cex=c(1,0.7))

We can see from the graph that the brands which are close have the competition relationships in the market, such as a and j, c and b, g and f. Thus, as a brand manager, you can do competitive product analysis to create differences and characteristics. Or if you are new in the market, you can target your own brand towards the aspects (e.g. trendy, perform) that fewer brands put effort into (the emptier position in this picture).

Multidimensional Scaling (MDS) is another tool for brand perceptual map. It has the same idea as using PCA: focusing on consumer’s perceptions), but instead of calculating the standard deviation, it calculates the distance (dissimilarity) between a pair of items and outputs a coordinate matrix.

brand.dist <- dist(brand.mean)
(brand.mds <- cmdscale(brand.dist))
#differentiation
plot(brand.mds, type=”n”, main=”Brand Differentiation”)
rownames <- paste(“”,letters,sep=””)[1:10]
text(brand.mds, rownames, cex=1)

Interpretation of the map “Brand Differentiation” is similar to the map “Brand Positioning”. In conclusion, the closer the positioning of two brands, the more likely they are to compete; the more isolated a brand is on some relevant dimension, the more unique it is considered to be. Additionally, considering strength and resources of the company, marketer is able to consider moving the brand closer to certain target ideal points.

About me

Hey, I’m Kelly, a business analytics graduate student with journalism and communication background who likes to share the life of exploring data and interesting findings. If you have any questions, feel free to contact me at kelly.szutu@gmail.com

--

--

Kelly Szutu
Analytics Vidhya

Journalist x Data Visualization | Data Analyst x Machine Learning | Python, SQL, Tableau | LinkedIn: www.linkedin.com/in/szutuct/