Разное

Кластеризация данных: Алгоритмы кластеризации на службе Data Mining

25.12.1983

Содержание

4 метода кластеризации данных на Python

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

Обучение без учителя (unsupervised learning, неконтролируемое обучение) – класс методов машинного обучения для поиска шаблонов в наборе данных. Данные, получаемые на вход таких алгоритмов обычно не размечены, то есть передаются только входные переменные X без соответствующих меток y. Если в контролируемом обучении (обучении с учителем, supervised learning) система пытается извлечь уроки из предыдущих примеров, то в обучении без учителя – система старается самостоятельно найти шаблоны непосредственно из приведенного примера.

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

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

  • Feature (Особенности): входная переменная, используемая для создания прогнозов.
  • Predictions (Прогнозы): выходные данные модели при наличии входного примера.
  • Example (Пример): строка набора данных. Пример обычно содержит один или несколько объектов.
  • Label (Метки): результат функции.

Для составления прогнозов воспользуемся классическим набором данных ирисов Фишера. Датасет представляет набор из 150 записей с пятью атрибутами в следующем порядке: длина чашелистика (sepal length), ширина чашелистика (sepal width), длина лепестка (petal length), ширина лепестка (petal width) и класс, соответствующий одному из трех видов: Iris Setosa, Iris Versicolor или Iris Virginica, обозначенных соответственно 0, 1, 2. Наш алгоритм должен принимать четыре свойства одного конкретного цветка и предсказывать, к какому классу (виду ириса) он принадлежит. Имеющиеся в наборе данных метки можно использовать для оценки качества предсказания.

Для решения задач кластеризации данных в этой статье мы используем Python, библиотеку scikit-learn для загрузки и обработки набора данных и matplotlib для визуализации. Ниже представлен программный код для исследования исходного набора данных.

# Импортируем библиотеки
from sklearn import datasets
import matplotlib.pyplot as plt

# Загружаем набор данных
iris_df = datasets.load_iris()

# Методы, доступные для набора данных
print(dir(iris_df))

# Признаки
print(iris_df.feature_names)

# Метки
print(iris_df.target)

# Имена меток
print(iris_df.target_names)

# Разделение набора данных
x_axis = iris_df.data[:, 0]  # Sepal Length
y_axis = iris_df.data[:, 1]  # Sepal Width

# Построение
plt.xlabel(iris_df.feature_names[0])
plt.ylabel(iris_df.feature_names[1])
plt.scatter(x_axis, y_axis, c=iris_df.target)
plt.show()

В результате запуска программы вы увидим следующие текст и изображение.

['DESCR', 'data', 'feature_names', 'target', 'target_names']
['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2
 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
 2 2]
['setosa' 'versicolor' 'virginica']

На диаграмме фиолетовым цветом обозначен вид Setosa, зеленым – Versicolor и желтым – Virginica. При построении были взяты лишь два признака. Вы можете проанализировать как разделяются классы при других комбинациях параметров.

Цель кластеризации данных состоит в том, чтобы выделить группы примеров с похожими чертами и определить соответствие примеров и кластеров. При этом исходно у нас нет примеров такого разбиения. Это аналогично тому, как если бы в приведенном наборе данных у нас не было меток, как на рисунке ниже.

Наша задача – используя все имеющиеся данные, предсказать соответствие объектов выборки их классам, сформировав таким образом кластеры.

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

Первоначально выбирается желаемое количество кластеров. Поскольку нам известно, что в нашем наборе данных есть 3 класса, установим параметр модели 

n_clusters равный трем.

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

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

# Импортируем библиотеки
from sklearn import datasets
from sklearn.cluster import KMeans

# Загружаем набор данных
iris_df = datasets.load_iris()

# Описываем модель
model = KMeans(n_clusters=3)

# Проводим моделирование
model.fit(iris_df.data)

# Предсказание на единичном примере
predicted_label = model.predict([[7.2, 3.5, 0.8, 1.6]])

# Предсказание на всем наборе данных
all_predictions = model.predict(iris_df.data)

# Выводим предсказания
print(predicted_label)
print(all_predictions)

Результат:

[1]
[1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 2 2 2 2 0 2 2 2 2
 2 2 0 0 2 2 2 2 0 2 0 2 0 2 2 0 0 2 2 2 2 2 0 2 2 2 2 0 2 2 2 0 2 2 2 0 2
 2 0]

При выводе данных нужно понимать, что алгоритм не знает ничего о нумерации классов, и числа 0, 1, 2 – это лишь номера кластеров, определенных в результате работы алгоритма. Так как исходные точки выбираются случайным образом, вывод будет несколько меняться от одного запуска к другому.

Характерной особенностью набора данных ирисов Фишера является то, что один класс (Setosa) легко отделяется от двух остальных. Это заметно и в приведенном примере.

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

Результат иерархической кластеризации может быть представлен с помощью дендрограммы. Рассмотрим этот тип кластеризации на примере данных для различных видов зерна.

# Импортируем библиотеки
from scipy.cluster.hierarchy import linkage, dendrogram
import matplotlib.pyplot as plt
import pandas as pd

# Создаем датафрейм
seeds_df = pd.read_csv(
"http://qps.ru/jNZUT")

# Исключаем информацию об образцах зерна, сохраняем для дальнейшего использования
varieties = list(seeds_df.pop('grain_variety'))

# Извлекаем измерения как массив NumPy
samples = seeds_df.values

# Реализация иерархической кластеризации при помощи функции linkage
mergings = linkage(samples, method='complete')

# Строим дендрограмму, указав параметры удобные для отображения
dendrogram(mergings,
           labels=varieties,
           leaf_rotation=90,
           leaf_font_size=6,
           )

plt.show()

Можно видеть, что в результате иерархической кластеризации данных естественным образом произошло разбиение на три кластера, обозначенных на рисунке различным цветом. При этом исходно число кластеров не задавалось.

  • Иерархическая кластеризация хуже подходит для кластеризации больших объемов данных в сравнении с методом k-средних. Это объясняется тем, что временная сложность алгоритма линейна для метода k-средних (O(n)) и квадратична для метода иерархической кластеризации (O(n2))
  • В кластеризации при помощи метода k-средних алгоритм начинает построение с произвольного выбора начальных точек, поэтому, результаты, генерируемые при многократном запуске алгоритма, могут отличаться. В то же время в случае иерархической кластеризации результаты воспроизводимы.
  • Из центроидной геометрии построения метода k-средних следует, что метод хорошо работает, когда форма кластеров является гиперсферической (например, круг в 2D или сфера в 3D).
  • Метод k-средних более чувствителен к зашумленным данным, чем иерархический метод.

Метод t-SNE (t-distributed stochastic neighbor embedding) представляет собой один из методов обучения без учителя, используемых для визуализации, например, отображения пространства высокой размерности в двух- или трехмерное пространство. t-SNE расшифровывается как распределенное стохастическое соседнее вложение.

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

Вернемся к примеру с ирисами и посмотрим, как произвести моделирование по этому методу при помощи библиотеки sklearn.

# Импорт библиотек
from sklearn import datasets
from sklearn.manifold import TSNE
import matplotlib.pyplot as plt

# Загрузка датасета
iris_df = datasets.load_iris()

# Определяем модель и скорость обучения
model = TSNE(learning_rate=100)

# Обучаем модель
transformed = model.fit_transform(iris_df.data)

# Представляем результат в двумерных координатах
x_axis = transformed[:, 0]
y_axis = transformed[:, 1]

plt.scatter(x_axis, y_axis, c=iris_df.target)
plt.show()

В этом случае каждый экземпляр представлен четырьмя координатами – таким образом, при отображении признаков на плоскость размерность пространства понижается с четырех до двух.

DBSCAN (Density-Based Spatial Clustering of Applications with Noise, плотностной алгоритм пространственной кластеризации с присутствием шума) – популярный алгоритм кластеризации, используемый в анализе данных в качестве одной из замен метода k-средних.

Метод не требует предварительных предположений о числе кластеров, но нужно настроить два других параметра: eps и min_samples. Данные параметры – это соответственно максимальное расстояние между соседними точками и минимальное число точек в окрестности (количество соседей), когда можно говорить, что эти экземпляры данных образуют один кластер. В scikit-learn есть соответствующие значения параметров по умолчанию, но, как правило, их приходится настраивать самостоятельно.

# Импортируем библиотеки
from sklearn.datasets import load_iris
import matplotlib.pyplot as plt
from sklearn.cluster import DBSCAN
from sklearn.decomposition import PCA

# Загружаем датасет
iris = load_iris()

# Определяем модель
dbscan = DBSCAN()

# Обучаем
dbscan.fit(iris.data)

# Уменьшаем размерность при помощи метода главных компонент
pca = PCA(n_components=2).fit(iris.data)
pca_2d = pca.transform(iris.data)

# Строим в соответствии с тремя классами
for i in range(0, pca_2d.shape[0]):
    if dbscan.labels_[i] == 0:
        c1 = plt.scatter(pca_2d[i, 0], pca_2d[i, 1], c='r', marker='+')
    elif dbscan.labels_[i] == 1:
        c2 = plt.scatter(pca_2d[i, 0], pca_2d[i, 1], c='g', marker='o')
    elif dbscan.labels_[i] == -1:
        c3 = plt.scatter(pca_2d[i, 0], pca_2d[i, 1], c='b', marker='*')

plt.legend([c1, c2, c3], ['Кластер 1', 'Кластер 2', 'Шум'])
plt.title('DBSCAN нашел 2 кластера и шум')
plt.show()

Об устройстве алгоритма простыми словами и о математической подноготной можно прочитать в этой статье.

Источник

Кластеризация | BaseGroup Labs

Кластеризация, которую иногда называют «сегментацией», подразумевает выделение из исходного множества данных групп объектов со схожими свойствами и часто выступает первым шагом при анализе данных. Разбиение на группы позволяет упростить работу с данными, после кластеризации применяются другие методы, для каждой группы строится отдельная модель.

Примеры применения

Сегментация и построение профилей клиентов. С помощью кластеризации можно выделить сегменты с группами «похожих» объектов. Данный алгоритм дает возможность выделить характерные признаки и персональные предпочтения клиентов, оценить наиболее и наименее доходные или активные сегменты. Это позволяет решить задачи разработки маркетинговых акций, направленных на определенные сегменты клиентов, повышает эффективность работы с ними.

Выявление целевой аудитории – наиболее ценной, перспективной, влиятельной группы потребителей, на которую, в первую очередь, будет направлена маркетинговая стратегия. Позволяет решить задачи разработки рекламного сообщения и подбора медиаканалов для его размещения, позиционирования, выбора товарного ассортимента и каналов дистрибуции… Концентрация усилий на целевой аудитории обеспечит максимизацию прибыли в сегменте.

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

Анализ миграции клиентов – перемещение клиентов между поставщиками товаров и услуг, причиной которой является изменение их запросов со временем. Рассматриваемые алгоритмы позволяют прогнозировать миграцию клиентов, визуализировать ее, оценить изменение их ценности для компании, определить причину миграции. В результате происходит укрепление отношений с ценными клиентами и противодействие оттоку.

Описание алгоритма

В Deductor Studio подобный класс задач реализуется посредством алгоритма k-means и его разновидности g-means.

К наиболее простым и эффективным алгоритмам кластеризации относится k-means. Он состоит из четырех шагов.

  1. Задается число кластеров k, которое должно быть сформировано из объектов исходной выборки.
  2. Случайным образом выбирается k записей, которые будут служить начальными центрами кластеров. Начальные точки, из которых потом вырастает кластер, часто называют «семенами». Каждая такая запись представляет собой своего рода «эмбрион» кластера, состоящий только из одного элемента.
  3. Для каждой записи исходной выборки определяется ближайший к ней центр кластера.
  4. Производится вычисление центроидов — центров тяжести кластеров. Это делается путем определения среднего для значения каждого признака всех записей в кластере. Затем старые центры кластеров смещаются в его центроид. Таким образом, центроиды становятся новыми центрами кластеров для следующей итерации алгоритма.

