Существует множество методов расчета расстояний в машинном обучении. Здесь мы собираемся обсудить некоторые из них.

  • Евклидово расстояние
  • Маханта расстояние
  • расстояние Минковского
  • Расстояние Хэмминга
  • Косинусное расстояние и косинусное сходство

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

Это расстояние между x и y в размере n. Здесь мы вычисляем расстояние d между точками данных p1 и p2.

код:

from sklearn.metrics.pairwise import euclidean_distances
X = [[0, 1], [1, 1]]
#distance between rows of X
euclidean_distances(X, X)
#get distance to origin
euclidean_distances(X, [[0, 0]])
output:
array([[1.        ],
       [1.41421356]])

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

Это сумма абсолютных разностей всех координат. Предположим, нам нужно указать кому-то расстояние между A и B. Итак, здесь мы скажем, что нужно пройти 3 квартала прямо и еще 3 влево, тогда расстояние составит 6 кварталов.

Одна вещь, которую необходимо упомянуть, это то, что мы не можем идти по диагонали здесь.

Уравнение

код:

import math
p1 = [4, 0]
p2 = [6, 6]
distance = math.sqrt( ((p1[0]-p2[0])**2)+((p1[1]-p2[1])**2) )
print(distance)
output:
6.324555320336759

расстояние Минковского

Это расстояние для измерения сходства между точками A и B в пространстве нормированных векторов. Есть 2 термина векторное пространство, нормированное векторное пространство, давайте вкратце.

  • векторное пространство. Это набор векторов, которые можно складывать вместе и умножать на числа, как скаляр.
  • Нормированное векторное пространство. Это векторное пространство над действительными или комплексными числами, на котором определена норма (в пространстве, где расстояния могут быть представлены в виде вектора, имеющего длину).

если увидеть формулу есть две вещи

  • если p = 1, это становится расстоянием Маханты
  • если p = 2, то расстояние становится Эклюдовым.

X1 = [0,1,1,0,1,0,1,1,1]

X2 = [1,1,1,0,1,0,0,1,0]

код:

from scipy.spatial import distance
distance.minkowski([0,1,1,0,1,0,1,1,1], [1,1,1,0,1,0,0,1,0], 1)
output:
3

Расстояние Хэмминга

Он используется для измерения расстояния в текстах. Здесь мы берем логический вектор, чтобы узнать больше о расстоянии Хэмминга. Допустим, у нас есть два логических вектора X1, X2.

Расстояние Хэмминга(X1, X2) = нет. мест, где двоичные значения различаются

код:

from scipy.spatial import distance
distance.hamming(['a','b','c','d'], ['d', 'b','c', 'd'])
code:
0.25

Косинусное расстояние и косинусное сходство

Косинусное сходство измеряет сходство двух или более документов независимо от их размера. Он использовал косинусное расстояние для вычисления сходства.

Косинусное подобие определяется как

и

Косинусное расстояние = 1 – косинусное сходство

Математически он измеряет косинус угла между двумя векторами, спроецированными в многомерном пространстве.

Итак, какое значение полезно для определения чего?

cos(0) = 1 , cos(360) = 1 (есть сходство)

cos(90) = 0, cos(270) = 0 (есть лишь несколько сходств: незначительно)

cos(180) = -1 (совсем не похоже)

код:

from scipy.spatial import distance
distance.cosine([1, 0, 0], [0, 1, 0])
output:
1.0

записная книжка прилагается здесь.

Спасибо за прочтение, советы приветствуются!!!

Использованная литература:







https://towardsdatascience.com/importance-of-distance-metrics-in-machine-learning-modelling-e51395ffe60d