Меняем точку зрения
Данные с которыми мы обычно работаем не зависят от того, как мы на них посмотрим.
Если есть какое-то скопление точек, от того, что мы поменяем точку зрения, это скопление не должно распадаться.
Пришло время разобраться с заменой координат.
Сначала разберём алгебраическую часть, в конце урока будет пример использования в данных.
Замена координат это просто другой взгляд на уже имеющиеся вектора.
Стрелки в пространстве как были, так и остались, но мы начинаем их измерять с другой точки зрения (более длинной/короткой линейкой, под другим углом и тд).
Сначала нужно понять, что вообще такое координаты вектора.
Алгебраически координаты это коэффициенты, которые появляются при выражении вектора через базис, то есть:
- как раз числа, являющиеся координатами.
Но мы здесь за геометрией пришли, как это можно представить нагляднее?
Возьмём любой базис и любой вектор, который мы хотим выразить.
Попробуем выражать его последовательно.
Вычтем из нужного вектора какой-нибудь базисный вектор столько раз, сколько нужно, чтобы оставшуюся часть можно было выразить без этого базисного вектора.
Посмотрим на картинку:

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

Новые координаты находятся по формулам (это просто тригонометрия, сильно вдумываться в формулы не нужно):
Мы уже пришли к выводу, что для пересчёта координат вектора нужно сделать обратную операцию
В данном случае это поворот на угол :
Вот так несложно мы получили новые координаты
Здесь и начинают появляться матрицы.
Дело в том, что выражение одного набора координат вектора через другой в обычной записи писать очень громоздко (особенно в больших размерностях).
Матрицы становятся очень удобным инструментом работы с такими преобразованиями.
Тут важно не запутаться с тем, что мы пересчитываем: координаты новых базисных векторов базиса или координаты уже имеющегося вектора в новом базисе
Координаты новых базисных векторов в старом базисе:
Мы так их алгебраически и задаём
Но писать такие системы сложения долго, выглядят они громоздко, да и в код это вставлять неудобно
Поэтому, это же можно сильно удобнее переписать и в матричном виде:
Здесь C - матрица заменыкоординат
По столбцам этой матрицы записаны координаты новых базисных векторов
Например, тот поворот, который мы недавно получили в матричном виде запишется так:
Помните, что для подсчёта координат вектора нужно сделать обратную операцию?
Так вот, в матрицах это буквально так и происходит, нужно, всего лишь, обратить матрицу! (нам сейчас не сильно важно, как это делается, да и в коде это обычно одна строчка)
Наш поворот в данном случае будет записан вот так:
*Я записываю базисные векторы в строку, а координаты векторов в столбец, это просто соглашение.
Поворот лишь частный пример преобразования, на следующем видео показаны различные преобразования и соответствующие им изменение координат вектора.
Что же с Data science?
Представьте, что вы работаете с датасетом о недвижимости и у вас есть два признака:
- Площадь дома (в м²)
- Стоимость дома (в у.е.)
Очевидно, что эти признаки сильно зависимы (коррелированы): чем больше площадь, тем выше цена. Если нанести точки на плоскость, они вытянутся вдоль диагонали — это похоже на «сплюснутое облако».
Теперь спросим себя: можно ли найти такой новый базис, в котором эти два признака станут независимыми (некоррелированными)? Оказывается, да — это называют главными компонентами (PCA).
Геометрический смысл:
Заголовок раздела «Геометрический смысл:»- Мы поворачиваем оси так, чтобы первая новая ось (первая главная компонента) указывала вдоль “главного” направления (как бы вдоль самой длинной части облака).
- Вторая новая ось перпендикулярна первой и «ловит» оставшийся разброс (в нашем примере — отклонения от общей линии цена–площадь).
В этом новом базисе координаты точек:
- Первая координата — это проекция на главную ось (грубо говоря, «общий размер» объекта).
- Вторая координата — это отклонение от пропорциональности (например, аномально дорогой или дешёвый дом для своей площади).
И, что важно, эти две новые координаты уже не коррелируют между собой — мы «выпрямили» исходную зависимость.
*Ещё, этот алгоритм часто работает с алгоритмом из предыдущего урока (где мы “сжимали” пространство для сжатия данных).
Можно сначала найти самые важные направления (например, 30 из 100) и остальные 70 просто схлопнуть.
Да, часть данных потеряется, но основа останется.
Часто оставшиеся данные могут даже мешать создавая лишний шум.
Заметно подробнее мы разберём эти два алгоритма чуть позже.
Представьте, что вы анализируете данные о росте людей. Изначально рост был записан в метрах (базисный вектор равен 1 метру). Вы решили изменить систему координат и перевели данные в сантиметры. То есть ваш новый базисный вектор стал в 100 раз короче старого ().
Что произойдет с числовым значением координаты (числом метров/сантиметров) конкретного человека в новой системе координат?
В целом, когда мы пользуемся какими-либо алгоритмами работы с данными очень важно отслеживать, зависят ли они от выбора базиса.
Если алгоритм явно показывает какую-то информацию, но его выводы меняются при повороте, то есть два варианта:
-
Алгоритм не особо рабочий и нужно разобраться, почему поворот резко меняет его выводы.
-
У данных есть жёсткая привязка к конкретным осям. В таком случае это всё равно нужно помечать при работе.
Например, если наша задача найти кластеры в данных (скопления точек), чаще всего сами скопления они не зависят от точки обзора.
Классический алгоритм k-means, в стандартной реализации, устойчив к поворотам пространства, но не устойчив к его масштабированию, поэтому, за этим нужно строго следить.
В будущих уроках этот алгоритм будет подробнее разобран.