Остановка алгоритма производится, когда границы кластеров и расположение центроидов перестает изменяться, то есть на каждой итерации в каждом кластере остается один и тот же набор записей. Алгоритм k-means обычно находит набор стабильных кластеров за несколько десятков итераций.

Одним из недостатков k-means является отсутствие ясного критерия для выбора оптимального числа кластеров. Чтобы решить данную проблему, было разработано большое количество алгоритмов, в том числе алгоритм g-means, позволяющий производить автоматический выбор оптимального числа кластеров на основании гауссовского (нормального) закона распределения, откуда и название алгоритма.

Подробную информацию о методах кластеризации можно получить в статье «Алгоритмы кластеризации на службе Data Mining».

Как работает многомерная кластеризация—ArcGIS Pro

Когда мы смотрим на мир вокруг нас, мы автоматически организуем, группируем, дифференцируем и классифицируем то, что видим, чтобы лучше понять окружающие нас объекты. Такой тип ментальной классификации необходим для обучения и понимания. Аналогично для лучшего изучения данных можно использовать инструмент Многомерная кластеризация. Используя число создаваемых кластеров, инструмент ищет решение, в котором все объекты в каждом кластере максимально похожи, а сами группы максимально отличаются друг от друга. Сходство объектов основано на наборе атрибутов, указываемых для параметра Поля анализа, а кластеры создаются методом k-средних.

Подсказка:

Кластеризация, группировка и классификация — одни из самых часто используемых.методов машинного обучения. Инструмент Многомерная классификация использует методы обработки «без обучения» для нахождения естественных кластеров ваших данных. Эти методы классификации называются классификацией «без обучения», так как не требуют набора классифицированных заранее объектов для «тренировки» алгоритма в целях дальнейшего поиска кластеров в ваших данных.

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

При этом не только нельзя найти оптимальное решение, но также нельзя определить алгоритм группировки, который будет работать лучше всего для всех возможных типов данных и сценариев. Кластеры бывают разных форм, размеров и плотностей. Атрибуты могут содержать данные с различными диапазонами, симметрией, непрерывностью и единицами измерений. Это объясняет, почему за последние 50 лет было разработано столько разных алгоритмов кластеризации. Эти инструменты следует рассматривать как исследовательский инструмент, позволяющий узнать больше о структурах в ваших данных.

Возможное применение

Некоторые способы использования этого инструмента перечислены ниже:

  • Предположим, что у вас есть образцы сальмонеллы из ферм в вашей области. К атрибутам относятся тип/класс, расположение, а также дата и время. Чтобы лучше понять, как бактерии передаются и распространяются, можно использовать инструмент Многомерная кластеризация, чтобы разбить образцы на отдельные «вспышки». Хотя сам по себе анализ не является пространственным, по мере распространения эпидемия вы можете обнаружить в ваших результатах и пространственные закономерности. После определения кластеров можно использовать другие инструменты анализа пространственных шаблонов, такие как Эллипс стандартных отклонений, Усредненный центр или Ближайший объект для анализа каждой вспышки.
  • Если вы собрали данные о наблюдении животных, чтобы лучше понять территорию их обитания, то и здесь инструмент Многомерная кластеризация может оказаться полезным. Знания о том, где и когда собираются стаи лосося, например, могут помочь в проектировании защищенных областей для обеспечения успешного нереста.
  • Группируя клиентов на основе покупательских предпочтений, демографических характеристик, закономерностей перемещения или других поведенческих атрибутов, можно создать эффективную маркетинговую стратегию для продукции вашей компании.

Входные данные

Инструмент берет точечные, линейные или полигональные Входные объекты, путь к Выходным объектам, одно или несколько Полей анализа и целочисленное значение создаваемого Числа кластеров. Имеется также несколько дополнительных параметров, в том числе Метод инициализации и Выходная таблица оценки оптимального количества кластеров.

Поля анализа

Выберите числовые поля, которые отражают относительные, интервальные или порядковые системы измерений. Хотя номинальные данные могут быть представлены с помощью бинарных переменных, это обычно не работает, как и другие числовые типы переменных. Например, можно создать переменную Rural и назначить каждому объекту (например, каждому смежному кварталу переписи) значение 1, если это сельский объект, или значение 0, если это городской объект. Хороший пример использования этой переменной – это количество или доля площади сельскохозяйственных земель, связанная с каждым объектом.

Значения Полей анализа стандартизированы инструментом, так как переменные с большими диапазонами значений (в которых данные сильно растянуты относительно среднего) будут иметь большее влияние на кластеры, чем переменные с небольшими диапазонами значений. Стандартизация значений атрибутов включает z-трансформацию, где средняя величина всех значений вычитается из каждого значения и делится на стандартное отклонение, вычисленное для всех значений. Стандартизация помещает все эти атрибуты на одни весы, даже когда они представлены совершенно разными типами чисел: коэффициентами (от 0 до 1,0), численностью население (значение свыше 1 миллиона) и расстояниями (например, километрами).

Необходимо выбрать переменные, которые, по вашему мнению, будут отличать один кластер объектов от другого. Предположим, вы хотите сгруппировать школьные округа по успеваемости учеников в стандартных тестах. Вы можете выбрать поля анализа, такие как общие оценки по тестам, результаты для каждого предмета, например математика или литература, процент учеников, получивших минимальную оценку по тесту, и т. д. При запуске вами инструмента Многомерная кластеризация для каждой переменной вычисляется значение R2 и передается в окно сообщений. В сводных данных ниже, школьные округа сгруппированы на основе баллов учеников, набранных при тестировании, процента взрослых, которые не окончили среднюю школу, затрат на каждого ученика и среднего соотношение числа учеников и учителей. Обратите внимание, что у переменной TestScores самое большое значение R2. Это означает, что данная переменная наиболее эффективно разделяет школьные округа на кластеры. Значение R2 отражает, в какой степени вариация в исходных данных TestScores была сохранена в процессе группировки. Чем больше R2 для конкретной переменной, тем лучше переменная различает ваши объекты.

Более подробно:

R2 вычисляется следующим образом:

(TSS – ESS) / TSS

Где TSS – общая сумма квадратов, а ESS – объясненная сумма квадратов. TSS вычисляется за счет возведения в квадрат и суммирования отклонений от глобального среднего значения для переменной. ESS вычисляется одинаково, только отклонения применяются по группам: каждое значение вычитается из среднего значения для группы, которой оно принадлежит, а затем возводится в квадрат и суммируется.

Число кластеров

Иногда вы можете знать наиболее подходящее для ответа на ваш вопрос и проблему и можете ввести значение параметра Число кластеров. Но во многих случаях критерий для выбора точного числа кластеров не доступен. Вместо этого вам нужно получить число, которое лучше всего позволяет классифицировать сходства и различия объектов. В этой ситуации можно установить отметку Число кластеров и позволить инструменту Многомерная кластеризация оценить эффективность деления объектов на 2, 3, 4 и до 30 групп. Эффективность группировки измеряется с помощью псевдо-F-статистики Калински-Харабаза, которая является отношением вариации между кластерами к вариации внутри кластера: Другими словами, то отношение схожести объектов внутри группы к различию объектов между группами:

Метод кластеризации

Инструмент Многомерная кластеризация использует алгоритм K-средних по умолчанию. Цель этого алгоритма – разделить объекты так, чтобы различия между объектами внутри кластера были минимальными для всех кластеров. Так как алгоритм является NP-трудным, для группировки объектов используется «жадная эвристика». «Жадный» алгоритм всегда сводится к локальному минимуму, но не всегда находит глобальный (оптимальный) минимум.

Алгоритм K-средних сначала определяет источники, которые используются для формирования каждого кластера. Соответственно число начальных объектов всегда равно Числу кластеров. Первый начальный объект выбирается произвольно. При выборе оставшихся начальных значений (хотя случайный компонент также используется) применяется взвешивание, которое отдает предпочтение объектам, наиболее отдаленным от существующего набора начальных объектов (эта часть алгоритма называется K-средних ++). Из-за применения случайного компонента при поиске исходных объектов при выборе опции Оптимизированные расположения начальных объектов или Случайные расположения начальных объектов для параметра Метод инициализации могут возникать различные результаты кластеризации при нескольких запусках инструмента.

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

Подобно алгоритму K-средних К-медоиды определяют исходные объекты, вокруг которых и формируются кластеры. Каждый исходный объект – существующий объект во Входных объектах. Эти исходные объекты называются – медоиды. Остальные объекты назначаются ближайшему медоиду (ближайшему в пространстве данных). Таким образом выполняется начальная кластеризация. Вычисляется сумма расстояний (в пространстве данных) между медоидами и объектами – не медоидами. Для рамках вычисления внутри каждого кластера медоид меняется местами с каждым объектом – не медоидом, и замет рассчитывается сумма расстояний (в пространстве данных) между каждым медоидом и не медоидом. Если при замене сумма расстояний увеличивается, замена отменяется, в противном случае замененный объект становится новым медоидом. Процесс поиска нового медоида и переназначения объектов ближайшему медоиду выполняется до тех пор, пока участники кластеров не будут определены окончательно.

K-средние и K-медоиды – два алгоритма вычисления кластеризации, которые, в общем, выдают схожие результаты. Но метод К-медоидов более чувствителен к шуму и выбросам у Входных объектов. Алгоритм K-средних, как правило, выполняется быстрее K-медоидов и применяется для больших наборов данных.

Выходные данные

Число выходных объектов, создаваемых инструментом Многомерная кластеризация. Сообщения можно просмотреть на панели Геообработка, поместив курсор на индикатор прогресса, щелкнув кнопку индикатора прогресса инструмента либо развернув раздел сообщений в нижней части панели Геообработка. Вы можете получить доступ к сообщениям для выполненного ранее инструмента Многомерная кластеризация из панели История геообработки.

Результатом работы инструмента Многомерная кластеризация по умолчанию является новый выходной класс объектов, содержащий поля, используемые в анализе, а также новое целочисленное поле CLUSTER_ID, содержащее информацию о том, какому кластеру каждый объект принадлежит. Этот выходной класс объектов добавляется в таблицу содержания с уникальной цветовой схемой отображения, которая применяется к полю CLUSTER_ID. Поле IS_SEED показывает, какие объекты использовались как начальные точки для наращивания кластеров.

Пример результата выполнения инструмента Многомерная кластеризация

Выходные данные диаграммы инструмента Многомерная кластеризация

Для суммирования созданных кластеров создается несколько типов диаграмм. Ящичковые диаграммы применяются для показа информации как о каждом из кластеров, так и о каждой переменной анализа. Ниже показано изображение, которое поможет вам анализировать ящичковые диаграммы и их суммарные значения для каждого Поля анализа и созданного кластера: минимальное значение данных, 1й квартиль, глобальная срединное значение, 3й квартиль, максимальное значение данных, и выбросы в данных (значения, меньшие или большие умноженного на 1.5 значения межквартильного размаха). Остановите курсор на ящичковой диаграмме, чтобы увидеть эти значения, а также значение межквартильного размаха. Все отметки, не попадающие в верхний или нижний ящичек (не находящиеся между минимумом и максимумом), представляют собой выбросы в данных.

Более подробно:

Межквартильный размах (IQR) – разность между 3м и 1м квартилем. Нижние выбросы – это значения меньше 1,5*IQR (Q1-1,5*IQR), а верхние выбросы – это значения больше 1,5*IQR (Q3+1,5*IQR). Выбросы отображаются на ящичковых диаграммах как символы точек.

