../ Data Science
-rw-r--r--aguang1.6 KiB2 min read

K-Means Clustering

K-Means is a clustering algorithm by which you can cluster data points into specific number of groups.

Given data points X={x1,x2,⋯ ,xn}X = \{x_1, x_2, \cdots, x_n \} where xi∈Rmx_i \in R^m, we want to calculate a clustering {S1,S2,⋯ ,Sk}\{S_1, S_2, \cdots, S_k\} where,

  • ⋂i=1nSi=∅\bigcap_{i = 1}^n S_i = \empty and ⋃i=1nSi=X\bigcup_{i = 1}^n S_i = X.
  • WCSS (within-cluster sum of squares) ∑i=1k∑x∈Si∣∣x−ui∣∣2\sum_{i = 1}^k \sum_{x \in S_i}{\lvert \lvert x - u_i \rvert \rvert}^2 is minimum, where ui=1∣Si∣∑x∈Sixu_i = \frac{1}{\lvert S_i \rvert} \sum_{x \in S_i} x is the center of the cluster SiS_i.

Pseudo Code

K-Means(X,K):U={u1,u2,⋯ ,uk}←{x1,x2,⋯ ,xk}do:U′←U{c1,c2,⋯ ,cn}←{1,1,⋯ ,1}for ui∈U,xj∈X:if ∣∣ui−xj∣∣<∣∣ucj−xj∣∣:cj←ifor ui∈U:Si←{xj∣cj=i}ui←1Si∑xj∈Sixjutil ∣∣U′−U∣∣<σ\begin{aligned} & \text{K-Means}(X, K) :\\ & \quad U = \{u_1, u_2, \cdots, u_k \} \leftarrow \{ x_1, x_2, \cdots, x_k \} \\ & \quad \mathtt{do} : \\ & \quad \quad U^{'} \leftarrow U \\ & \quad \quad \{c_1, c_2, \cdots, c_n \} \leftarrow \{ 1, 1, \cdots, 1 \} \\ & \quad \quad \mathtt{for}\ u_i \in U, x_j \in X : \\ & \quad \quad \quad \mathtt{if}\ \lvert \lvert u_i - x_j \rvert \rvert < \lvert \lvert u_{c_j} - x_j \rvert \rvert : \\ & \quad \quad \quad \quad c_j \leftarrow i \\ & \quad \quad \mathtt{for}\ u_i \in U : \\ & \quad \quad \quad S_i \leftarrow \{ x_j \mid c_j = i \} \\ & \quad \quad \quad u_i \leftarrow \frac{1}{S_i} \sum_{x_j \in S_i} x_j \\ & \quad \mathtt{util}\ \lvert \lvert U^{'} - U \rvert \rvert < \sigma \\ \end{aligned}

References

COMMAND INTERFACE

↑ ↓ navigate · Enter execute · Esc exit · try “whoami”

Loading filesystem…

:help aguang.xyz

A personal website disguised as an operating system.

Ctrl / Cmd + K
Command palette + full-text search
Tab / Shift + Tab
Move between links and controls
Enter
Open a focused link or search result
↑ / ↓ in search
Navigate search results
In a directory filter
Enter/Done or ↓ focuses a result; Esc clears the filter
Esc
Clear a search or close a window