Лабораторія кластеризації K-Means
Інтерактивний 2D симулятор з регіонами Вороного, оновленням центроїдів та відстеженням інерції.
K-Means ділить дані на K кластерів, мінімізуючи квадратичну відстань всередині кластерів (інерцію).
$$ J = \sum_{i=1}^{N} \min_{1 \leq j \leq K} \left\lVert x_i - \mu_j \right\rVert^2 $$
Кожен зразок призначається найближчому центроїду, після чого центроїди перераховуються як середнє призначених зразків.
Алгоритм чергує два детерміновані кроки:
$$ c_i \leftarrow \arg\min_j \lVert x_i - \mu_j \rVert^2 $$
$$ \mu_j \leftarrow \frac{1}{|C_j|}\sum_{x_i \in C_j} x_i $$
Інерція монотонно зменшується до локального оптимуму.
Випадкова ініціалізація проста, але може стартувати з поганих seed.
k-means++ розносить початкові центроїди, часто даючи швидшу збіжність і нижчу фінальну інерцію.
У продакшені використовуйте кілька запусків з різними seed, щоб зменшити чутливість до локальних мінімумів.
- Завантажте demo точки і порівняйте Random vs k-means++ ініціалізацію.
- Спробуйте різні значення K та огляньте межі регіонів і кількість кластерів.
- Використовуйте Step, щоб переглядати один цикл assign/update за раз.
- Запустіть до збіжності та порівняйте фінальні значення інерції.
Клікніть по полотну, щоб додати точки. На touch довге натискання або правий клік видаляє найближчу точку.