В параллельной ящичковой диаграмме представлена сводка по кластерам и переменным в них. К примеру, инструмент Многомерная кластеризация был запущен на переписных участках для создания четырех кластеров. На показанном ниже изображении кластер 2 (красный) соответствует участкам с арендной платой выше среднего, в сравнении с другими кластерами, высочайшими значениями домовладений женщин с детьми (FHH_CHILD), высочайшими значениями количества жилых помещений (HSE_UNITS) и самыми высокими значениями количества детей возрастом до 5 лет. Кластер 4 (золотисто-желтый) соответствует участкам с высокими средними значениями арендной платы, достаточно низким числом домовладений женщин с детьми и достаточно высоким количеством жилых помещений. Кластер 3 (зеленый) соответствует участкам с самым низким числом домовладений женщин с детьми, самыми низкими значениями количества детей возрастом до 5 лет, минимальным числом жилых помещений и невысоким уровнем арендной платы (но выше, чем в кластере 1). Остановите курсор над каждым узлом средних линий, чтобы увидеть среднее значение кластера для каждого Поля анализа.

После изучения основной информации об анализе с параллельными ящичковыми диаграммами вы можете изучить ящичковые диаграммы каждого кластера для каждой переменной, выбрав Рядом на вкладке Серии панели Свойства диаграммы. В этом представлении данных легко увидеть, у какой группы наибольший и наименьший диапазон значений для каждой переменной. Для каждой переменной каждого кластера будет создана ящичковая диаграмма, и вы сможете увидеть, как связаны значения всех кластеров между собой. Поместите курсор над ящичковой диаграммой каждой переменной, чтобы увидеть минимальное, максимально и среднее значение для каждой переменной каждого кластера. На показанной ниже диаграмме вы увидите, что Кластер 4 (золотистый) характеризуется высочайшими значениями переменной MEDIANRENT и содержит участки с диапазоном значений от 354 до 813.

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

Если вы оставляете пустым параметр Число кластеров, инструмент вычислит оптимальное для ваших данных количество кластеров. Если вы укажете путь для Выходной таблицы оценки числа кластеров, будет создана диаграмма с вычисленными значениями Псевдо-F-статистики. Высочайший пик графика – это наибольшая F-статистика, указывающая наиболее эффективное число групп для различения указанных объектов и переменных. На следующем графике F-статистика, связанная с четырьмя группами, имеет наибольшее значение. Пять групп с большим значением псевдо-F-статистики также будут хорошим выбором.

График Псевдо-F-статистики для оценки оптимального числа кластеров

Рекомендации

Хотя существует тенденция для включения максимально возможного числа Полей анализа, при использовании инструмента Многомерная кластеризация лучше начать с одной переменной. Результаты намного легче интерпретировать при меньшем числе полей анализа. Также легче определить, какие переменные лучше разделяют группы при меньшем количестве полей.

Во многих ситуациях вы запустите инструмент Многомерная кластеризация несколько раз в поисках оптимального Числа кластеров, наиболее эффективного сочетания Полей анализа, которые наилучшим образом объединяют ваши объекты в кластеры.

Если инструмент возвращает число 30 в качестве оптимального числа кластеров, обратите внимание на диаграмму F-статистики. Выбор числа кластеров и интерпретация графика F-статистики — особое умение, и вполне возможно, что меньшее число кластеров больше подойдет для вашего анализа.

Дополнительные источники

Jain, A. K. 2009. «Data Clustering: 50 years beyond K-Means.» Pattern Recognition Letters.

Hinde, A., T. Whiteway, R. Ruddick, and A. D. Heap. 2007. «Морские пейзажи австралийской границы и прилегающего морского дна: Методология нажатия клавиш» in Geoscience Australia, Record 2007/10, 58pp.


Отзыв по этому разделу?

Как работает Кластеризация на основе плотности—ArcGIS Pro

Параметр инструмента Кластеризация на основе плотности Метод кластеризации предлагает три опции для поиска кластеров в точечных данных:

Этот инструмент принимает на входе Входные точечные объекты, путь к Выходным объектам и значение минимального числа объектов, которые будут считаться кластером. В зависимости от Метода кластеризации могут быть дополнительные параметры, как, например, показано ниже.

Минимальное число объектов на кластер

Этот параметр определяет минимальное количество объектов, которые могут быть сгруппированы в кластер. Например, если у вас несколько различных кластеров размером от 0 до 100 точек и вы выберете Минимальное количество объектов для кластера равным 20, все кластеры размером менее 20 будут либо считаться шумом (так как не формируются в кластер подходящего размера), либо будут слиты с соседними кластерами, чтобы минимальное количество объектов было соблюдено. Напротив, задав значение Минимального числа объектов в кластере меньше, чем предполагаемый вами размер наименьшего значимого кластера, вы можете добиться разбиения этих кластеров на меньшие. Другими словами, чем меньше Минимальное число объектов в кластере, тем больше кластеров будет обнаружено. Чем больше Минимальное число объектов в кластере, тем меньше кластеров будет обнаружено.

Подсказка:

Идеальное значение Минимального числа объектов в кластере зависит от того, чего вы пытаетесь добиться и в чем цель вашего анализа. Оно должно соответствовать минимальному размеру, который будет считаться значимым кластером. Увеличение Минимального числа объектов в кластере может привести к слиянию некоторых небольших кластеров.

Параметр Минимальное число объектов в кластере также является очень значимым для вычисления кластерного расстояния, которое применяется всеми тремя методами нахождения кластеров. Концептуально кластерное расстояние для каждой точки — это дистанция, требуемая для достижения каждой точкой заданного минимального числа объектов. Если выбрано большое значение Минимального числа объектов в кластере, соответственно, и кластерное расстояние будет большим. Если выбрано маленькое значение Минимального числа объектов в кластере, то и кластерное расстояние будет небольшим. Кластерное расстояние связано с параметром Расстояние поиска, использующимся методами Заданное расстояние (DBSCAN) и Многомасштабный (OPTICS).

Показано кластерное расстояние, т.е. Расстояние от заданного объекта, необходимое для создания кластера с минимальным числом объектом, равным 4 (включая данный объект).

Расстояние поиска (DBSCAN и OPTICS)

Для метода Заданное расстояние (DBSCAN) в случае, если Минимальное число объектов в кластере не может быть найдено в пределах Расстояния поиска от конкретной точки, такая точка помечается, как основная точка и включается в кластер вместе со всеми точками в пределах кластерного расстояния. Граничная точка — это точка, которая находится в пределах расстояния поиска от точки кластера, но сама не имеет минимального количества объектов в пределах расстояния поиска. Каждый результирующий кластер состоит из основных и граничных точек, где основные точки имеют тенденцию попадать в середину кластера, а граничные точки на внешнюю часть. Если точка не имеет минимального количества объектов в пределах расстояния поиска и не находится в пределах расстояния поиска другой основной точки (другими словами, это не основная точка и не граничная точка), она помечается как точка шума и не входит ни в один кластер.

Показана кластеризация минимум четырех объектов на кластер. У основной точки есть четыре соседа в пределах расстояния поиска (включая себя). Граничная точка имеет только три объекта в пределах расстояния поиска, но она является соседом основной точки, поэтому она включена в кластер. У точки шума нет четырех объектов в пределах расстояния поиска, и она не является соседом основной точки, поэтому не включается в кластер.

Для метода Мультимасштабный (OPTICS) значение Расстояние поиска, рассматривается, как максимальное расстояние, сравниваемое с кластерным расстоянием. Метод Мультимасштабный (OPTICS) использует концепцию максимально достижимого расстояния, являющегося расстоянием от точки до ее ближайшего соседа, еще не появлявшегося в поиске. (Помните: OPTICS i — упорядоченный алгоритм, начинающий работу с объекта с минимальным ID и переходит от этой точки к следующей точке для создания графика. Порядок точек влияет на результаты его работы.) Метод Многомасштабный (OPTICS) будет проверять все соседние расстояния в пределах заданного Расстояния поиска, сравнивая каждое из них с кластерным расстоянием. Если какое-то расстояние окажется меньше кластерного, то объекту присваивается это кластерное расстояние в качестве достижимого. Если все расстояния оказываются большими, чем кластерное расстояние, наименьшее из них считается достижимым. Когда в пределах расстояния поиска больше нет точек, процесс перезапускается с новой точки, которая ранее не появлялась в поиске. В каждой итерации пересчитываются и сортируются расстояния достижимости. Наименьшее из расстояний используется для определения конечного расстояния достижимости каждой точки. Эти расстояния достижимости затем используются для создания графика достижимости, являющегося упорядоченным графиком расстояний достижимости, который применим для определения кластеров.

Если были проверены все объекты, находящиеся в пределах кластерного расстояния, объекту присваивается Расстояние достижимости, равное наименьшему расстоянию между выбранным объектом и другими объектами в пределах допуска Расстояние поиска.

Для обоих методов, Заданное расстояние (DBSCAN) и Мультимасштабный (OPTICS), по умолчанию Расстоянием поиска является наибольшее значение кластерного расстояния, найденное в наборе данных, исключая те, которые попадают в верхние 1% (т.е., исключая наивысшие значения кластерного расстояния).

Кластеризация в пространстве и времени (DBSCAN и OPTICS)

В двух методах кластеризации время каждой точки может быть указано в параметре Поле времени. Если задано, то инструмент будет искать кластеры точек, которые находятся близко друг к другу в пространстве и времени. Параметр Интервал времени поиска аналогичен расстоянию поиска и используется для определения основных точек, граничных точек и точек шума пространственно-временных кластеров.

Для метода Заданное расстояние (DBSCAN), при поиске участников кластера, Минимальное число объектов на кластер должно быть найдено в значениях Расстояние поиска и Интервал времени поиска, чтобы быть центральной точкой пространственно-временного кластера.

На следующем изображении расстояние поиска составляет 1 милю, интервал времени поиска 3 дня, а минимальное количество объектов 4. Точка P является основной, потому что есть четыре точки в пределах расстояния поиска и временного интервала (включая саму себя). Точка Q является граничной, потому что есть только три точки в пределах расстояния поиска и временного интервала, но эта точка находится в пределах расстояния поиска и временного интервала от основной точки кластера (точка с отметкой времени 1/5/2021). Точки C и D являются точками шума, потому что они не являются ни основными, ни граничными точками кластера, а все другие точки (включая P и Q) образуют единый кластер.

Для метода Мультимасштабный (OPTICS) все точки за пределами Интервала времени поиска будут исключены, при этом для точки вычисляется ее кластерное расстояние, ищутся все расстояния до соседей в рамках указанного значения Расстояние поиска и вычисляется расстояние достижимости.

На следующем изображении расстояние поиска составляет 2 мили, интервал времени поиска 3 дня, а минимальное количество объектов 4. Кластерное расстояние для точки P вычисляется с пропуском точки q3, поскольку она находится за пределами интервала времени поиска. В этом случае кластерное расстояние для P равно расстоянию достижимости для P.

На следующем изображении показано вычисление расстояния достижимости, когда некоторые соседние точки уже были просмотрены. Точки q1, q2 и q4 были пропущены, потому что они были ранее просмотрены, а точки q3 и q5 были пропущены, потому что они находятся за пределами окна временного поиска.

График достижимости (OPTICS)

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

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

Расстояния достижимости от пиков и впадин на графике достижимости. Когда между точками большие расстояния, в графике достижимости образуются пики.

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

Чувствительность кластера

