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

Как рассчитать новые координаты базисных векторов?
Для этого нужно спроецировать повёрнутые вектора и на изначальные и
А чтобы найти координаты уже имеющегося стороннего вектора в новой системе нужно нужно спроецировать этот вектор на новые базисные вектора и
Тут важно понять, что проекция происходит “вдоль” остальных векторов и она не обязательно перпендикулярная (именно такая проекция и определяет координаты вектора)
На следующей картинке видно, как в системе “кривых” координат происходит такая проекция

Посмотрим, что будет, если умножить вектор на 2
Не трудно понять, что тогда первая координата нашего вектора v уменьшится в 2 раза (раз линейка увеличилась в 2 раза)
Аналогичным образом работают и остальные преобразования
Поэтому, чтобы получить новые координаты имеющегося вектора нужно сделать как бы всё “наоборот”, относительно того, как мы меняли базис
Рассмотрим простой пример: повернём базис на угол

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