[МУЗЫКА] [МУЗЫКА] [МУЗЫКА] Здравствуйте! В рамках прошлых лекций мы познакомились с вами с иерархическими методами кластерного анализа, и сегодня мы переходим к рассмотрению итерационных методов кластерного анализа, и начнем мы с метода К-средних. В чем состоит основное отличие итерационных методов от иерархических? Ну как вы помните на примере иерархического агломеративного кластерного анализа, у нас сначала каждое наблюдение представляет собой отдельный кластер, а затем с помощью какого-то метода мы постепенно объединяем их в группы все большего и большего размера, и в конце у нас все наблюдения уже лежат в одном кластере. И после этого мы пытаемся выявить момент, когда разбиение у нас было оптимальным, и мы начали уже объединять кластеры между собой. Иными словами, в случае иерархического кластерного анализа мы не знаем заранее, какое количество кластеров мы выделим по нашим данным. И, на самом деле, в этом состоит основное отличие итерационных методов от иерархических, потому что в итерационных методах мы должны заранее знать, какое количество кластеров мы собираемся выделить по нашей выборке. Ну откуда мы можем знать эту информацию? Мы, в принципе, можем знать ее априори. Ну, например, мы пытаемся кластеризовать анкетные данные. У нас были респонденты, которые отвечали на какие-то вопросы, и сейчас мы пытаемся разбить наши данные на кластер мужчин и кластер женщин. Ну, соответственно, в данном случае мы априори знаем количество групп, которые мы пытаемся выделить в своих данных. Если мы не знаем какой-то априорной информации, мы можем получить информацию о количестве кластеров, проведя какой-то предварительный анализ. Ну, например, мы могли провести предварительно иерархический кластерный анализ, определиться с количеством кластеров, которое оптимально для наших данных, и после этого перейти уже к итерационным методам кластерного анализа. Основная идея метода К-средних состоит в том, что мы пытаемся выделить такие кластеры в наших данных, чтобы минимизировать среднеквадратическое отклонение расстояния каждого наблюдения от центра каждого кластера. Ну, соответственно, мы пытаемся минимизировать функционал следующего вида, где К — это у нас количество кластеров, которые мы пытаемся выделить, S — это, собственно, наши кластера, и μ — это центры наших кластеров. Ну давайте рассмотрим алгоритм более подробно. В начале, как я уже говорила, мы должны определиться с количеством кластеров, которое мы выделяем. После того как мы выбрали количество кластеров, мы должны задать некоторое начальное приближение для центров этих кластеров. А здесь, соответственно, тоже мы можем опираться либо на какую-то априорную информацию, либо на результаты какого-то предварительного анализа, но на самом деле достаточно часто начальное приближение использует просто какие-то случайно сгенерированные точки. После того как мы выбрали начальное приближение для центров наших кластеров, мы считаем расстояние от каждого элемента в нашей выборке до центров этих кластеров. И после этого распределяем наши данные по кластерам, исходя из того, к центру какого кластера ближе у нас оказалось то или иное наблюдение. После того как мы распределили все наши данные по кластерам, мы пересчитываем центры кластеров как центры масс тех наблюдений, которые в него попали. Соответственно, в данном случае у нас центры кластеров сдвинутся, и мы повторяем этап с перераспределением данных. То есть мы опять считаем расстояние от каждого наблюдения до уже нового центра кластера и опять перераспределяем данные, то есть опять выбираем, к какому кластеру сейчас у нас оказалось ближе то или иное наблюдение. Ну и после чего опять должны пересчитать центры кластеров, и мы повторяем эту операцию до тех пор, пока у нас центры кластеров не перестанут сдвигаться. То есть пока мы не выделим достаточно устойчивые кластера, которые не меняются у нас от итерации к итерации. Ну либо еще всегда задают некоторое максимальное количество итераций, при превышении которого алгоритм также останавливается. Ну это делается для того, чтобы мы просто не зацикливались. Ну и на самом деле у данного метода есть проблемы и требования. Ну и основным, конечно, проблемным требованием является тот факт, что мы должны задать количество кластеров. На самом деле, это достаточно серьезное ограничение на применимость этого метода, потому что мы далеко не всегда обладаем достаточной информацией, чтобы сказать, как много групп мы хотим выделить в своих данных. Также следует помнить, что результат данного метода очень сильно зависит от того начального приближения центров кластеров, которое мы используем на первой итерации. И в данном случае мы должны либо больше усилий потратить на какой-то предварительный анализ, чтобы выбрать хорошее начальное приближение, либо, что очень часто делается на практике, делать несколько запусков, ну то есть, например, выбирать начальное приближение каким-то случайным образом, но делать это не один раз, а несколько, ну и сравнивать результаты между собой. Такой подход, конечно, будет более устойчивым. Ну и также следует помнить, что данный алгоритм не гарантирует нам, что мы сойдемся к глобальному минимуму нашего функционала, то есть к глобальному минимуму среднеквадратического отклонения расстояния наблюдений от центров кластеров. То есть, в принципе, мы можем сойтись к какому-то локальному минимуму. Ну и в следующий раз мы поговорим про метод К-средних более подробно, на примере.