Параметр Чувствительность кластера определяют, как форма пиков (и уклон, и высота) на графике достижимости будет использоваться для разделения кластеров. Очень высокое значение Чувствительности кластера (близкое к 100) приведет к рассмотрению даже минимального пика в качестве разделения между кластерами, в результате чего будет получено очень большое их количество. Очень низкая Чувствительность кластера (близкое к 0) будет рассматривать в качестве границ для кластеров только наиболее крутые и высокие пики, что приводит к меньшему количеству кластеров.

Низкая Чувствительность кластера против Высокой Чувствительности кластера

По умолчанию Чувствительность кластера вычисляется, как допуск, при котором при добавлении новых кластеров не появляется дополнительной информации, вычисляется, как Дивергенция Кулбака-Лейблера между исходным графиком достижимости и сглаженным графиком достижимости, полученным после кластеризации.

Python алгоритмы: Кластеризация данных

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

На первом шаге случайно размещены два центроида (изображены темными кружками). На втором шаге каждый элемент приписан к ближайшему центроиду. В данном случае A и B приписаны к верхнему центроиду, а C, D и E – к нижнему. На третьем шаге каждый центроид перемещен в точку, рассчитанную как среднее по всем приписанным к нему элементам. После пересчета назначений оказалось, что C теперь ближе к верхнему центроиду, а D и E – по-прежнему ближе к нижнему. Окончательный результат достигается, когда A, B и C помещены в один кластер, а D и E – в другой.


В данном методе, ОЧЕНЬ важен выбор центроидов, т.к. в конечном итоге все точки к ним стянутся, но если все 4 будут очень близкие цвета и из них будут состоять большие области, то в конечном итоге вы и получите приблизительно одинаковые центры. Таким образом центроиды должны быть максимально разнесены (желательно равномерно и равноудаленно).

Для большего понимания приведу пример. Давайте рассмотрим такую картинку.


Чтобы решить поставленную задачу в такой, монотонной четко разделенной картинке, достаточно написать небольшой код:
def k_cluster_by_area(points, k=4):

 clusters_by_area = {}

 for point in points:
  clusters_by_area[point] = clusters_by_area.setdefault(point, 0) + 1

 sorted_x = sorted(clusters_by_area.items(), key=operator.itemgetter(1))

 return sorted_x[-k:]

Тут мы просто посчитали, сколько раз, какой цвет встречается, отсортировали и вывели k результатов. Этот метод можно применить к любому изображению, работает достаточно быстро, но есть НО! А именно, мы не получим ТОНАЛЬНОСТЬ картинки! Однако, как я писал выше, в нашей задаче важны центры, вот эту задачу и решает этот код!) Мы берем самые популярные цвета, за изначальные центры кластеров, а потом они постепенно мутируют) На самом деле, желательно брать не просто первые k, а посчитать все комбанации расстояний и выбрать k по макс расстояниям, чтобы центры не оказались рядом (например 2 оттенка серого). Но мне влом и вы сделаете это сами)

Надеюсь, стало яснее. Таким образом, как найти изначальные центры кластеров нам известно, осталось только свести все пиксели в эти точки.  А теперь сам код: 

def k_cluster(img, distance=euclidean, k=4):
 
 points = get_points(img)
 clusters = {}

 # центры кластеры
 cluster_centers = k_cluster_by_area(points, k)
 for cluster_center in cluster_centers:
  # avg_sum_coords - список сумм r, g, b координат всех пикселей кластера
  # count_points - кол-во пикселей в кластере
  # какие конкретно пиксели в кластере не запоминаем в целях экономии памяти и времени
  clusters[cluster_center] = {'avg_sum_coords':list(cluster_center), 'count_points':1}

 while len(points):

  # находим ближайшие точки к центрам кластеров
  bestmatches = {}
  for point in points:

   # расстояние каждой точки до каждого центра кластера
   for cluster_center in clusters:
    d = distance(cluster_center, point)
    if not bestmatches:
     bestmatches = {'distance':d, 'point': point, 'cluster_center': cluster_center}

    if d < bestmatches['distance']:
     bestmatches = {'distance': d, 'point': point, 'cluster_center': cluster_center}

  # перекидываем ближайшие точки в соответствующий кластер
  bestmatch = bestmatches['point']
  cluster_center = bestmatches['cluster_center']
  points2 = []
  new_points = []

  for point in points:
   if point == bestmatch:
    new_points.append(point)
   else:
    points2.append(point)


  points = points2[:]

  # меняем центр кластера
  print clusters.keys(), len(points)

  r_avg, g_avg, b_avg = 0, 0, 0
  cluster_avg_coord = clusters[cluster_center]['avg_sum_coords']

  new_points_len = len(new_points)
  clusters[cluster_center]['count_points'] += new_points_len
  claster_count_points = clusters[cluster_center]['count_points']

  cluster_avg_coord[0] += bestmatch[0]*new_points_len
  cluster_avg_coord[1] += bestmatch[1]*new_points_len
  cluster_avg_coord[2] += bestmatch[2]*new_points_len


  new_center = cluster_avg_coord[0]/claster_count_points, cluster_avg_coord[1]/claster_count_points, cluster_avg_coord[2]/claster_count_points
  
  # если новый центр кластера отличается от предыдущего
  if not new_center in clusters:
   clusters[new_center] = clusters.pop(cluster_center)

 return clusters.keys()

