Скалярное произведение и углы
Задача этого урока ввести ту структуру, которая и определяет то пространство, с которым мы привыкли работать
Я говорю про скалярное произведение
Сначала мы разберём, что следует из стандартной формулы, а потом попробуем немного обобщить
Классическая формула подсчёта скалярного произведения такая:
Пока что, геометрии не видно
Первое, что можно понять, что если подставить один и тот же вектор, то мы получим уже знакомую формулу:
Это буквально теорема Пифагора, только без корня!
Или, если по умному, квадрат евклидовой нормы
Получается, евклидову норму вектора можно получить так:
Далее, когда я буду говорить “длина” или “норма” вектора, я буду подразумевать именно евклидову, если не упоминается иначе
А что, если всё же вектора будут разными?
Второе важное свойство - через скалярное произведение можно посчитать длину ортогональной проекции.
Проекция ортогональная, если она как бы “падает” под прямым углом.
На картинке, я думаю, будет проще понять:

Так вот, та длину зелёного вектора () можно посчитать через скалярное произведение:
Попробуем понять, что это нам даёт (на самом деле, очень много что)
Сначала поймём, что это сходится с нашим прошлым выводом
Если подставить один и тот же вектор, то мы получим:
Что, очевидно, верно, ведь проекция вектора на себя равна себе же
В уроке, где мы разбирали координаты мы разбирали, что координата вектора - длина проекции на базисный вектор.
Получается, что проекция на показывает, насколько “похож” на по направлению.
Причём, даже знак скалярного произведения, в данном случае, имеет смысл.
Если оно отрицательно, значит проекция смотрит в противоположную сторону от вектора , а значит, смотрит почти в противоположную сторону.
Очевидно, что если проекция равна нулю, то вектора перпендикулярны
Это, по факту, равноценно тому, что один вектор никак не похож на другой
В данных это часто означает нулевую корреляцию данных (в будущих уроках объясню, почему)
На этом основан способ ортогонализации векторов: нужно вычесть из одного вектора проекцию => она станет равна нулю => вектора станут перпендикулярны
Теперь найдём проекцию обычным методом тригонометрии

Если угол между векторами равен , то длина проекции на вектор равна:
*Здесь стоит модуль, потому что длина проекции всегда положительна, а косинус может быть отрицательным
А как мы помним из прошлого шага:
Получается:
Длины векторов всегда положительные, поэтому, мы можем снять модули с косинуса и скалярного произведения:
Вот мы и получили из геометрического определения скалярного произведения формулу, которую дают всем в школе
Она полностью сходится со всеми нашими прошлыми выводами
Например, если вектора перпендикулярны, значит косинус равен нулю, а значит и скалярное произведение равно нулю
И если подставить один и тот же вектор, то косинус будет равен единице и мы получим квадрат нормы
Из этого вытекает главный для Data science приём, который даёт нам скалярное произведение - косинусное свойство
Представим, у нас есть датасет разных видосов на видеохостинге.
Наша задача посоветовать пользователю видосы близкие к его интересам.
Тут как раз косинусное сходство может помочь.
-
Берём “средний” вектор его интересов - среднее арифметическое его просмотренных видео
-
Считаем с остальными видео косинусное сходство
-
Те видео, с которыми оно ближе всего к 1 могут наилучшим образом подходить пользователю
Этот же принцип можно было понять и без введения косинуса, чисто через геометрическое определение
Очень часто (особенно в больших размерностях) направление вект говорит о векторе сильно больше, чем относительное координатное расположение.
Скалярное произведение является важным маркером того, что происходит с пространством при преобразованиях.
Если преобразование как-то меняет скалярное произведение, значит это явно не просто поворот или отражение, что-то явно растягивается, сжимается или сдвигается (меняются длины и углы).
Преобразования, которые не меняют скалярное произведение (а значит, длины и углы тоже) называются ортогональными
Формально это записывается так:
Таких преобразований всего два - это поворот или отражение относительно подпространства.
Так как углы и длины не меняются, то такие преобразования переводят ортонормированный базис в ортонормированный.
А из этого следует, что столбцы матрицы преобразования образуют как раз ортонормированный базис.
*Напомню, что по столбцам матрицы преобразования стоят координаты новых базисных векторов.
Ортогональные преобразования, по факту, ничего не меняют.
Поэтому, нужно следить, чтобы ваши алгоритмы были устойчивы к таким преобразования, иначе получается, что ничего не поменяв мы изменили работу алгоритма, что как-то нелогично.
Иначе нужно понимать, почему определённый алгоритм неустойчив.
Например, разобранный ранее k-means с евклидовой нормой полностью устойчив к ортогональным преобразованиям, а с другими нормами не устойчив.
Это можно объяснить тем, что другие нормы мы используем, когда нам важны определённые оси, которые уже ломаются при повороте.
Умножение двух матриц можно интерпретировать как применение стандартного скалярного произведение к столбцам строкам двух матриц
Тогда полученная матрица будет состоять из попарных произведений строк первой матрицы со столбцами второй
Получается, что если столбцы матрицы состоят из ортонормированного базиса, то если умножить матрицу на себя транспонированную, то получится единичная матрица:
Кстати, преобразование, которое сохраняет углы, но не сохраняет расстояния только одно: просто умножение всех векторов на одно число
Чему равен определитель у матрицы ортогональных преобразований?
(воспользуйтесь нашим геометрическим определением определителя через объёмы)
Пусть A - линейное преобразование
Если мы посчитали скалярное произведение векторов до и после преобразования и получили разные ответы, что это значит?