Алгоритм K-средних с функцией произвольного расстояния MATLAB (расстояние Чебышева) - PullRequest
3 голосов
/ 25 марта 2012

Есть ли способ установить другое расстояние в K-средних, чем те пять, которые реализованы в Matlab, например, расстояние Чебышева:

D = max (abs (xj-xi))

Спасибо.

Лучший,

Павлос

Ответы [ 5 ]

1 голос
/ 25 марта 2012

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

0 голосов
/ 20 июля 2017

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

Вы можете получить код в GitHub Repository .

Вотрезультаты для 3 различных метрик расстояния:

enter image description here

enter image description here

enter image description here

0 голосов
/ 06 ноября 2013

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

Однако, если вы действительно хотите использовать k-means, вы можете создать матрицу расстояний, используя любую понравившуюся вам функцию, и разбить вашу матрицу расстояний на пространство объектов, используя SVD. Затем выполните k-средних в новом пространстве признаков, представленном баллами SVD.

Я не знаю, что K-средства будут сходиться с другими метриками расстояния.

0 голосов
/ 25 марта 2012

Чебышевское расстояние эквивалентно бесконечности норма .Это должно помочь вам в поиске в документации Matlab.

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

Другим вариантом будет поиск соответствия между Линфом и L2, но его не существует.Сожалею.

0 голосов
/ 25 марта 2012

Это может вам помочь.

http://www.purplemath.com/modules/distform.htm

http://www.mathwarehouse.com/algebra/distance_formula/index.php

Кроме того, существует еще одна концепция вычисления расстояния между двумя точками с именем "Расстояние Городского квартала", что-то похожее на АБСОЛЮТНОЕ расстояние двух точек.Пример:

Расстояние, d = |x2-x1| + |y2-y1| ИЛИ d = |x1-x2| + |y1-y2| (Поскольку результаты являются абсолютными, подойдет любая форма) Пожалуйста, проверьте и попробуйте.

...