Что такое кластеризация?

Пого навещает своего друга. Его друг Дипи - антофил (человек, любящий цветы). У Дипи есть большая куча цветов на заднем дворе, все они принадлежат к одному виду, но разного цвета!

Дипи спрашивает Пого, может ли он создать кластеры из кучи цветов, лежащих на его фоне. Пого смотрит на груду цветов. Он видит, что все цветы выглядят почти одинаково. У них очень похожие характеристики во всем, кроме одного - цвета!

Итак, Пого просто кладет все цветы одного цвета в отдельную корзину и продолжает наслаждаться охлажденным пивом со своим приятелем Дипи.

Так что именно здесь произошло?

По сути, Пого выполнял задачу группировки набора объектов (в его случае цветов) таким образом, чтобы объекты в одной группе (называемой кластером) имели некоторые общие черты (цвет является общей чертой в его случае) друг с другом, чем с представителями других групп.

Я надеюсь, что теперь вы хорошо понимаете, что такое кластеризация.

Чуть более формально кластеризация - это алгоритм машинного обучения без учителя, который включает группировку точек данных. Теоретически точки данных, попадающие в один и тот же кластер, должны иметь схожие характеристики / функции, в то время как точки данных, попадающие в разные кластеры, должны иметь сильно различающиеся свойства / функции.

В Data Science мы используем кластерный анализ, чтобы получить ценную информацию из наших данных, наблюдая, в какие группы попадают точки данных, когда мы применяем алгоритм кластеризации. Кластеризация выявляет лежащий в основе шаблон или структуру точек данных, которые в противном случае остались бы незамеченными.

Существуют различные алгоритмы кластеризации. Но я собираюсь рассказать о первом в истории алгоритме кластеризации, с которым я столкнулся, и он очень простой. Это называется кластеризацией k-средних.

Кластеризация k-средних

Это один из самых простых и легко реализуемых алгоритмов обучения без учителя, решающий проблему кластеризации.

Шаги, связанные с алгоритмом кластеризации k-средних

  1. Мы начинаем со значения k, количества кластеров / классов / групп, которые мы хотим создать в данном наборе данных, и инициализируем k центров кластеров в n-мерном пространстве функций. Хорошо бы взглянуть на данные и попытаться вычислить количество отдельных кластеров k. Обратите внимание, что все k центров кластеров являются n-мерными векторами в n-мерном пространстве признаков.
  2. Каждая точка данных классифицируется по одному из k центров кластера путем вычисления расстояния от нее до всех k центров кластера, а затем классификации точки по кластеру, центр которого находится ближе всего к нему.
  3. Основываясь на этих классифицированных точках, мы повторно вычисляем центр группы, взяв среднее значение всех n-мерных векторов в группе.
  4. Мы повторяем эти шаги до тех пор, пока центры кластеров не сильно не изменятся (пока центры кластеров не сойдутся).

Преимущества

  1. k-Means действительно быстро. Вычисление расстояний между точками данных и центрами кластеров - это все, что мы здесь делаем. Имеет линейную сложность O (n)
  2. Его очень легко понять и реализовать с нуля, используя только Numpy.

Недостатки

  1. Мы должны выбрать количество кластеров k, которые мы хотим создать в наборе данных. Это не очень простая задача, и в идеале мы хотели бы, чтобы алгоритм кластеризации понял это за нас.
  2. k-Means начинается со случайной инициализации k центров кластера. Следовательно, у него есть шансы давать разные выходные данные кластера каждый раз, когда мы запускаем алгоритм. Другие алгоритмы кластеризации более последовательны.
  3. Поскольку этот алгоритм включает в себя использование средних значений всех n-мерных точек данных, попадающих в группу, для вычисления нового центра кластера, он чувствителен к выбросам.

    Эту проблему можно решить с помощью k-медиан алгоритм кластеризации, в котором мы берем медианы, а не средние значения всех n-мерных точек данных, попадающих в группу, для вычисления нового центра кластера. Этот метод нечувствителен к выбросам, поскольку здесь используются медианы. Но этот метод медленнее для больших наборов данных, поскольку сортировка также требуется на каждой итерации при вычислении n-мерного медианного вектора.
  4. Этот алгоритм обучения не инвариантен к нелинейным преобразованиям то есть с разными представлениями данных мы получаем разные результаты (данные представлены в виде декартовых координат и полярных координат даст разные результаты).

Если вы, ребята, хотите запачкать руки, вам обязательно стоит ознакомиться с Объяснение кластеризации k-средних (Часть II: Реализация Python)

Я пишу этот блог, потому что я многому научился, читая чужие блоги, и я чувствую, что должен также писать и делиться тем, что я знаю, как можно больше. Поэтому, пожалуйста, оставьте свой отзыв ниже в разделе комментариев. Кроме того, я новичок в ведении блогов, поэтому любые предложения о том, как улучшить мое письмо, будут оценены! : D