Евклидово расстояние, когда похожие объекты слегка смещены

Допустим, я хочу найти похожий вектор для вектораa = [0 0 2 0 0 0 0 0 0]

У меня есть два кандидата:

  • b1 = [0 0 0 2 0 0 0 0 0], где "особенность" находится всего в 1 позиции
  • b2 = [0 0 0 0 0 0 0 2 0], где "особенность" находится на расстоянии 5 позиций

Евклидово расстояние для (a, b1) такое же, как для (a, b2). Я хочу, чтобы b1 получил более высокую оценку "сходства". Есть ли известный метод (назовите его, пожалуйста) для решения таких проблем? Какое-то нечеткое евклидово расстояние?

Одно из возможных решений, которое я могу придумать, - это вычислить евклидово расстояние для (a, b1), когда весь b1 смещен на 1 позицию влево, затем на 2 позиции влево, на 3 позиции влево и т. Д., Затем выполните то же самое для сдвига. право. Каждый раз, когда я делаю это, я корректирую рассчитанное евклидово положение на вес, который уменьшается с увеличением расстояния перемещения. Затем эту же процедуру повторяют для b2. Затем результаты сравниваются, чтобы найти лучшее соответствие.

1 ответ

Посмотрите на расстояние Левенштейна. Он работает со строками, чтобы найти сходство (редактировать расстояние), но при изменении для использования на векторах вы получите более высокое сходство с b1, чем с b2. Он может быть изменен для сравнения фактических значений (не только совпадение / несоответствие символа)

Другие вопросы по тегам