Работает это дело не быстро ;(, поэтому я советую сжимать картинку, хотя бы до разрешения 100 на 100.
Понятно, что идея не нова и сравнить вы можете, например с данным сайтом http://design-seeds.com
Давайте разберем пример. С указанного выше сайта взяли картинку и их разбиение на цвета. Здесь можно заметить, что их задача — это выбрать основные центровые цвета, что немного отличается от нашей задачи, но все же.
Пример с сайта
Сначала посмотрим на наш метод выбора первоначальных центров, исходя из предположения простого количественного показателя использования цветов. Изначальные центры ниже подписано, сколько раз цвет встречался на картинке.
7 раз
4 раза
4 раза

4 раза
5 раз

Кластеризация (кластерный анализ): что это такое

Кластеризация — это разбиение множества объектов на подмножества (кластеры) по заданному критерию. Каждый кластер включает максимально схожие между собой объекты. Представим переезд: нужно разложить по коробкам вещи по категориям (кластерам) — например одежда, посуда, декор, канцелярия, книги. Так удобнее перевозить и раскладывать предметы в новом жилье. Процесс сбора вещей по коробкам и будет кластеризацией.

Критерии кластеризации определяет человек, а не алгоритм, — этим она отличается от классификации. Этот метод машинного обучения (Machine Learning) часто применяют в различных неструктурированных данных — например если нужно автоматически разбить коллекцию изображений на мини-группы по цветам.

Визуализация кластеризации

Кластерный анализ применяют в разных сферах:

  • в маркетинге — для сегментирования клиентов, конкурентов, исследования рынка;
  • медицине — для кластеризации симптомов, заболеваний, препаратов;
  • биологии — для классификации животных и растений;
  • социологии — для разбиения респондентов на однородные группы;
  • компьютерных науках — для группировки результатов при поиске сайтов, файлов и других объектов.

Объект описывается при помощи набора характеристик. Признаки бывают числовые и категориальные. Например, можно кластеризовать группу покупателей на основе их покупок в интернет-магазине. В качестве входных данных будут средний чек, возраст, количество покупок в месяц, любимая категория покупок и другие критерии.

Это симметричная таблица, где по строкам и столбцам расположены объекты, а на пересечении — расстояние между ними: например, таблица с расстояниями между отелями в разных городах. Такой способ может помочь выделить кластеры отелей, которые сгруппированы в одной и той же локации.

Курс 

Machine Learning

Освойте самую востребованную технологию искусственного интеллекта. Дополнительная скидка 5% по промокоду BLOG.

Узнать больше

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

Разбиение объектов на кластеры позволяет добавить дополнительный признак каждому объекту. Так, если в результате кластерного анализа выявилось, что определенный покупатель относится к первому кластеру, и мы знаем, что первый кластер — это кластер людей, которые тратят большое количество денег на покупки по средам, то можно сказать, что это покупатель приобретает продукты в основном по средам.

В этом случае выделяют нетипичные объекты, не подходящие ни к одному сформированному кластеру. Интересны отдельные объекты, которые не вписываются ни в одну из сформированных групп.

Общепринятой классификации методов нет, но есть несколько групп подходов.

1. Вероятностный подход. В рамках него предполагается, что каждый из объектов относится к одному из классов.

  • EM-алгоритм применяется для нахождения оценок максимального правдоподобия параметров вероятностных моделей (если есть зависимость от скрытых переменных).
  • K-средних — алгоритм минимизирует суммарное квадратичное отклонение точек кластеров от их центров.
  • Алгоритмы семейства FOREL основаны на идее объединения объектов в один кластер в областях их максимальной концентрации.

2. Подходы с учетом систем искусственного интеллекта. Большая условная группа методов, разнится с методической точки зрения.

  • Метод нечеткой кластеризации C-средних предполагает разбиение имеющегося множества элементов на определенное число нечетких множеств. Метод является усовершенствованным вариантом К-средних.
  • Нейронная сеть Кохонена — класс нейронных сетей со слоем Кохонена, состоящим из линейных формальных нейронов.
  • Генетический алгоритм — алгоритм поиска, применяемый для решения задач оптимизации и моделирования с помощью случайного подбора, вариации и комбинирования искомых параметров. Используются механизмы, аналогичные естественному отбору в природе.

4. Иерархический подход. Предполагает наличие вложенных групп — кластеров разного порядка. Выделяются агломеративные и дивизионные (объединительные и разделяющие) алгоритмы. В зависимости от количества признаков могут выделяться политетические (используют при сравнении нескольких признаков одновременно) и монотетические (используют при применении одного признака) методы классификации.

В кластеризации имеют дело с множеством объектов (X) и множеством номеров кластеров (Y). Задана функция расстояния между объектами (p). Нужно разбить обучающую выборку на кластеры, так чтобы каждый кластер состоял из объектов, близких по метрике p, а объекты разных кластеров существенно отличались. При этом каждому объекту приписывается номер кластера y(i).

Алгоритм кластеризации — это функция, которая любому объекту X ставит в соответствие номер кластера Y.

Курс

Data Science с нуля

Вы получите достаточную математическую подготовку и опыт программирования на Python, чтобы решать задачи машинного обучения.

  • 8 проектов в портфолио;
  • соревнования на Kaggle;
  • помощь в трудоустройстве.

Узнать больше

Промокод BLOG +5% скидки

Группировка пользователей методами кластеризации данных

Время прочтения: 6 мин.

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

Возьмем для примера данные пользователей, которые заходили на сайт компании и кликали на ссылки. При помощи подходящего link tracker посчитаем количество кликов по тем или иным элементам сайта за определенное время от каждого зарегистрированного пользователя, просуммируем, например, по неделям и пронормируем на среднее. Для примера рассмотрим сгенерированный датасет.

Начнем с генерации сета, имитирующего поведение трех групп пользователей, кликающих по 5 ссылкам с 1000 разных аккаунтов. Для этого воспользуемся методом make_blobs из пакета sklearn.

from sklearn.datasets import make_blobs
import numpy as np

data, pregenerated= make_blobs(1000,n_features=5,cluster_std=4)

В массив data будут записаны пять фич, каждая из которых является суммой трех гауссиан с центрами в трех разных точках, которые и являются кластерами. Имена этих заранее известных кластеров записаны в переменной  pregenerated. Построим фичи друг относительно друга:

from pandas.plotting import scatter_matrix
import pandas as pd

scatter_matrix(pd.DataFrame(data), alpha=0.2, figsize=(6, 6), )
pd.Series(pregenerated).value_counts()

Видно, что по фичам ничего невозможно понять — даже сколько там кластеров. Это весьма похоже на реальные данные. Преобразуем массив данных в датасет и назовем фичи так, как будто это и есть реальные данные.

result_df = pd.DataFrame(data)
result_df.columns = ["каталог","доставка","о нас","реклама","адреса"]
result_df["группа"] = pregenerated
result_df.head() 

Далее понаблюдаем, как даже самый базовый метод кластеризации легко справляется с задачей группировки данных. Прогоним полученный датасет через популярную модель для кластеризации — k-means. Ее главный минус в том, что нужно знать заранее количество кластеров. Обычно это решается либо эмпирически, либо моделями способными на поиск количества кластеров, таких как DBSCAN. У нас же количество кластеров известно заранее.

from sklearn.cluster import KMeans

kmeans = KMeans(n_clusters=3).fit(data)

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

result_df["предсказанные"] = kmeans.labels_
print(result_df["группа"].value_counts())
print(result_df["предсказанные"].value_counts())
result_df.head()

0    334

2    333

1    333

Name: группа, dtype: int64

0    341

1    333

2    326

Name: предсказанные, dtype: int64

Поскольку мы заранее знали к какому кластеру принадлежит тот или иной пользователь — мы ведь их сами создавали — есть возможность проверить насколько хорошо справился k-means со своей задачей. В соответствии с вышеприведенной частью датасета переназначим найденные алгоритмом кластеры и сравним их с сгенерированными:

temp = result_df["предсказанные"].map({2:0,0:1,1:2}) - result_df["группа"]
temp.value_counts(normalize=True)

0    0.971

-1    0.018

 1    0.011

dtype: float64

Впечатляющее качество распознавания! К сожалению, в реальных данных этой информации как правило нет, а если есть, то это уже supervised learning и изначально нужно было решать задачу классификации, а не кластеризации. Проблему сложности восприятия табличных данных о кластерах принято решать графически при помощи dimensional reduction, что позволяет все фичи ужать до двух, x и y, и построить их на графике. Существует много алгоритмов dr, мы покажем один из самых популярных из-за своей красоты t-sne.

from matplotlib import pyplot as plt
from sklearn.manifold import TSNE

tsne_df = TSNE(n_components=2,perplexity=20).fit_transform(data)
result_df["tsneX"] = tsne_df[:,0]
result_df["tsneY"] = tsne_df[:,1]

plt.scatter(result_df["tsneX"], result_df["tsneY"],s=2,)
plt.savefig("blobs_gray.jpg",dpi=1200,transparent=True)

Как мы видим, пять фич сжались до двух, чтобы уместиться на плоскости. Кроме того, точки разделились на несколько различимых взглядом агломератов. Для проверки выделим точки справа по координатам и посмотрим какие из изначально созданных групп пользователей в него входят.

result_df[(result_df['tsneX']>15) & (result_df['tsneY']<5)]["группа"].value_counts()

0    325

1     19

Name: группа, dtype: int64

Действительно, соответствует сгенерированному кластеру с кодом 0.

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

def colorer(row,column):
	if row[column] == 1:
    	return "Green"
	if row[column] == 2:
    	return "Brown"    
	return "Magenta"

result_df["цвет"] = result_df.apply(colorer,axis = 1,column = "группа")
plt.scatter(result_df["tsneX"], result_df["tsneY"],s=2,c=list(result_df['цвет']))
plt.savefig("blobs_colored.jpg",dpi=1200,transparent=True)

Метод t-sne сумел отделить фиолетовый кластер от двух других. В реальной ситуации в качестве цвета обычно выступает собранная помимо статистики переходов по ссылкам эвристика, например user agent их браузера, или их участие/неучастие в опросе, или проведенное на странице время. Бывает так, что кластеры видны плохо и выводы делать трудно. Для визуального определения помимо цвета можно использовать размер точек, делая более важные точки больше. При анализе поведения пользователей одной из самых важных для визуализации фич является активность.

Для примера сгенерируем ее при помощи случайных чисел, зависящих от номера кластера

result_df["активность"] = np.random.randint(1,10, len(result_df))*(result_df["группа"]+0.1)
plt.scatter(result_df["tsneX"], result_df["tsneY"],s=list(result_df['активность']),c=list(result_df['цвет']))
plt.savefig("blobs_size.jpg",dpi=1200,transparent=True)

Видно, что в фиолетовый кластер входили самые неактивные пользователи, а в коричневый — самые активные. При этом случайные вбросы фиолетового цвета в зеленый стали менее видны, и это плюс, ведь нам важнее поведение активных пользователей, нежели чем неактивных.

Параметр размера также можно использовать для создания фона под картинкой, добавляя второй scatter на тот же график, с большим размером точки s и низкой прозрачностью alpha

result_df["фон"] = result_df.apply(colorer,axis = 1,column = "предсказанные")
plt.scatter(result_df["tsneX"], result_df["tsneY"],s = 100, c=list(result_df['фон'])
            	,marker = "o",alpha = 0.05)
plt.scatter(result_df["tsneX"], result_df["tsneY"],s=list(result_df['активность']),c=list(result_df['цвет']))
plt.savefig("blobs_background.jpg",dpi=1200,transparent=True)

Использование фона очень полезно, если есть возможность эвристически распределить пользователей в другие группы, не связанные с поведением, например на фон можно поместить категорию размера города для каждой точки.

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

Код можно скачать по ссылке https://github.com/RomanKrekhno/table_recognition_example/blob/master/clustering%20example.ipynb

Что такое кластеризация и как она работает? | KNIME

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

Давайте сразу перейдем к делу и для объяснения взглянем на диаграмму рассеяния. Как вы могли заметить, кажется, что точки данных сгруппированы в отдельные группы (рис. 1).

Рис. 1. Диаграмма разброса данных примера

Чтобы сделать это очевидным, мы показываем те же данные, но теперь точки данных окрашены в цвет (рис. 2). Эти точки концентрируются в разных группах или кластерах, потому что их координаты близки друг к другу.В этом примере пространственные координаты представляют собой два числовых объекта, и их пространственная близость может быть интерпретирована как их сходство с точки зрения их характеристик. Реально говоря, у нас может быть много функций в нашем наборе данных, но идея близости (= подобия) все еще применима даже в пространстве более высоких измерений. Более того, нет ничего необычного в наблюдении кластеров в реальных данных, представляющих разные группы точек данных со схожими характеристиками.

Рис. 2. Диаграмма разброса данных примера, с разными кластерами, обозначенными разными цветами.

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

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

Кластеры, сформированные разными методами кластеризации, могут иметь разные характеристики (рисунок 3). Кластеры могут иметь разную форму, размер и плотность. Кластеры могут образовывать иерархию (например, кластер C формируется путем слияния кластеров A и B). Кластеры могут не пересекаться, соприкасаться или перекрываться. Теперь давайте посмотрим, как кластеры с разными свойствами создаются разными алгоритмами кластеризации.В частности, мы даем обзор трех методов кластеризации: кластеризация k-средних, иерархическая кластеризация и DBSCAN.

Рис. 3. Кластеры с разными характеристиками.

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

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

Кластеризация

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

Рис. 4. Случайно выбранные K центров кластеров (слева) и результирующие кластеры (справа). Рис. 5. Центры кластеров итеративно пересчитываются до тех пор, пока они не перестанут двигаться (gif).

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

Иерархическая кластеризация

Алгоритм иерархической кластеризации работает путем итеративного соединения ближайших точек данных для формирования кластеров. Первоначально все точки данных отключены друг от друга; каждая точка данных рассматривается как отдельный кластер.Затем две ближайшие точки данных соединяются, образуя кластер. Затем две ближайшие ближайшие точки данных (или кластеры) соединяются, чтобы сформировать больший кластер. И так далее. Процесс повторяется для формирования постепенно увеличивающихся кластеров и продолжается до тех пор, пока все точки данных не будут соединены в один кластер (рисунок 6).

Рис. 6. Дендрограмма (слева), полученная в результате иерархической кластеризации. По мере увеличения порогового расстояния образуются более крупные кластеры. Кластеры обозначены разными цветами на диаграмме рассеяния (справа), а также на дендрограмме.

Иерархическая кластеризация формирует иерархию кластеров, описанную на диаграмме, известной как дендрограмма (рисунок 6, слева). Дендрограмма описывает, какие точки данных / кластеры связаны на каком расстоянии, начиная от отдельных точек данных внизу до одного большого кластера наверху. Чтобы получить раздел кластера с определенным количеством кластеров, можно просто применить порог отсечения на определенном расстоянии на дендрограмме, создав желаемое количество кластеров (рисунок 7).

Рис. 7. Шесть кластеров формируются при пороге отсечки 1.0.

Форма кластеров, образованных иерархической кластеризацией, зависит от того, как рассчитывается расстояние между кластерами. В методе одиночной связи расстояние между кластерами измеряется двумя ближайшими точками между двумя кластерами (рисунок 8, слева). Этот метод имеет тенденцию создавать хорошо разделенные кластеры (рис. 8, в центре и справа). С другой стороны, в методе полной связи расстояние рассчитывается как самые дальние точки между двумя кластерами (рис. 9, слева).Полученные кластеры имеют тенденцию быть компактными по размеру, но не обязательно хорошо разделенными (рис. 9, в середине и справа). В методе средней связи расстояние между кластерами рассчитывается как расстояние между центрами тяжести между двумя кластерами. Этот подход представляет собой компромисс между методами одиночной и полной связи.

Рис. 8. Расчет расстояния в методе одинарной навески (слева). Этот метод создает хорошо разделенные кластеры (средний и правый). Рис. 9. Расчет расстояния в методе полной навески (слева).Этот метод создает компактные кластеры (средний и правый).

DBSCAN

DBSCAN означает пространственную кластеризацию приложений с шумом на основе плотности. Это метод кластеризации на основе плотности, группирующий плотные облака точек данных в кластеры. Любые изолированные точки считаются не частью кластеров и рассматриваются как шумы. Алгоритм DBSCAN начинается со случайного выбора начальной точки. Если в окрестности этой точки находится достаточно большое количество точек, то эти точки считаются частью того же кластера, что и начальная точка.Затем исследуются окрестности вновь добавленных точек. Если в этих окрестностях есть точки данных, то эти точки также добавляются в кластер. Этот процесс повторяется до тех пор, пока в этот конкретный кластер не перестанут быть добавлены точки. Затем в качестве отправной точки для другого кластера случайным образом выбирается другая точка, и процесс формирования кластера повторяется до тех пор, пока не перестанут быть доступны точки данных для назначения кластерам (рисунок 10). Если точки данных не находятся в окрестности каких-либо других точек данных, такие точки данных считаются шумами.Кластеры любой формы могут быть сформированы с помощью алгоритма DBSCAN (рисунок 11).

Рис. 10. Процесс формирования кластера с помощью алгоритма DBSCAN. Рис. 11. Примеры кластеров, формируемых DBSCAN.

узлов кластеризации в KNIME Analytics Platform

Три описанных выше алгоритма кластеризации, k-среднее, иерархическая кластеризация и DBSCAN, доступны на платформах KNIME Analytics как узлы k-средних, иерархической кластеризации и DBSCAN соответственно. Эти узлы запускают алгоритм кластеризации и назначают метки кластера точкам данных.Вот пример рабочего процесса Кластеризация смоделированных кластеризованных данных с помощью этих методов кластеризации (рисунок 12). Вы можете загрузить этот рабочий процесс из KNIME Hub, чтобы попробовать себя.

Рис. 12. Пример рабочего процесса — кластеризация на смоделированных кластерных данных — реализация трех алгоритмов кластеризации.

В качестве примера смоделированный набор кластеризованных данных с самого начала (рис. 1) анализируется с помощью трех алгоритмов кластеризации. Результирующие кластеры показаны на рисунке 13. Поскольку алгоритмы кластеризации работают с немаркированными данными, метки кластерам назначаются произвольно.Следует отметить, что мы устанавливаем количество кластеров K = 6 в k-средних и иерархической кластеризации, хотя в реалистичном сценарии такая информация недоступна. Как вы можете видеть в этом примере, эти три метода создают очень похожие кластеры.

Рис. 13. Кластеры, обнаруженные в моделируемых данных с помощью кластеризации k-средних (вверху справа), иерархической кластеризации (внизу слева) и DBSCAN (внизу справа). Исходные данные (вверху слева) также показаны в качестве справочных.

Однако в реальном наборе данных не все алгоритмы кластеризации работают одинаково.В следующем примере данные радужной оболочки глаза (состоящие из 3 классов радужной оболочки и 4 числовых характеристик) анализируются с помощью тех же алгоритмов. Рабочий процесс «Кластеризация данных радужки» доступен в KNIME Hub по адресу https://kni.me/w/zZheoPIKtcJ8rTJb. В этом наборе данных есть две основные концентрации точек данных с явным разрывом между ними (рис. 14, вверху слева). Я называю их верхним и нижним облаками. Поскольку кластеризация k-средних имеет тенденцию создавать выпуклые кластеры одинакового размера, она разделяет верхнее облако примерно посередине (рис. 14, вверху справа).Что касается иерархической кластеризации, мы используем метод средней связи, отдавая предпочтение как компактным, так и хорошо разделенным кластерам. Поскольку в верхнем облаке нет видимого разрыва, оно разделено на один компактный кластер и один более крупный кластер (рис. 14, внизу слева). Результаты k-средних и иерархической кластеризации обусловлены тем фактом, что мы устанавливаем K = 3 в обоих методах. Что касается метода DBSCAN, верхнее облако идентифицируется как единый кластер (рисунок 14, справа внизу).

Рис. 14. Кластеры, обнаруженные в данных радужной оболочки с помощью кластеризации k-средних (вверху справа), иерархической кластеризации (внизу слева) и DBSCAN (внизу справа).Исходные данные (вверху слева) также показаны в качестве справочных.

Заключение

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

Кластеризация в машинном обучении — GeeksforGeeks

Введение в кластеризацию

По сути, это тип метода обучения без учителя . Метод обучения без учителя — это метод, при котором мы извлекаем ссылки из наборов данных, состоящих из входных данных без помеченных ответов. Как правило, он используется как процесс для поиска значимой структуры, объясняющих лежащих в основе процессов, генеративных функций и группировок, присущих набору примеров.

Вниманию читателя! Не прекращайте учиться сейчас. Освойте все важные концепции машинного обучения с помощью базового курса по машинному обучению по приемлемой для студентов цене и будьте готовы к работе в отрасли.

Кластеризация — это задача разделения совокупности или точек данных на несколько групп, чтобы точки данных в тех же группах были более похожи на другие точки данных в той же группе и отличались от точек данных в других группах. По сути, это набор объектов на основе сходства и несходства между ними.


Например, — точки данных на графике ниже, сгруппированные вместе, можно классифицировать в одну группу. Мы можем различать кластеры, и мы можем определить, что на картинке ниже есть 3 кластера.

Необязательно, чтобы кластеры были сферическими. Например:

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

Почему кластеризация?
Кластеризация очень важна, поскольку она определяет внутреннюю группировку среди имеющихся немаркированных данных. Нет критериев хорошей кластеризации. Каковы критерии, которые он может использовать для удовлетворения своих потребностей, зависит от пользователя. Например, мы могли бы быть заинтересованы в поиске представителей однородных групп (сокращение данных), в поиске «естественных кластеров» и описании их неизвестных свойств («естественные» типы данных), в поиске полезных и подходящих группировок («полезных» классов данных). или в поиске необычных объектов данных (обнаружение выбросов).Этот алгоритм должен делать некоторые предположения, которые составляют сходство точек, и каждое предположение должно создавать разные и одинаково допустимые кластеры.

Методы кластеризации:

  • Методы, основанные на плотности: Эти методы рассматривают кластеры как плотную область, имеющую некоторые сходства и отличия от нижней плотной области пространства. Эти методы обладают хорошей точностью и способностью объединить два кластера. Пример DBSCAN (Пространственная кластеризация приложений с шумом на основе плотности) , OPTICS (Точки упорядочивания для определения структуры кластеризации) и т. Д.
  • Иерархические методы: Кластеры, сформированные этим методом, образуют древовидную структуру, основанную на иерархии. Новые кластеры формируются из ранее сформированного. Он разделен на две категории:
    • Агломеративный (восходящий подход )
    • Делительный (нисходящий подход )

примеров CURE (кластеризация с использованием представителей), BIRCH (сбалансированная итеративная) Уменьшение кластеризации и использования иерархий) и т. Д.

  • Методы разделения: Эти методы разделяют объекты на k кластеров, и каждый раздел образует один кластер. Этот метод используется для оптимизации функции подобия объективных критериев, например, когда расстояние является основным параметром. Пример K-средних, CLARANS (кластеризация больших приложений на основе случайного поиска) и т. Д.
  • Сеточные методы: In В этом методе пространство данных формируется в виде конечного числа ячеек, которые образуют сетчатую структуру.Все операции кластеризации, выполняемые на этих сетках, выполняются быстро и не зависят от количества объектов данных, например STING (статистическая информационная сетка), волновой кластер, CLIQUE (кластеризация в поисках) и т. Д.

