I have a data set containing actions taken by customers (e.g., view a product, add a product to cart, purchase product), the product bought (if any) and times of said actions. I am attempting to use K-means clustering to identify the customers who are more likely to purchase a product based on these actions (minus the purchase).
I'm currently clustering using: the number of products viewed, the number of products put in the cart, the mean time between the actions, the variance of the time between the actions, the standard deviation of the time between the actions (all of these values are normalized), as well as the product purchased (if any). The clusters I'm getting contain ~10%
buyers and 90%
non-buyers, but I'm trying to separate buyers and non-buyers.
Any thoughts on what else I can do? Or should I try another method completely?
Illustration: x axis are the clusters, y axis is the number of customers, red are buyers and blue are non-buyers
Update: I made a 3D graph showcasing the clusters, the amount of customers and the mean time between actions (normalized because of reasons)
Yet another update: customers (not grouped by cluster, just as is) according to the average number of products they viewed and the average time between actions
I took some advice and tried using PCA (from this tutorial), and these are the results I got:
The raw data (x=number of items viewed/carted, y=average time between interactions)
Any tips on how to cluster this mess?