2016-09-05 9 views
0

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

0 1 2 

0 0 4 6 
1 5 9 7 
2 2 1 4 

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

ответ

1

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

distance = max(max(D))*ones(size(D)) - D

где D матрица из вашей пользовательской функции расстояния. Для примера выше, это приведет к

9 9 9 0 4 6 9 5 3 
9 9 9 - 5 9 7 = 4 0 2 
9 9 9 2 1 4 7 8 5 

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

distance = 1./(D+1)

 Смежные вопросы

  • Нет связанных вопросов^_^