Итак, мы поняли, что данные часто лежат на искривлённой поверхности, но как найти эту поверхность?
Первое, что нужно понять: чаще всего мы не будем математически искать точную поверхность, мы будем работать чисто с расстояниями таким образом, чтобы они сами учитывали возможную "кривизну" в данных.
Разберёмся по шагам:
Шаг 1. Отбрасываем глобальные линейки
Первая и главная идея: мы перестаём верить в глобальные евклидовы расстояния
В исходном пространстве прямая линия между двумя точками часто проходит сквозь пустоту, а не по поверхности данных
Мы можем измерить расстояние по прямой между носом и затылком человека, но это не будет соответствовать расстоянию, которое пройдёт фломастер, чтобы нарисовать "по лицу" линию между ними.
Получается, сейчас нужно понять, как идти по поверхности.
Шаг 2. Смотрим на локальных соседей
Хотя глобально поверхность изогнута, локально она почти плоская, поэтому в исходном пространстве, если две точки очень близко друг к другу, они, скорее всего, являются соседями и на поверхности.
Соединим такие близкие точки условным маршрутом.
Получается условная паутина (граф), который показывает маршруты между точками
То есть, если мы хотим понять расстояние от Москвы до Нью-Йорка, нам нужно считать расстояния просто до близких городов и "шагать" через них маленькими шажками.
Полученная ломаная будет очень близка к тому, как если бы мы шли по земле.
Тогда, получится сетка из этих городов и мы сможем примерно по этой сетке понять нужное расстояние.
Эта сетка и есть полученный граф.
Шаг 3. Всё, что осталось — разложить на плоскости (плоском пространстве)
Этот шаг делиться на две части:
1. Понять какая размерность нам нужна
2. Понять как это всё выпрямить