Breathing K-Means: Superior K-Means Solutions through Dynamic K-Values
Abstract
We introduce the breathing k-means algorithm, which on average significantly improves solutions obtained by the widely-known greedy k-means++ algorithm, the default method for k-means clustering in the scikit-learn package. The improvements are achieved through a novel ``breathing'' technique, that cyclically increases and decreases the number of centroids based on local error and utility measures. We conducted experiments using greedy k-means++ as a baseline, comparing it with breathing k-means and five other k-means algorithms. Among the methods investigated, only breathing k-means and better k-means++ consistently outperformed the baseline, with breathing k-means demonstrating a substantial lead. This superior performance was maintained even when comparing the best result of ten runs for all other algorithms to a single run of breathing k-means, highlighting its effectiveness and speed. Our findings indicate that the breathing k-means algorithm outperforms the other k-means techniques, especially greedy k-means++ with ten repetitions, which it dominates in both solution quality and speed. This positions breathing k-means (with the built-in initialization by a single run of greedy k-means++) as a superior alternative to running greedy k-means++ on its own.
Keywords
Cite
@article{arxiv.2006.15666,
title = {Breathing K-Means: Superior K-Means Solutions through Dynamic K-Values},
author = {Bernd Fritzke},
journal= {arXiv preprint arXiv:2006.15666},
year = {2024}
}
Comments
v5: Title changed to better address the core contribution. Terminology unified. v4: 40 pages, 10 figures, 19 tables; Algorithm has been compared to five additional k-means algorithms (beneath greedy k-means++). Five different groups of test problems have been investigated. Python package: https://pypi.org/project/bkmeans