Существует множество методов расчета расстояний в машинном обучении. Здесь мы собираемся обсудить некоторые из них.
- Евклидово расстояние
- Маханта расстояние
- расстояние Минковского
- Расстояние Хэмминга
- Косинусное расстояние и косинусное сходство
Евклидово расстояние
Это расстояние между 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
записная книжка прилагается здесь.
Спасибо за прочтение, советы приветствуются!!!