Геометрический подход к визуализации многомерных данных

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.
Визуализация многомерных данных очень полезна для выявления их важных закономерностей и свойств. Для этой цели используются алгоритмы снижения размерности. Среди наиболее распространенных алгоритмов можно отметить метод главных компонент (англ. principal component analysis, PCA) и стохастическое вложение соседей с t-распределением (англ. t-distributed Stochastic Neighbor Embedding, t-SNE). Оба этих алгоритма обладают высокой временной сложностью: $inline$O(n^3)$inline$ у PCA, $inline$O(n^2)$inline$ у t-SNE, где $inline$n$inline$ — количество объектов. К тому же у t-SNE есть по меньшей мере 3 гиперпараметра, к подбору которых он очень чувствителен. Я хочу вам рассказать о новом алгоритме полигональной системы координат (англ. polygonal coordinate system, PCS). Это алгоритм без гиперпараметров и со сложностью $inline$O(n)$inline$ от числа объектов.

Описание алгоритма


Полигональная система координат (PCS) — это способ представить входные вектора размерности $inline$S$inline$ на двумерной плоскости. Для этой цели в $inline$S$inline$-мерном пространстве признаков

$$display$$\mathcal{X} = \{x_i, x_i \in \mathbb{R}^S, 1 \leqslant i \leqslant N\}$$display$$

$inline$N$inline$ вещественные точки представляются в виде правильных многоугольников с $inline$S$inline$ сторонами длины $inline$u$inline$ на плоскости, обозначается как $inline$S\mbox{-}P_u$inline$. Его также называют межпространством, промежуточной стадией между большой размерностью и двумерной плоскостью. Многоугольники со сторонами 1 называются унитарными и обозначаются как $inline$S\mbox{-}P_1$inline$ или просто $inline$S\mbox{-}P$inline$.
image
Результирующее двумерное пространство задается двумя осями — горизонтальная $inline$w$inline$ и вертикальная $inline$h$inline$. Каждая сторона многоугольника $inline$\vec{\mathcal{X}_j}$inline$ представляет собой одну координату изначального $inline$S$inline$-мерного пространства. На рисунке выше представлены два многоугольника для (a) 3-мерного пространства признаков и (b) 6-мерного пространства. На рисунке $inline$\vec{\mathcal{X}_j}$inline$ — это метавектор, то есть задает множество векторов в одном направлении, но различной длины. Он обозначает проекцию $inline$j$inline$-й координаты точки на $inline$j$inline$-ю сторону многоугольника.

Алгоритм PCS состоит из трех шагов:

1) Нормализация данных
2) Проекция данных в межпространство
3) Проекция на плоскость.

Шаг 1. Нормализация данных



Это самый простой шаг и заключается в min-max нормализации признаков:

$$display$$z_j=\frac{\mathcal{X}_j-min(\mathcal{X}_j)}{max(\mathcal{X}_j)-min(\mathcal{X}_j)}$$display$$



Эта нормализация нужна, чтобы результирующий многоугольник был унитарным и правильным.

Шаг 2. Проекция данных в межпространство


Рассмотрим угол $inline$\theta_j$inline$ на рисунке выше. $inline$\theta_j$inline$ — это угол от оси $inline$w$inline$ до $inline$\vec{\mathcal{X}_j}$inline$ в положительном направлении. Он равен (a) $inline$60^{\circ}$inline$ и (b) $inline$150^{\circ}$inline$. При этом каждый вектор $inline$\vec{\mathcal{X}_j}$inline$ будет образовывать такой угол $inline$\theta_j$inline$, отсюда получаем последовательность из $inline$S$inline$ углов, считая по часовой стрелке. Первый угол в последовательности $inline$\gamma$inline$ будет наибольшим и выражается как функция от внутреннего угла многоугольника $inline$\alpha=\frac{180(S-2)}{S}$inline$ как $inline$\gamma=\alpha + \frac{180(1+(S\;mod\;2))}{S}$inline$. Так как позиция угла в последовательности важна, то нумерацию сторон многоугольника осуществим по правилу: начинать снизу многоугольника со второго квадранта и двигаться по часовой стрелке:

image

Тогда последовательность углов определяется так:

$$display$$\theta_j=(\gamma+\alpha (j−1)$$display$$

Источник: https://habr.com/ru/post/483622/


Интересные статьи

Интересные статьи

Всем привет! Меня зовут Дмитрий Андриянов, я Flutter-разработчик в Surf. В этой статье я расскажу про бесшовную миграцию данных при установке новой версии приложения, написанного на Fl...
Прим. перев.: Jaana Dogan — опытный инженер из Google, которая в данный момент занимается вопросами наблюдаемости production-сервисов компании, написанных на Go. В этой статье, сниска...
Приветствую вас (лично вас, а не всех кто это читает)! Сегодня мы: Создадим приложение (навык) Алисы с использованием нового (октябрь 2019) сервиса Yandex Cloud Functions. Настроим н...
Корпорация Microsoft на последней версии операционной системы Win10 демонстрирует нам чудеса возможностей обновления. Всех, кто не хочет потерять данные от обновления 1903, приглашаем под кат. ...
"Какого дьявола я должен помнить наизусть все эти чёртовы алгоритмы и структуры данных?". Примерно к этому сводятся комментарии большинства статей про прохождение технических интервью. Основной ...