Path: blob/master/Machine Learning Unsupervised Methods/Day 2.2 Understanding K-means and Use case (Customer Segmentation ).ipynb
3074 views
Introduction
Clustering is the task of dividing the population or data points into a number of groups such that data points in the same groups are more similar to other data points in the same group than those in other groups.
In simple words, the aim is to segregate groups with similar traits and assign them into clusters.
There are many models for clustering out there. In this notebook, we will be presenting the model that is considered one of the simplest models amongst them. Despite its simplicity, the K-means is vastly used for clustering in many data science applications, especially useful if you need to quickly discover insights from unlabeled data. In this notebook, you will learn how to use k-Means for customer segmentation.
Some real-world applications of k-means:
Customer segmentation
Understand what the visitors of a website are trying to accomplish
Pattern recognition
Machine learning
Data compression
Behavioral Segmentation
Inventory Categorization
Sorting Sensor measurements
Detecting bots and anomalies
Computer Vision
Astronomy
In this notebook we practice k-means clustering with 2 examples:
k-means on a random generated dataset
Using k-means for customer segmentation
Import libraries
Lets first import the required libraries. Also run %matplotlib inline since we will be plotting in this section.
k-Means on a randomly generated dataset
Lets create our own dataset for this lab!
First we need to set up a random seed. Use numpy's random.seed() function, where the seed will be set to 0
- X: Array of shape [n_samples, n_features]. (Feature Matrix)
- The generated samples.
- y: Array of shape [n_samples]. (Response Vector)
- The integer labels for cluster membership of each sample.
Input
- n_samples: The total number of points equally divided among clusters.
- Value will be: 5000
- centers: The number of centers to generate, or the fixed center locations.
- Value will be: [[4, 4], [-2, -1], [2, -3],[1,1]]
- cluster_std: The standard deviation of the clusters.
- Value will be: 0.9
Output
Setting up K-Means
- Now that we have our random data, let's set up our K-Means Clustering.The KMeans class has many parameters that can be used, but we will be using these three:
- init: Initialization method of the centroids.
- Value will be: "k-means++"
- k-means++: Selects initial cluster centers for k-mean clustering in a smart way to speed up convergence.
- n_clusters: The number of clusters to form as well as the number of centroids to generate.
- Value will be: 4 (since we have 4 centers)
- n_init: Number of time the k-means algorithm will be run with different centroid seeds. The final results will be the best output of n_init consecutive runs in terms of inertia.
- Value will be: 12
Initialize KMeans with these parameters, where the output parameter is called k_means.
Creating the Visual Plot
So now that we have the random data generated and the KMeans model initialized, let's plot them and see what it looks like!Three Clusters
Customer Segmentation with K-Means
Imagine that you have a customer dataset, and you need to apply customer segmentation on this historical data. Customer segmentation is the practice of partitioning a customer base into groups of individuals that have similar characteristics. It is a significant strategy as a business can target these specific groups of customers and effectively allocate marketing resources. For example, one group might contain customers who are high-profit and low-risk, that is, more likely to purchase products, or subscribe for a service. A business task is to retaining those customers. Another group might include customers from non-profit organizations.
The dataset consists of 309 rows. The mean annual income is 245000 and the mean annual spend is 149000.
Why Clustering?
The mathematics behind clustering, in very simple terms involves minimizing the sum of square of distances between the cluster centroid and its associated data points
Insights
The plot shows the distribution of the 4 clusters. We could interpret them as the following customer segments:
Cluster 1: Customers with medium annual income and low annual spend
Cluster 2: Customers with high annual income and medium to high annual spend
Cluster 3: Customers with low annual income
Cluster 4: Customers with medium annual income but high annual spend
Insights :
Cluster 1: Medium income, low annual spend
Cluster 2: Low income, low annual spend
Cluster 3: High income, high annual spend
Cluster 4: Low income, high annual spend
Cluster 5: Medium income, low annual spend