Алгоритмы кластеризации:
K Алгоритм кластеризации средств — это простейший алгоритм обучения без учителя, который решает проблему кластеризации. Алгоритм K-средних разделяет n наблюдений на k кластеров, где каждое наблюдение принадлежит кластеру, а ближайшее среднее значение служит прототипом кластера.

Приложения кластеризации в различных областях

  • Маркетинг: Его можно использовать для характеристики и выявления клиентских сегментов в маркетинговых целях.
  • Биология: Может использоваться для классификации различных видов растений и животных.
  • Библиотеки: Используется для группирования различных книг на основе тем и информации.
  • Страхование: Он используется для подтверждения клиентов, их политики и выявления мошенничества.

Городское планирование: Он используется для создания групп домов и изучения их стоимости на основе их географического положения и других имеющихся факторов.

Исследования землетрясений: Изучая районы, пострадавшие от землетрясения, мы можем определить опасные зоны.

Ссылки:
Wiki
Иерархическая кластеризация
Ijarcs
matteucc
analyticsvidhya
knowm

Кластеризация | Типы кластеризации

Обзор

  • Узнайте о кластеризации, одном из самых популярных методов неконтролируемой классификации
  • Разделение данных на кластеры может производиться на основе центроидов, распределений, плотностей и т. Д.
  • Познакомьтесь с K-средствами и иерархической кластеризацией и разницей между двумя

Введение

Сталкивались ли вы с ситуацией, когда директор по маркетингу компании говорит вам: «Помогите мне лучше понять наших клиентов, чтобы мы могли лучше продавать им нашу продукцию!»

Я сделал, и аналитик во мне совершенно не знал, что делать! Я привык получать конкретные проблемы, результат которых можно предсказать для различных наборов условий.Но я понятия не имел, что делать в этом случае. Если бы человек попросил меня рассчитать жизненную ценность (LTV) или склонность к перекрестным продажам, я бы не моргнул. Но мне этот вопрос казался очень широким.

Обычно это первая реакция, когда вы впервые сталкиваетесь с проблемой обучения без учителя! Вы не ищете конкретной информации о явлении, но вам нужны структуры с данными, не привязанные к конкретному результату.

Метод выявления похожих групп данных в наборе данных называется кластеризацией. Это один из самых популярных методов в науке о данных. Субъекты каждой группы сравнительно более похожи на объекты этой группы, чем субъекты других групп. В этой статье я познакомлю вас с типами кластеризации, различными алгоритмами кластеризации и сравнением двух наиболее часто используемых методов кластеризации.

Приступим.

Примечание: Чтобы узнать больше о кластеризации и других алгоритмах машинного обучения (как с учителем, так и без него), посетите следующие курсы:

Содержание

  1. Обзор
  2. Типы кластеризации
  3. Типы алгоритмов кластеризации
  4. K Кластеризация средств
  5. Иерархическая кластеризация
  6. Разница между K-средним и иерархической кластеризацией
  7. Приложения кластеризации
  8. Улучшение алгоритмов контролируемого обучения с помощью кластеризации

1.Обзор

Кластеризация — это задача разделения совокупности или точек данных на несколько групп таким образом, чтобы точки данных в тех же группах были более похожи на другие точки данных в той же группе, чем точки в других группах. Проще говоря, цель состоит в том, чтобы разделить группы со схожими характеристиками и распределить их по кластерам.

Давайте разберемся в этом на примере. Предположим, вы возглавляете пункт проката и хотите понять предпочтения своих клиентов, чтобы расширить свой бизнес.Можете ли вы изучить детали каждого клиента и разработать уникальную бизнес-стратегию для каждого из них? Точно нет. Но что вы можете сделать, так это сгруппировать всех своих клиентов в, скажем, 10 групп на основе их покупательских привычек и использовать отдельную стратегию для клиентов в каждой из этих 10 групп. И это то, что мы называем кластеризацией.

Теперь мы понимаем, что такое кластеризация. Давайте посмотрим на типы кластеризации.

2. Типы кластеризации

В общих чертах кластеризацию можно разделить на две подгруппы:

  • Жесткая кластеризация: При жесткой кластеризации каждая точка данных либо полностью принадлежит кластеру, либо нет.Например, в приведенном выше примере каждый покупатель помещен в одну группу из 10 групп.
  • Мягкая кластеризация : В мягкой кластеризации вместо помещения каждой точки данных в отдельный кластер назначается вероятность или вероятность того, что эта точка данных находится в этих кластерах. Например, из приведенного выше сценария каждому покупателю назначается вероятность попасть в любой из 10 кластеров розничного магазина.

3. Типы алгоритмов кластеризации

Поскольку задача кластеризации является субъективной, средств, которые можно использовать для достижения этой цели, предостаточно.Каждая методология следует своему набору правил для определения «сходства » между точками данных. На самом деле известно более 100 алгоритмов кластеризации. Но мало кто из алгоритмов пользуется популярностью, давайте рассмотрим их подробнее:

  • Модели взаимодействия: Как следует из названия, эти модели основаны на представлении о том, что точки данных, расположенные ближе в пространстве данных, имеют большее сходство друг с другом, чем точки данных, расположенные дальше. В этих моделях можно использовать два подхода.В первом подходе они начинают с классификации всех точек данных в отдельные кластеры, а затем агрегируют их по мере уменьшения расстояния. Во втором подходе все точки данных классифицируются как один кластер, а затем разделяются по мере увеличения расстояния. Также выбор функции расстояния субъективен. Эти модели очень легко интерпретировать, но им не хватает масштабируемости для обработки больших наборов данных. Примерами таких моделей являются алгоритм иерархической кластеризации и его варианты.
  • Центроидные модели: Это итерационные алгоритмы кластеризации, в которых понятие сходства выводится из близости точки данных к центроиду кластеров.Алгоритм кластеризации K-средних — популярный алгоритм, который попадает в эту категорию. В этих моделях нет. количество кластеров, требуемых в конце, должно быть упомянуто заранее, поэтому важно заранее знать набор данных. Эти модели выполняются итеративно для поиска локальных оптимумов.
  • Модели распределения: Эти модели кластеризации основаны на представлении о том, насколько вероятно, что все точки данных в кластере принадлежат одному и тому же распределению (например: нормальный, гауссовский).Эти модели часто страдают от переобучения. Популярным примером этих моделей является алгоритм максимизации ожидания, который использует многомерные нормальные распределения.
  • Модели плотности: Эти модели ищут в пространстве данных области с различной плотностью точек данных в пространстве данных. Он изолирует различные регионы с разной плотностью и назначает точки данных в этих регионах в одном кластере. Популярными примерами моделей плотности являются DBSCAN и OPTICS.

