Почему алгоритм кластеризации k-средних использует только евклидову метрику расстояния?


62

Есть ли конкретная цель с точки зрения эффективности или функциональности, почему алгоритм k-средних не использует, например, косинусное (дис) сходство в качестве метрики расстояния, а может использовать только евклидову норму? В целом, будет ли метод K-средних соответствовать и быть правильным, когда другие расстояния, кроме евклидовых, рассматриваются или используются?

[Дополнение от @ttnphns. Вопрос двоякий. «(Не) евклидово расстояние» может относиться к расстоянию между двумя точками данных или расстоянию между точкой данных и центром кластера. До сих пор в ответах предпринимались попытки обоих способов.]


Этот вопрос уже задавался около 10 раз на stackoverflow и на этом сайте. Пожалуйста, используйте функцию поиска.
Anony-Mousse

3
@ Anony-Mousse: Хотя я полностью с тобой согласен и недавно поднял кучу флагов на SO, я считаю, что отсутствие дублирования в большинстве этих вопросов вызывает беспокойство.
Никана Рекламикс

4
Это страница, которая стоит первой, когда вы гугляете на эту тему.
Харипканнан

Ответы:


62

Процедура K-средних - метод векторного квантования, часто используемый в качестве метода кластеризации, - вообще не использует попарно расстояния ч / б точек данных (в отличие от иерархической и некоторых других кластеризаций, которые допускают произвольную меру близости). Это означает многократное присвоение точек ближайшему центроиду, таким образом, используя евклидово расстояние от точек данных до центроида . Тем не менее, K- средние значения неявно основаны на попарных евклидовых расстояниях ч / б точек данных, потому что сумма квадратов отклонений от центроида равна сумме попарно возведенных в квадрат евклидовых расстояний, деленной на количество точек, Термин «центроид» сам по себе из евклидовой геометрии. Это многомерное среднее в евклидовом пространстве. Евклидово пространство - это евклидовы расстояния. Неевклидовы расстояния обычно не охватывают евклидово пространство. Вот почему K-Means предназначен только для евклидовых расстояний.

Но евклидово расстояние ч / б двух точек данных может быть представлено несколькими альтернативными способами . Например, оно тесно связано с косинусом или скалярным произведением ч / б точек. Если у вас есть косинус, или ковариация, или корреляция, вы всегда можете (1) преобразовать его в (квадрат) евклидово расстояние, а затем (2) создать данные для этой матрицы евклидовых расстояний (с помощью главных координат или других форм метрики). Многомерное масштабирование) для (3) ввода этих данных в кластеризацию K-средних. Следовательно, можно заставить K-средние «работать» с парными косинусами или чем-то подобным; на самом деле такие реализации кластеризации K-Means существуют. Смотрите также о реализации "K-средних для матрицы расстояний".

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

Обратите внимание, что я обсуждал тему, совместимо ли евклидово или неевклидово различие между точками данных с K-средних. Это связано, но не совсем с тем же вопросом, может ли неуклидные отклонения от центроида (в широком смысле, центра или квазицентроида) быть включены в K-средства или модифицированные «K-средства».

См. Связанный вопрос K-означает: почему минимизация WCSS максимизирует расстояние между кластерами? ,


Не могли бы вы привести примеры документов, о которых вы упоминаете?
любопытно

4
@ Дуглас, пожалуйста. Я сказал, что k-means не использует попарные расстояния. Это четко указано. Он использует расстояния до центроида. Но это автоматически означает, что он неявно связан с задачей оптимизации парных расстояний внутри кластеров.
ttnphns

1
@ttnphns: Из числа написанных But a Euclidean distance b/w two data points can be represented in a number of alternative ways. For example, it is closely tied with cosine or scalar product b/w the points. If you have cosine, or covariance, or correlation, you can always (1) transform it to (squared) Euclidean distanceвами символов вы могли бы написать так же легко: distance(x,y) = 1 - cosine_sim(x,y)или что-то столь же содержательное и информативное.
stackoverflowuser2010

1
Это похоже на обоснованную и конструктивную критику: лучше включать информацию непосредственно в ваш пост, а не полагаться на ссылку; и обычно лучше быть ясным, чем расплывчатым. (cc @stackoverflowuser)
whuber

3
С чем вы боретесь? Что в этом случае лучше полагаться на ссылку, или лучше быть расплывчатым, или на то и другое? И почему?
whuber

46

См. Также ответ @ttnphns для интерпретации k-средних, которая фактически включает поточечные евклидовы расстояния.

Способ построения k-средних не основан на расстояниях .

K-means минимизирует дисперсию внутри кластера. Теперь, если вы посмотрите на определение дисперсии, оно идентично сумме квадратов евклидовых расстояний от центра. (Ответ @ttnphns относится к парным евклидовым расстояниям!)

Основная идея k-средних состоит в том, чтобы минимизировать квадратные ошибки . Здесь нет «расстояния».

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

Если вы ищете манхэттенский вариант k-средних, то есть k-медианы. Потому что медиана - известная лучшая оценка L1.

Если вам нужны произвольные функции расстояния, взгляните на k-medoids (иначе: PAM, разбиение вокруг medoids). Медоид минимизирует произвольные расстояния (потому что он определен как минимум), и существует только конечное число возможных медоидов. Хотя это намного дороже, чем среднее.


