Евклидово расстояние, когда похожие объекты слегка смещены
Допустим, я хочу найти похожий вектор для вектора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. Он может быть изменен для сравнения фактических значений (не только совпадение / несоответствие символа)