Теперь я подробно расскажу вам о двух наиболее популярных алгоритмах кластеризации — кластеризации K-средств и иерархической кластеризации. Давайте начнем.

4. Кластеризация средств K

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

  1. Укажите желаемое количество кластеров K: Давайте выберем k = 2 для этих 5 точек данных в 2-D пространстве.

  1. Случайным образом назначьте каждую точку данных кластеру: давайте назначим три точки в кластере 1, показанные красным цветом, и две точки в кластере 2, показанные серым цветом.

  1. Вычислить центроиды кластера: Центроид точек данных в красном кластере показан с помощью красного креста, а точки в сером кластере — с помощью серого креста.

  1. Переназначьте каждую точку ближайшему центроиду кластера: обратите внимание, что только точка данных внизу назначается красному кластеру, даже если он ближе к центроиду серого кластера. Таким образом, мы назначаем эту точку данных серому кластеру
  2. .

  1. Пересчитайте центроиды кластера: Теперь повторно вычислите центроиды для обоих кластеров.

  1. Повторяйте шаги 4 и 5 до тех пор, пока улучшения не станут возможными. Точно так же мы будем повторять 4 шага th и 5 th , пока не достигнем глобального оптимума. Когда больше не будет переключения точек данных между двумя кластерами для двух последовательных повторов. Это будет означать завершение алгоритма, если не указано явно.

Вот окно живого кодирования, в котором вы можете опробовать алгоритм K-средних с помощью библиотеки scikit-learn.

5. Иерархическая кластеризация

Иерархическая кластеризация, как следует из названия, представляет собой алгоритм, который строит иерархию кластеров. Этот алгоритм начинается со всех точек данных, назначенных собственному кластеру. Затем два ближайших кластера объединяются в один кластер. В конце концов, этот алгоритм завершается, когда остается только один кластер.

Результаты иерархической кластеризации можно показать с помощью дендрограммы. Дендрограмму можно интерпретировать как:

Внизу мы начинаем с 25 точек данных, каждая из которых назначена отдельным кластерам.Затем два ближайших кластера объединяются, пока не останется только один кластер наверху. Высота на дендрограмме, на которой два кластера объединяются, представляет собой расстояние между двумя кластерами в пространстве данных.

Решение нет. кластеров, которые могут лучше всего отображать различные группы, можно выбрать, наблюдая за дендрограммой. Лучший выбор из числа нет. кластеров нет. вертикальных линий на дендрограмме, вырезанных горизонтальной линией, которая может пересекать максимальное расстояние по вертикали, не пересекая кластер.

В приведенном выше примере лучший выбор нет. кластеров будет 4, поскольку красная горизонтальная линия на дендрограмме ниже покрывает максимальное вертикальное расстояние AB.

Две важные вещи, которые вы должны знать об иерархической кластеризации:

  • Этот алгоритм был реализован выше с использованием подхода снизу вверх. Также можно использовать нисходящий подход, начиная со всех точек данных, назначенных в одном кластере, и рекурсивно выполняя разбиения, пока каждой точке данных не будет назначен отдельный кластер.
  • Решение об объединении двух кластеров принимается на основании близости этих кластеров. Есть несколько показателей для определения близости двух кластеров:
    • Евклидово расстояние: || a-b || 2 = √ (Σ (a i -b i ))
    • Квадратное евклидово расстояние: || a-b || 2 2 = Σ ((a i -b i ) 2 )
    • Манхэттенское расстояние: || a-b || 1 = Σ | a i -b i |
    • Максимальное расстояние: || a-b || INFINITY = макс. i | a i -b i |
    • Расстояние Махаланобиса: √ ((a-b) T S -1 (-b)) {где, s: ковариационная матрица}

6.Разница между K-средним и иерархической кластеризацией

  • Иерархическая кластеризация не может хорошо обрабатывать большие данные, но кластеризация K-средств может. Это связано с тем, что временная сложность K Means линейна, то есть O (n), в то время как сложность иерархической кластеризации квадратична, то есть O (n 2 ).
  • В кластеризации K-средних, поскольку мы начинаем со случайного выбора кластеров, результаты, полученные при многократном запуске алгоритма, могут отличаться. Пока результаты воспроизводимы в иерархической кластеризации.
  • K Средство работает хорошо, когда форма кластеров является гипер-сферической (например, круг в 2D, сфера в 3D).
  • K означает, что для кластеризации требуется предварительное знание K, т. Е. Нет. кластеров, на которые вы хотите разделить данные. Но вы можете остановиться на любом количестве кластеров, которое сочтете подходящим для иерархической кластеризации, интерпретируя дендрограмму
  • .

7. Приложения кластеризации

Clustering имеет большое количество. приложений, разбросанных по разным доменам.Вот некоторые из самых популярных приложений кластеризации:

  • Рекомендации двигателей
  • Сегментация рынка
  • Анализ социальных сетей
  • Группировка результатов поиска
  • Медицинская визуализация
  • Сегментация изображения
  • Обнаружение аномалий

8. Улучшение алгоритмов контролируемого обучения с помощью кластеризации

Кластеризация — это подход машинного обучения без учителя, но можно ли его использовать для повышения точности алгоритмов машинного обучения с учителем, а также путем кластеризации точек данных в похожие группы и использования этих меток кластера в качестве независимых переменных в алгоритме машинного обучения с учителем? Давайте разберемся.

Давайте проверим влияние кластеризации на точность нашей модели для задачи классификации, используя 3000 наблюдений со 100 предикторами данных о запасах, чтобы предсказать, пойдет ли цена вверх или вниз с помощью R. Этот набор данных содержит 100 независимых переменных от X1 до X100 представляет профиль акции и одну конечную переменную Y с двумя уровнями: 1 для роста цены акции и -1 для падения цены акции.

Набор данных доступен здесь: Скачать

Давайте сначала попробуем применить randomforest без кластеризации.

 # загрузка необходимых библиотек 
Библиотека
 ('randomForest')

библиотека ("Метрики")

# установить случайное начальное число 
  набор. Семян (101)

# загрузка набора данных

данные <-read.csv ("train.csv", stringsAsFactors = T)

# проверка размеров данных 
  тусклый (данные)

## [1] 3000 101

# определение переменной результата как фактора


 данные $ Y <-as.factor (данные $ Y)

# разделение набора данных на поезд и тест 
  поезд <-данные [1: 2000,]
test <-data [2001: 3000,]

#applying randomForest 
  model_rf <-randomForest (Y ~., данные = поезд)

preds <-predict (object = model_rf, test [, - 101])

таблица (пред.)

## пред
## -1 1
## 453 547

# проверка точности

auc (пред., тест $ Y)

## [1] 0,4522703 

Итак, получаем точность 0,45. Теперь давайте создадим пять кластеров на основе значений независимых переменных, используя кластеризацию k-средних, и повторно применим случайный лес.

 # прочесывание и тренировка

все <-rbind (поезд, тест)

# создание 5 кластеров с помощью K- означает кластеризацию

Кластер <- kmeans (all [, - 101], 5)

# добавление кластеров в набор данных в качестве независимой переменной.
  all $ cluster <-as.factor (кластер $ cluster)

# разделение набора данных на поезд и тест 
  поезд <-все [1: 2000,]
тест <-all [2001: 3000,]

#applying randomforest 
  model_rf <-randomForest (Y ~., Данные = поезд)

preds2 <-predict (object = model_rf, test [, - 101])

таблица (предс2)

## preds2

## -1 1

## 548 452

auc (preds2, test $ Y)

## [1] 0,5345908 

Ух! В приведенном выше примере, несмотря на то, что окончательная точность оставляет желать лучшего, кластеризация дала нашей модели значительный прирост по сравнению с точностью, равной 0.От 45 до немного выше 0,53.

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

Конечные ноты

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

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

Вам понравилось читать эту статью? Поделитесь своими взглядами в разделе комментариев ниже.

Есть опыт в машинном обучении / больших данных / науке о данных? Продемонстрируйте свои знания и помогите сообществу Analytics Vidhya, разместив свой блог.

Связанные

Кластеризация данных: 50 лет после K-средних

https://doi.org/10.1016/j.patrec.2009.09.011 Получение прав и контента

Аннотация

Организация данных в разумные группы - один из самых фундаментальных способов понимания и обучение.Например, общая схема научной классификации помещает организмы в систему ранжированных таксонов: домен, царство, тип, класс и т. Д. Кластерный анализ - это формальное исследование методов и алгоритмов группировки или кластеризации объектов в соответствии с измеренными или воспринимаемые внутренние характеристики или сходство. Кластерный анализ не использует метки категорий, которые помечают объекты предшествующими идентификаторами, то есть метками классов. Отсутствие информации о категориях отличает кластеризацию данных (обучение без учителя) от классификации или дискриминантного анализа (обучение с учителем).Цель кластеризации - найти структуру данных, и поэтому она носит исследовательский характер. Кластеризация имеет долгую и богатую историю в различных областях науки. Один из самых популярных и простых алгоритмов кластеризации, К-средних, был впервые опубликован в 1955 году. Несмотря на то, что К-средние были предложены более 50 лет назад и с тех пор были опубликованы тысячи алгоритмов кластеризации, К-средние являются до сих пор широко используется. Это говорит о сложности разработки алгоритма кластеризации общего назначения и некорректно поставленной проблеме кластеризации.Мы даем краткий обзор кластеризации, резюмируем хорошо известные методы кластеризации, обсуждаем основные проблемы и ключевые вопросы при разработке алгоритмов кластеризации и указываем на некоторые из новых и полезных направлений исследований, включая полууправляемую кластеризацию, ансамблевую кластеризацию, одновременный выбор функций. во время кластеризации данных и крупномасштабной кластеризации данных.

Ключевые слова

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

Дилемма пользователя

Исторические события

Перспективы кластеризации

Премия King-Sun Fu

Рекомендуемые статьи Цитирующие статьи (0)

Полный текст

Copyright © 2009 Elsevier B.V. Все права защищены.

Рекомендуемые статьи

Цитирующие статьи

Алгоритмы кластеризации | Кластеризация в машинном обучении | Разработчики Google

Давайте быстро рассмотрим типы алгоритмов кластеризации и когда следует выбирать каждый из них.

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

Типы кластеризации

Существует несколько подходов к кластеризации. Для получения исчерпывающего списка см. Комплексный обзор алгоритмов кластеризации Сюй Д. и Тиан Ю. Энн. Данные. Sci. (2015) 2: 165. Каждый подход подходит лучше всего. к определенному распределению данных.Ниже приводится краткое обсуждение четырех распространенных подходы с упором на кластеризацию на основе центроидов с использованием k-средних.

Кластеризация на основе центроидов

Кластеризация на основе центроидов организует данные в неиерархические кластеры, в отличие от иерархической кластеризации, определенной ниже. k-средство является самым широко используемый алгоритм кластеризации на основе центроидов. Алгоритмы на основе центроидов эффективен, но чувствителен к начальным условиям и выбросам. Этот курс фокусируется на на k-средних, потому что это эффективная, действенная и простая кластеризация алгоритм.

Рисунок 1: Пример кластеризации на основе центроидов.

Кластеризация на основе плотности

Кластеризация на основе плотности объединяет области с высокой плотностью в кластеры. Это позволяет создавать распределения произвольной формы при условии, что плотные области могут быть связанный. Эти алгоритмы испытывают трудности с данными различной плотности и высокие габариты. Кроме того, по замыслу эти алгоритмы не назначают выбросы кластеры.

