K-Means Algorithm

Jupyter Demos

▶️ Demo | K-means Algorithm - split Iris flowers into clusters based on petal_length and petal_width

Definition

K-means clustering aims to partition n observations into K clusters in which each observation belongs to the cluster with the nearest mean, serving as a prototype of the cluster.

The result of a cluster analysis shown below as the coloring of the squares into three clusters.

Clustering

Clustering

Description

Given a training set of observations:

Training set

Training set

x-i

x-i

Where each observation is a d-dimensional real vector, k-means clustering aims to partition the m observations into K (≤ m) clusters:

Clusters

Clusters

… so as to minimize the within-cluster sum of squares (i.e. variance).

Below you may find an example of 4 random cluster centroids initialization and further clusters convergence:

Clustering

Clustering

Picture Source

Another illustration of k-means convergence:

Clustering

Clustering

Cost Function (Distortion)

c-i - index of cluster (1, 2, …, K) to which example x(i) is currently assigned.

mu-k - cluster centroid k (mu-k-2) and k.

mu-c-i - cluster centroid of a cluster to which the example x(i) has been assigned.

For example:

Cluster example

Cluster example

In this case optimization objective will look like the following:

Cost Function

Cost Function

Clustering

Clustering

The Algorithm

Randomly initialize K cluster centroids (randomly pick K training examples and set K cluster centroids to that examples).

Centroids

Centroids

k-means-algorithm

k-means-algorithm