I am segmenting customers using the RFM technique. The dataset looks like this: Sample

Recency shows the number of years since the last payment (ranging between 0 and 4). In this context, using years is the most meaningful way. Frequency indicates the number of payments made (a count), and Monetary presents the $ amount of purchases made by that customer.

I am trying to segment the customers (~10000 in total) using different clustering algorithms. The algorithms I am aiming to use are K-Means, HC, GMM, and DBSCAN. One goal is to show how each of these algorithms performs in the segmentation of the customers. However, I am confused about whether I should normalize and/or standardize my data. I am confused because each algorithm requires different preprocessing, and I cannot predict how normalization will affect the final result. One way to segment customers in this method is to assign each attribute to a quantile. But this is not applicable in my case since the original value of F and M matter a lot and will be lost this way.

Should I normalize data in one algorithm and leave it unnormalized in another?

Is my dataset suitable for normalizing?

Is there any other algorithm that will suit my purpose?

The ultimate goal is to perform segmentation using all of the mentioned clustering algorithms, choose the algorithm with the most accurate results, calculate the value of each cluster using CLV based on that, and perform demographic analysis on each cluster in order to gain deeper insight.


1 Answer 1


Yes, normalizing your data before applying the clustering algorithms is a good idea. There is no reason to not do it for any of the algorithms you cited. And yes, your dataset is suitable for normalizing.

There are lots of clustering algorithms out there, but yours is quite a sensible selection to start with.

You say you want to "choose the algorithm with the most accurate results". The evaluation of the clustering is usually quite difficult since there are no really good, crisp, evaluation metrics.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.