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

машинное обучение

Это 11-й день моего участия в августовском испытании обновлений.Подробности о событии:Испытание августовского обновления

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

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

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

Алгоритм K-средних

KKэто количество кластеров. Это число выбрано искусственно. Алгоритм K-Means основан на центроидальном разбиении.

Алгоритм потока:

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

Оценка расстояния: евклидово расстояние или косинусное сходство

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

  • μ(i)\mu^{(i)}означает первыйiiЦентр кластеризации,x(i)x^{(i)}означает первыйiiобразцы,mmУказывает количество образцов
Repeat{    for  i=  1  to  m:c(i):=с образцомx(i)индекс ближайшего центра кластера    for  k=  1  to  K:μ(k):=первоеkсреднее положение кластеров}\begin{aligned} &Repeat \{ \\ & \;\; for\; i =\; 1\; to\; m:\\ &\qquad c^{(i)} := с образцом x^{( i)} индекс ближайшего центра кластера \\ &\;\;for\;k =\;1\;to\;K: \\ &\qquad \mu^{(k)}:= k-й кластер Средняя позиция \\ &\} \end{aligned}

Оптимизация алгоритма

K-Means также минимизирует стоимость кластеризации, а минимизируется сумма расстояний между всеми точками данных и связанными с ними центральными точками кластера.Введена функция стоимости K-Means:

J(c(1),...,c(m),μ(1),...,μ(K))=1mi=1mx(i)μc(i)2J(c^{(1)},...,c^{(m)},\mu^{(1)},...,\mu^{(K)})=\dfrac{1}{m}\sum\limits_{i=1}^{m}||x^{(i)}-\mu^{c^{(i)}}||^2 JJтакже называемыйФункция искажения

На самом деле, в первом цикле for при назначении центров кластеров образцам вы сокращаетеc(i)c^{(i)}Понесенные затраты; во втором цикле for они уменьшаютсяμ(k)\mu^{(k)}понесенные затраты.

определить значение k

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

在这里插入图片描述

Вот некоторые другие распространенные алгоритмы кластеризации:

Двудольный алгоритм K-средних

Алгоритм Bisection K-Means (bisecting kmeans), по сравнению с обычным K-Means, bisection K-Means не спешит рандомизировать K центров кластеров, а сначала классифицирует все точки в кластер, а затем кластер разбивается на два. Вычислите функцию стоимости (т. е. ошибку) каждого результирующего кластера, выберите кластер с наибольшей ошибкой, затем разделите его (т. е. минимизируйте ошибку) и повторяйте процесс, пока не будет достигнуто желаемое количество кластеров.

Ошибка принимает SSE (Sum of Squared Error), которая представляет собой сумму квадратов ошибок. Чем меньше SSE, тем более сконцентрированы объекты в кластере.

Алгоритм жадный, объем вычислений не маленький.

Алгоритм DBSCAN

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

Базовые концепты:

  • EpsEps Площадь: заданный радиус объектаEpsEpsОкрестности внутри объекта называютсяEpsEpsПлощадь.
  • MinPtsMinPts: минимальное количество точек, содержащихся в данной окрестности, для определения точкиppЯвляется ли это основной частью кластера или граничными точками или шумом.
  • основной объект: если объектEpsEpsОкрестность содержит не менееMinPtsMinPtsОбъект называется основным объектом.
  • пограничная точка: граничная точка не является центральной точкой, но находится в окрестности центральной точки. Точки на краях плотных областей.
  • точка шума: любая точка, которая не является ни центральной, ни граничной точкой. Точки в разреженных областях.
  • Прямая плотность до: еслиppсуществуетqqизEpsEpsпо соседству иqqявляется основным объектом, он называется объектомppот объектаqqОтправление непосредственно плотности досягаемости.
  • плотность до: если есть цепочка объектовp1,p2,...,pn,p1=q,pn=pp_1,p_2,...,p_n,p_1=q,p_n=p, заpiеD(1in)p_i\in D(1\le i\le n),pi+1p_{i+1}даpip_iпримерно отEpsEpsиMinPtsMinPtsнепосредственно достижимая плотность, то объектppот объектаqqоEpsEpsиMinPtsMinPtsДостижимая плотность (densityreachable).
  • связанная плотность: если объект существуетOеDO\in D, сделать объектppиqqвсе изOOоEpsEpsиMinPtsMinPtsплотность достижима, то объектppприбытьqqэто оEpsEpsиMinPtsMinPtsплотностно-связанный.
  • кластеры на основе плотности: это самый большой набор объектов, связанных плотностью, основанный на достижимости плотности.
  • шум: Объекты, не содержащиеся ни в одном кластере.

Алгоритм DBSCAN заключается в проверке значения каждой точки в наборе данных.EpsEpsокрестности для поиска кластеров.

Поток алгоритма

(1)Сначала набор данныхDВсе объекты в помечены как необработанные(2)for  набор данныхDкаждый объект вp  do(3)if  pбыл классифицирован в кластер или помечен как шум  then(4)continue;(5)else(6)объект проверкиpизEpsПлощадьE(p);(7)if  E(p)Содержит менееMinPts  then(8)пометить объектpявляется граничной точкой или точкой шума;(9)else(10)пометить объектpв качестве основной точки и создать новый кластерC;(11)for  E(p)Все необработанные объекты вq  do(12)проверить егоEpsПлощадьE(p),какE(p)содержит по крайней мереMinPtsобъект,E(p)Объекты, не принадлежащие ни к одному кластеру вC\begin{aligned} &(1) \text{Сначала пометить все объекты в наборе данных}D как необработанные\\ &(2) для\;каждого объекта p в наборе данных D \;do \\ & (3) \quad if \ ;p уже находится в кластере или помечен как шум\;затем\\ &(4) \qquad продолжить;\\ &(5) \quad else\\ &(6) \qquad проверить Eps-окрестность E(p) объекта p; \\ &(7) \qquad \quad если \;E(p) содержит меньше объектов, чем MinPts \;то \\ &(8) \qquad \qquad помечает объект p Это граничная точка или точка шума; \\ &(9) \qquad \quad else\\ &(10) \qquad \qquad Пометить объект p как центральную точку и создать новый кластер C. \\ &(11) \qquad \ qquad for\; все необработанные объекты в E(p) q\;do\\ &(12) \qquad \qquad \quad Проверить его Eps-окрестность E(p), если E(p) содержит не менее объекта MinPts, то добавить объекты в E (p) которые не относятся ни к одному кластеру в C \end{aligned}

Алгоритмы плюсы и минусы

Преимущество:

  • Нет необходимости указывать количество кластеров
  • Хорошо находит выбросы (задачи обнаружения)
  • Встречаются скопления произвольной формы.
  • Всего два параметра

Недостаток:

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