Но на первом шаге k-средних каждая точка помещается в кластер с наименьшим евклидовым расстоянием с центром тяжести кластера ... Так что есть метрика расстояния
любопытно

@AnonyMousse @ttnphns answer refers to pairwise Euclidean distances!В своем ответе, 1-й абзац, я четко ссылаюсь как на «ошибки SS» (прямые), так и на «парные d ^ 2» (неявные) интерпретации.
ttnphns

3
Я согласен с тобой ответить. Обратите внимание, что ваш операционный счет k-means may stop converging with other distance functionsгомологичен моему теоретическому Non-euclidean distances will generally not span euclidean space.
ttnphns

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

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

9

Я мог бы быть немного педантичным здесь, но K-means - это имя, данное конкретному алгоритму, который присваивает метки точкам данных таким образом, чтобы в пределах кластера отклонения были сведены к минимуму, и это не название для «общего метода».

Алгоритм K-средних был независимо предложен из нескольких областей с сильными интерпретациями, применимыми к области. Просто получается, что это также евклидово расстояние до центра. Для краткой истории K-средних, пожалуйста, прочитайте Кластеризация данных: 50 лет после K-средних

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


«Метрики, отличные от евклидовых» Я мог бы быть немного более педантичным, но эти расхождения не являются метриками, в общем :)
mic

правда :); я должен вероятно отредактировать ответ.
user1669710

8

Поскольку это, по-видимому, теперь канонический вопрос, и он еще не упоминался здесь:

Одним естественным расширением k-средства для использования метрик расстояния, отличных от стандартного евклидова расстояния в является использование трюка с ядром . Это относится к идее неявного отображения входных данных в гильбертовом пространстве с высокой или бесконечной размерностью, где расстояния соответствуют функции расстояния, которую мы хотим использовать, и запускаем алгоритм там. То есть, позволяя быть некоторой характеристической картой, такой, что желаемая метрика может быть записана в виде , мы запускаем k-средних в точках . Во многих случаях мы не можем вычислить карту явно, но мы можемRdφ:RpHdd(x,y)=φ(x)φ(y)H{φ(xi)}φвычислить ядро . Не все метрики расстояния соответствуют этой модели, но многие из них подходят, и есть такие функции, определенные для строк, графиков, изображений, распределений вероятностей и т. Д.k(x,y)=φ(x),φ(y)H

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

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

И. Диллон, Ю. Гуан и Б. Кулис. Ядро k-средних, спектральная кластеризация и нормализованные разрезы. КДД 2005.


Я не понимаю, как трюк с ядром можно использовать с алгоритмом Ллойда. Мне кажется, что для вычисления центроида (даже неявно в гильбертовом пространстве) нам понадобится явное отображение φ (x_i)? Для назначения точек кластерам нам нужно только ядро, но для пересчета центроидов мы не можем уйти только с ядром, поскольку центроид является средним значением {φ (x_i)}, назначенного этому кластеру. Я что-то пропустил?
user2428107

Вы правы, что мы не можем явно вычислить центроиды. Но мы можем представить их просто как и вычислить расстояния до точки как . 1nijCiφ(xj)xφ(x)1nijCiφ(xj)2=k(x,x)+1ni2j,jk(xj,xj)2nijk(x,xj)
Дугал

5

Я прочитал много интересных комментариев здесь, но позвольте мне добавить, что «персональная» реализация k-средних в Matlab поддерживает 4 неевклидовых расстояния [между точками данных и центрами кластеров]. Единственный комментарий из документации, которую я вижу по этому поводу:

Мера расстояния в p-мерном пространстве, используемая для минимизации, указанная как пара через запятую, состоящая из «Расстояния» и строки.

kmeans по-разному вычисляет кластеры центроидов для разных поддерживаемых мер расстояния. Эта таблица суммирует доступные меры расстояния. В формулах x - это наблюдение (то есть строка X), а c - центроид (вектор строки).

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

Кстати, в прошлом я использовал k-средства Матлаба с корреляционным расстоянием, и он (неудивительно) сделал то, что должен был сделать.


2
Как примечание, поддерживаемые неевклидовы расстояния cosine(это просто евклидово расстояние на нормированных входных точках), correlation(евклидовы на стандартизированных входах), cityblock( , в этом случае используется медиана, а не среднее) и (что является только для двоичных входов). L1hammingcityblock
Дугал

@Dougal, как медиана учитывается в алгоритме? Разве это не меняет k- означает совершенно другой алгоритм?
ttnphns

1
Также обратите внимание, что для двоичных данных «расстояние Хэмминга» = ситиблок = кв. Евклидово расстояние.
ttnphns

1
@ttnphns Да, это определенно больше не k-означает, но у него точно такая же структура, за исключением того, что вместо вычисления центроидов вы вычисляете медиану. И да, для двоичных входов Хэмминга , но Matlab использует для этого медиану вместо среднего. =L22=L1
Дугал

1
@Dougal, обратите внимание, что процедура matlab связана с указанием различных расстояний между точкой данных и центром кластера; что не то же самое, что виды парных расстояний.
ttnphns

2

От сюда :

введите описание изображения здесь

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


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

3
@DLDahly: иногда величина важна, иногда это шум. Это зависит от области исследований и является вопросом стандартизации данных.
ttnphns
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.