Рисунок 2: Пример кластеризации на основе плотности.

Кластеризация на основе распределения

Этот подход к кластеризации предполагает, что данные состоят из распределений, например Гауссовские распределения . В На рисунке 3 алгоритм, основанный на распределении, группирует данные в три гауссовских раздачи. По мере удаления от центра раздачи вероятность того, что точка принадлежит распределению, уменьшается. Группы показывают это уменьшение вероятности. Когда вы не знаете тип раздачи в ваши данные, вам следует использовать другой алгоритм.

Рисунок 3: Пример кластеризации на основе распределения.

Иерархическая кластеризация

Иерархическая кластеризация создает дерево кластеров. Иерархическая кластеризация, неудивительно, что он хорошо подходит для иерархических данных, таких как таксономии. Видеть Сравнение 61 секвенированной Escherichia coli Геномы Оксана Лукьянченко, Труди Вассенаар и Дэйв Уссери для примера. В Кроме того, еще одним преимуществом является то, что любое количество кластеров может быть выбрано обрезка дерева на нужном уровне.

Рис. 4. Пример иерархического дерева с кластерами животных. Ключевые термины:

Подготовить данные | Кластеризация в машинном обучении | Разработчики Google

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

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

Нормализация данных

Вы можете преобразовать данные для нескольких объектов в один и тот же масштаб путем нормализации данные. В частности, нормализация хорошо подходит для обработки большинства Распределение общих данных, гауссовский алгоритм Распределение .По сравнению с квантили, нормализация требует значительно меньше данных для расчета. Нормализовать данные, вычислив их z-показатель следующим образом:

\ [x '= (x- \ mu) / \ sigma \\ \ begin {align *} \ text {где:} \ quad \ mu & = \ text {среднее} \\ \ sigma & = \ text {стандартное отклонение} \\ \ end {выровнять *} \]

Давайте посмотрим на сходство примеров с нормализацией и без нее. В На рисунке 1 видно, что красный цвет больше похож на синий, чем на желтый. Однако объекты на осях x и y имеют разный масштаб.Следовательно, наблюдаемое сходство может быть артефактом немасштабированных данных. После нормализация с использованием z-значения, все функции имеют одинаковую шкалу. Теперь ты находишь этот красный на самом деле больше похож на желтый. Таким образом, после нормализации данных вы можете более точно рассчитать сходство.

Рисунок 1. Сравнение данных функций до и после нормализации.

Таким образом, примените нормализацию, если выполняется одно из следующих условий:

  • Ваши данные распределены по Гауссу.
  • В вашем наборе данных недостаточно данных для создания квантилей.

Использование преобразования журнала

Иногда набор данных соответствует степени . распределение по закону , которое объединяет данные в нижний предел. На рисунке 2 красный цвет ближе к желтому, чем к синему.

Рисунок 2: Распределение по степенному закону.

Обработайте степенное распределение с помощью преобразования журнала. На рисунке 3 логарифмическое преобразование создает более плавное распределение, а красный цвет ближе к синему, чем желтый.

Рисунок 3: Нормальное (гауссово) распределение.

Использование квантилей

Нормализация и преобразования журналов адресуют определенные распределения данных. Что, если данные не соответствуют гауссовскому или степенному распределению? Есть ли генерал подход, применимый к любому распределению данных?

Попробуем препроцессировать этот дистрибутив.

Рисунок 4. Неклассифицируемый дистрибутив до предварительной обработки.

Интуитивно понятно, что если между двумя примерами есть только несколько примеров, то эти два примера похожи независимо от их ценности.И наоборот, если два примера содержат много примеров между ними, тогда два примера меньше похожий. Таким образом, сходство между двумя примерами уменьшается по мере того, как количество примеров между ними увеличивается.

Нормализация данных просто воспроизводит распределение данных, потому что нормализация - это линейное преобразование. Применение преобразования журнала не отражает ваша интуиция относительно того, как работает сходство, как показано на рисунке 5 ниже.

Рисунок 5: Распределение после преобразования журнала.

Вместо этого разделите данные на интервалы, каждый из которых содержит равные количество примеров. Эти границы интервалов называются квантилями .

Преобразуйте данные в квантили, выполнив следующие шаги:

  1. Определите количество интервалов.
  2. Определите интервалы так, чтобы каждый интервал имел равное количество Примеры.
  3. Замените каждый пример индексом интервала, в который он попадает.
  4. Приведите индексы к тому же диапазону, что и другие данные функций, путем масштабирования значения индекса равны [0,1].
Рисунок 6: Распределение после преобразования в квантили.

После преобразования данных в квантили сходство между двумя examples обратно пропорционален количеству примеров между этими двумя Примеры. Или, математически, где «x» - это любой пример в наборе данных:

  • \ (sim (A, B) \ приблизительно 1 - | \ text {prob} [x> A] - \ text {prob} [x> B] | \)
  • \ (sim (A, B) \ приблизительно 1 - | \ text {quantile} (A) - \ text {quantile} (B) | \)

Квантили - лучший выбор по умолчанию для преобразования данных.Однако для создания квантили, которые являются надежными индикаторами основного распределения данных, вы нужно много данных. Как правило, для создания квантилей \ (n \) вы должны есть не менее \ (10n \) примеров. Если у вас недостаточно данных, придерживайтесь нормализация.

Проверьте свое понимание

Для следующих вопросов предположим, что у вас достаточно данных для создания квантилей.

Первый вопрос

Как бы вы обработали это распределение данных?

Создайте квантили.

Правильно. Поскольку распределение не соответствует стандартное распределение данных, вам следует вернуться к создание квантилей.

Нормализовать.

Обычно данные нормализуются, если:
  • Распределение данных гауссово.
  • Вы понимаете, что представляют собой данные, и это говорит вам что данные не должны преобразовываться нелинейно. Как результат, вы избегаете квантилей и вместо этого выбираете нормализацию.
Ни один из этих случаев здесь не применяется. Распределение данных не гауссово, потому что оно не симметричен. И вы не понимаете, что эти ценности представляют в реальном мире.

Лог-преобразование.

Не лучший выбор, потому что это не идеальный степенной закон распределение.

Вопрос второй

Как бы вы обработали это распределение данных?

Нормализовать.

Правильно.Это распределение Гаусса.

Создайте квантили.

Неправильно. Поскольку это распределение Гаусса, предпочтительным преобразование - это нормализация.

Лог-преобразование.

Неправильно. Применяйте логарифмическое преобразование только к степенным распределениям.

Отсутствующие данные

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

Примечание: Проблема отсутствия данных не является специфической для кластеризации. Однако в контролируемое обучение, вы можете просто присвоить "неизвестное" значение особенность. Однако вы не можете использовать «неизвестное» значение при проектировании измерить сходство, потому что у вас нет возможности количественно оценить сходство между "неизвестно" и любое известное значение. Ключевые термины:

Кластеризация в машинном обучении

Целью обучения без учителя является обнаружение скрытых закономерностей в любых данных без метки. Одним из подходов к обучению без учителя является кластеризация. В этом руководстве мы обсудим кластеризацию, ее типы и несколько алгоритмов для поиска кластеров в данных. Кластеризация группирует точки данных на основе их сходства. Каждая группа называется кластером и содержит точки данных с высоким и низким сходством с точками данных в других кластерах.Короче говоря, точки данных кластера больше похожи друг на друга, чем на точки данных других кластеров. Цель кластеризации - разделить набор точек данных таким образом, чтобы похожие элементы попадали в один и тот же кластер, а разные точки данных попадали в разные кластеры. Далее в этом руководстве мы обсудим идеи о том, как выбрать разные метрики сходства между точками данных и использовать их в разных алгоритмах кластеризации.

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

Мы представляем точку наблюдения / выборки / данных как n-мерный вектор, и многие такие точки данных составляют набор данных. Чтобы показать пример, давайте предположим, что набор данных, показанный на рисунке 1, содержит много выборок, и каждая выборка имеет два измерения каждая:

Рисунок 1: Пример данных перед кластеризацией

Кластеризация выявляет следующие три группы, обозначенные разными цветами:

Рисунок 2: Пример данных после кластеризации

Кластеризация разделена на две подгруппы в зависимости от назначения точек данных кластерам:

  • Hard: Каждая точка данных назначена ровно одному кластеру.Одним из примеров является кластеризация k-средних.

  • Мягкий: каждой точке данных назначается вероятность или вероятность нахождения в кластере. Одним из примеров является алгоритм максимизации ожидания (EM).

Повестка дня

В этом уроке мы рассмотрим:

  1. Типы алгоритмов кластеризации
  2. Меры расстояния кластеризации
  3. Различные подходы к кластеризации
    1. Иерархическая кластеризация
    2. Кластеризация K-средних
    3. Кластеризация DBSCAN
  4. Применение алгоритмов кластеризации к нескольким наборам данных
    1. Визуализация наборов данных
    2. Найдите кластеры
    3. Визуализировать кластеры
  5. Заключение

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

  • Модель связности: эта модель присваивает большее сходство точкам данных, которые находятся ближе в одном или многомерном пространстве, чем те точки, которые находятся дальше. Существует два подхода: во-первых, он классифицирует все точки данных в разные кластеры, а затем объединяет точки данных в зависимости от расстояний между ними.Во-вторых, он классифицирует все точки данных в один кластер, а затем разделяет их на разные кластеры по мере увеличения расстояния. Эта модель проста для понимания, но имеет проблемы с обработкой больших наборов данных. Один из примеров - иерархическая кластеризация и ее варианты.

  • Центроидная модель: это итеративный алгоритм кластеризации, в котором сходство основано на близости точки данных к центроидам кластеров. Кластеризация K-средних является одним из примеров этой модели.Перед запуском требуется несколько кластеров, а затем точки данных итеративно разделяются на эти кластеры. Следовательно, чтобы использовать k-means, пользователи должны получить некоторые предварительные знания о наборе данных.

  • Модель плотности: эта модель ищет плотные области в одном или многомерном пространстве (с большим количеством точек данных в небольшой области). Популярным примером модели плотности является DBSCAN.

В этом руководстве мы рассмотрим три алгоритма кластеризации - иерархическую кластеризацию, k-средних, DBSCAN и сравнение этих методов.Далее мы обсудим их параметры и способы их применения для поиска кластеров в наборе данных цветов ириса и некоторых других наборах данных.

Кластеризация группирует похожие точки данных и требует метрики или меры для вычисления степени сходства или несходства точек данных. Два основных типа мер - это расстояние и сходство. Чем меньше расстояние между двумя объектами, тем они больше похожи друг на друга. Более того, тип меры расстояния зависит от проблемы, и одна мера может не работать со всеми видами проблем.

Многие алгоритмы кластеризации используют меры расстояния для определения сходства или несходства между любой парой точек данных. Допустимая мера расстояния должна быть симметричной и получать свое минимальное значение (обычно ноль) в случае идентичных точек данных. Посредством вычисления расстояния или (несходства) между каждой парой наблюдений получается матрица несходства или расстояния.

Выбор меры расстояния имеет решающее значение при кластеризации. Он определяет, как вычисляется подобие двух элементов (x, y) , поскольку оно влияет на форму кластеров.Классические меры расстояния - это евклидово и манхэттенское расстояния. Для наиболее распространенных алгоритмов кластеризации мера расстояния по умолчанию - евклидова. Если выбрано евклидово расстояние, то наблюдения, имеющие большие величины соответствующих характеристик, будут сгруппированы вместе. То же самое справедливо и для наблюдений с низкими величинами соответствующих характеристик. На рисунке 3 мы группируем ячейки, используя евклидово расстояние и их матрицу расстояний.

Рисунок 3: Евклидово расстояние между тремя точками (R, P, V) по трем объектам (G1, G2, G3)