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

Алгоритм среднего сдвига подпадает под неконтролируемое обучение, которое классифицируется как алгоритм кластеризации. Идеология алгоритма «Среднее смещение» заключается в том, что он итеративно назначает точки данных кластерам, сдвигаясь к точке, имеющей точку с самой высокой плотностью (режим). В основе логики среднего сдвига лежит концепция оценки плотности ядра, называемая KDE.

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

Фукунага и Хостеллер обнаружили неконтролируемую технику обучения для поиска кластеров:

  • Среднее смещение также известно как алгоритм поиска мод, который назначает точки данных кластерам путем смещения точек данных в область высокой плотности. Самая высокая плотность точек данных называется моделью в регионе. Алгоритм Mean Shift имеет приложения, широко используемые в области компьютерного зрения и сегментации изображений.
  • KDE - это метод оценки распределения точек данных. Это работает, помещая ядро ​​в каждую точку данных. Ядро в математике - это весовая функция, которая будет применять весовые коэффициенты для отдельных точек данных. Добавление всего отдельного ядра генерирует вероятность.

Функция ядра обязана удовлетворять следующим условиям:

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

Две популярные функции ядра

Ниже приведены две популярные функции ядра:

  1. Плоское ядро
  2. Гауссово ядро
  • В зависимости от используемого параметра ядра, результирующая функция плотности меняется. Если параметр ядра не указан, ядро ​​Gaussian вызывается по умолчанию. KDE использует концепцию функции плотности вероятности, которая помогает найти локальные максимумы распределения данных. Алгоритм работает, заставляя точки данных притягивать друг друга, позволяя точкам данных двигаться в область высокой плотности.
  • Точки данных, которые пытаются сходиться к локальным максимумам, будут принадлежать к одной кластерной группе. В отличие от алгоритма кластеризации K-средних, выходные данные алгоритма среднего сдвига не зависят от предположений о форме точки данных и количестве кластеров. Количество кластеров будет определяться алгоритмом по отношению к данным.
  • Для реализации алгоритма Mean Shift мы используем пакет Python SKlearn.

Реализация алгоритма среднего сдвига

Ниже приведена реализация алгоритма:

Пример № 1

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

Код:

fromcluster importMeanShift, estimate_bandwidth
from sklearn.datasets.samples_generator import make_blobs as mb
importpyplot as plt
fromitertools import cycle as cy

Важно отметить, что мы будем использовать библиотеку sklearn make_blobs для генерации точек данных, центрированных в 3 местах. Чтобы применить алгоритм «Среднее смещение» к сгенерированным точкам, мы должны установить полосу пропускания, которая представляет взаимодействие между длинами. Библиотека Склеарна имеет встроенные функции для оценки пропускной способности.

Код:

#Sample data points
cen = ((1, .75), (-.75, -1), (1, -1)) x_train, _ = mb(n_samples=10000, centers= cen, cluster_std=0.6)
# Bandwidth estimation using in-built function
est_bandwidth = estimate_bandwidth(x_train, quantile=.1,
n_samples=500)
mean_shift = MeanShift(bandwidth= est_bandwidth, bin_seeding=True)
fit(x_train)
ms_labels = mean_shift.labels_
c_centers = ms_labels.cluster_centers_
n_clusters_ = ms_labels.max()+1
# Plot result
figure(1)
clf()
colors = cy('bgrcmykbgrcmykbgrcmykbgrcmyk')
fori, each inzip(range(n_clusters_), colors):
my_members = labels == i
cluster_center = c_centers(k) plot(x_train(my_members, 0), x_train(my_members, 1), each + '.')
plot(cluster_center(0), cluster_center(1),
'o', markerfacecolor=each,
markeredgecolor='k', markersize=14)
title('Estimated cluster numbers: %d'% n_clusters_)
show()

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

Выход:

Пример № 2

Основано на сегментации изображения в компьютерном зрении. Второй фрагмент расскажет, как алгоритм среднего смещения используется в Deep Learning для сегментации цветного изображения. Мы используем алгоритм среднего сдвига для идентификации пространственных кластеров. В предыдущем фрагменте мы использовали набор двумерных данных, тогда как в этом примере мы будем исследовать трехмерное пространство. Пиксель изображения будет считаться точками данных (r, g, b). Нам нужно преобразовать изображение в формат массива, чтобы каждый пиксель представлял точку данных на изображении, которое мы собираемся представить в сегмент. Кластеризация значений цвета в пространстве возвращает серию кластеров, где пиксели в кластере будут похожи на пространство RGB. Пакеты, используемые для реализации алгоритма среднего смещения:

Код:

importnumpy as np
fromcluster importMeanShift, estimate_bandwidth
fromdatasets.samples_generator importmake_blobs
importpyplot as plt
fromitertools import cycle
fromPIL import Image

Ниже фрагмент для выполнения сегментации исходного изображения:

#Segmentation of Color Image
img = Image.open('Sample.jpg.webp')
img = np.array(img)
#Need to convert image into feature array based
flatten_img=np.reshape(img, (-1, 3))
#bandwidth estimation
est_bandwidth = estimate_bandwidth(flatten_img,
quantile=.2, n_samples=500)
mean_shift = MeanShift(est_bandwidth, bin_seeding=True)
fit(flatten_img)
labels= mean_shift.labels_
# Plot image vs segmented image
figure(2)
subplot(1, 1, 1)
imshow(img)
axis('off')
subplot(1, 1, 2)
imshow(np.reshape(labels, (854, 1224)))
axis('off')

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

Выход:

Преимущества и применение Алгоритм среднего сдвига

Ниже приведены преимущества и применение среднего алгоритма:

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

Плюсы алгоритма среднего сдвига

Ниже приведены плюсы алгоритма среднего смещения:

  • Вывод алгоритма не зависит от инициализации.
  • Процедура эффективна, так как имеет только один параметр - Bandwidth.
  • Нет предположений о количестве кластеров данных и форме.
  • Он имеет лучшую производительность, чем K-Means Clustering.

Минусы алгоритма среднего сдвига

Ниже приведены минусы алгоритма среднего смещения:

  • Дорого для больших функций.
  • По сравнению с кластеризацией K-Means это очень медленно.
  • Выход алгоритма зависит от параметра пропускной способности.
  • Вывод зависит от размера окна.

Вывод

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

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

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

  1. Алгоритм кластеризации K-средних
  2. Алгоритм КНН в R
  3. Что такое генетический алгоритм?
  4. Методы ядра
  5. Ядерные методы в машинном обучении
  6. Подробное объяснение алгоритма C ++