Теория

Метод K-средних (K-Means)

Algo_KMeans
<h2>Идея метода</h2> <p>K-Means — это алгоритм разбиения, который заранее получает число кластеров \(K\) и описывает каждый кластер центроидом. Центроид — это не обязательно реальная точка из выборки, а среднее положение объектов внутри группы.</p> <p>Метод старается сделать кластеры компактными: каждая точка должна быть близка к центроиду своего кластера. Поэтому целевая функция записывается как сумма квадратов расстояний от точек до назначенных центроидов:</p> <p>$$Q = \sum_{i=1}^{\ell} \|x_i - \mu_{a_i}\|^2 \rightarrow \min.$$</p> <p>Здесь \(x_i\) — объект, \(a_i\) — номер его кластера, \(\mu_{a_i}\) — центроид этого кластера.</p> <h2>Два чередующихся шага</h2> <ol> <li><strong>Назначение точек.</strong> Для каждой точки выбирается ближайший центроид: $$a_i = \arg\min_k \|x_i - \mu_k\|^2.$$</li> <li><strong>Пересчет центроидов.</strong> Для каждого кластера считается среднее его точек: $$\mu_k = \frac{1}{|C_k|}\sum_{x_i \in C_k} x_i.$$</li> </ol> <p>Эти шаги повторяются, пока назначения почти не меняются или пока не достигнут лимит итераций. На каждой итерации значение \(Q\) не увеличивается, поэтому алгоритм обычно быстро стабилизируется.</p> <h2>Что важно понимать</h2> <p>K-Means не перебирает все возможные разбиения. Он улучшает текущее решение, поэтому результат зависит от начальных центроидов и может оказаться локальным оптимумом. На практике алгоритм запускают несколько раз с разными инициализациями и выбирают разбиение с меньшей суммой квадратов.</p>