Следующая важная операция, которую хорошо бы понимать с математической стороны - это как сравнивать вектора. Многие задачи машинного обучения сводятся к тому, чтобы обнаруживать какие-то корреляции в данных, обнаруживать какая зависимость между разными признаками или объектами, которые описанны в виде векторов.
Для наглядности визуализируем вектора на примере двумерного пространства, где значения вектора - это x и y, а линия на графике выходит из координаты (0, 0) и упирается в (x, y):
Визуально можно выделить три основных критерия сравнения векторов:
1. Длина вектора
2. Расстояние между векторами
3. Угол между векторами
При этом, что считать длиной вектора и как рассчитывать расстояние - выбирать нам. В общем смысле длина вектора определяется понятием "норма", а векторное пространство для которого определено понятие нормы называется нормированным. Это как интерфейс класса в программировании. Обозначается как ||x||.
Наиболее известные реализации нормы:
NumPy уже содержит разные реализации норм-функций:
Расстояние между векторами обобщается понятием "метрика". Метрика выражается через норму разностей сравниваемых векторов:
Зная как считать норму с помощью linalg модуль библиотеки NumPy, несложно найти расстояние векторов:
Для расчёта угла между векторами понятия нормы недостаточно. Это легко проверить увеличив длину векторов. Расстояние между векторами увеличится вместе с длиной векторов, а угол останется прежним.
Угол между векторами можно вычислить зная длины векторов и скалярно перемножив вектора, то есть перемножив вектора поэлементно:
Зная NumPy нетрудно подчитать угол между нашими векторами:
Обратите внимание, что arccos вернёт угол в радианах, соответственно для перевода в привычные градусы требуется дополнительное преобразование через функции np.degrees().
Но порой косинуса угла более чем достаточно, так как он сам по себе является мерой сонаправленности векторов. Для параллельных векторов косинус угла будет равен единицы, а для перпендикулярных векторов нулю. Косинус угла между двух векторов также называется косинусным расстоянием векторов.