Служба поиска сходства векторов изображений (2) — четыре основных принципа расчета расстояния

NumPy

Косинусное расстояние

Принцип подобия косинусов

  • Значение косинуса угла между двумя векторами в векторном пространстве используется как мера различия между двумя индивидуумами.Чем ближе значение к 1, тем ближе угол к 0°, то есть больше похоже два вектора равны, что называется косинусом.
  • Формула подобия косинусов выглядит следующим образом:

Практическое применение косинуса

  • Теперь предположим: пользователю А нравятся a, b, d; пользователю B нравятся b, c, e; пользователю C нравятся c, d; пользователю D нравятся b, c, d; пользователю E нравятся a, d. пользователям нравится каждый элемент, где «1» означает «нравится», «0» означает «не нравится». Примечание. Под поведением «нравится» здесь можно понимать взаимодействие, инициированное пользователем с продуктом, например, щелчок, комментарий, лайк, добавление в избранное и т. д. детали следующим образом:

  • Используйте формулу теоремы косинусов, упомянутую выше, чтобы вычислить сходство между двумя элементами.Например, если элементы a и b рассматриваются как два вектора в многомерном пространстве, есть: a (1,0,0,0,1 ) ; b(1,1,0,1,0), поэтому сходство между элементом a и элементом b составляет:

Код

import numpy as np
vec1 = np.array([1, 3, 4])
vec2 = np.array([4, 2, 4])
d = np.dot(vec1,vec2)/(np.linalg.norm(vec1) * (np.linalg.norm(vec2)))

Расстояние скалярного произведения (точечный продукт)

Принцип подобия скалярного произведения

  • Произведение длины двух векторов на косинус их угла
  • Формула расчета скалярного произведения: a * b = |a|* |b|*cosθ
  • Скалярное произведение, также известное как внутреннее произведение и количественное произведение векторов, представляет собой произведение вектора на длину его проекции на другой вектор; это скаляр.
  • Скалярное произведение отражает "похожесть" двух векторов. Чем более "похожи" два вектора, тем больше их скалярное произведение.

Код

import numpy as np
vec1 = np.array([1, 3, 4])
vec2 = np.array([4, 2, 4])
d = np.dot(vec1, vec2)

Евклидово расстояние

Евклидов принцип подобия

  • Евклидово расстояние (также называемое евклидовой метрикой) относится к истинному расстоянию между двумя точками в m-мерном пространстве или к естественной длине вектора (то есть к расстоянию от точки до начала координат).
  • Евклидова формула подобия выглядит следующим образом:

Евклидово практическое применение

  • В случае полных данных (нет отсутствующих данных измерений) единицы измерения между измерениями согласованы, в противном случае требуется стандартизация

Код

import numpy as np
vec1 = np.array([1, 3, 4])
vec2 = np.array([4, 2, 4])
d = np.linalg.norm(vec1-vec2, ord=2)
# 或
d = np.sqrt(np.sum(np.square(vec1-vec2)))

Манхэттенское расстояние

Манхэттенский принцип подобия

  • Сумма расстояний проекции отрезка, образованного двумя точками на оси, на фиксированную прямоугольную систему координат евклидова пространства
  • Формула подобия Манхэттена выглядит следующим образом:

Практическое применение Манхэттена

  • В случае полных данных (нет отсутствующих размерных данных) пространство необходимо разделить на сетки, а затем измерить в единицах сетки, допуская 4 направления.

Код

import numpy as np
vec1 = np.array([1, 3, 4])
vec2 = np.array([4, 2, 4])
d = np.linalg.norm(vec1-vec2, ord=1)
# 或
d = np.sum(np.abs(vec1-vec2))

приложение: