Открыть сервис

t-SNE

t-SNE (t-distributed Stochastic Neighbor Embedding, t-распределённое стохастическое вложение соседей) — это алгоритм машинного обучения, предназначенный для визуализации многомерных данных путём их проекции на двумерное или трёхмерное пространство. Относится к классу методов нелинейного уменьшения размерности (manifold learning) и широко применяется в анализе данных, биоинформатике, компьютерном зрении и обработке естественного языка для выявления скрытых структур и кластеров в сложных наборах данных.

История

Алгоритм t-SNE был предложен в 2008 году нидерландским учёным Лоренсом ван дер Маатеном (Laurens van der Maaten) и британским статистиком Джеффри Хинтоном (Geoffrey Hinton) как развитие более раннего метода SNE (Stochastic Neighbor Embedding), опубликованного Хинтоном и Сами Роуисом (Sam Roweis) в 2002 году. Основной целью разработки было преодоление ограничений SNE, связанных с трудностью оптимизации и эффектом «сжатия» точек в центре визуализации.

В 2014 году ван дер Маатен выпустил библиотеку для Python (scikit-learn), которая сделала t-SNE доступным для широкого круга исследователей. С тех пор алгоритм стал стандартным инструментом в разведочном анализе данных, особенно в областях, где многомерные данные (например, генетические профили или векторы слов) требуют интерпретации через визуализацию.

Принцип работы

Основная идея

t-SNE преобразует расстояния между точками в многомерном пространстве в вероятности, отражающие сходство. Затем алгоритм ищет такое расположение точек в низкоразмерном пространстве (обычно 2D или 3D), при котором распределение вероятностей сходства между точками в низкоразмерном пространстве максимально близко к распределению в исходном пространстве.

Математическая основа

  1. Вычисление сходства в исходном пространстве: Для каждой пары точек \(x_i\) и \(x_j\) в многомерном пространстве вычисляется условная вероятность \(p_{j|i}\), которая пропорциональна гауссову ядру от евклидова расстояния:

\[ p_{j|i} = \frac{\exp(-\|x_i - x_j\|^2 / 2\sigma_i^2)}{\sum_{k \neq i} \exp(-\|x_i - x_k\|^2 / 2\sigma_i^2)} \] Параметр \(\sigma_i\) (дисперсия гауссианы) подбирается для каждой точки индивидуально с помощью бинарного поиска, чтобы энтропия распределения \(P_i\) была равна заданному значению, определяемому гиперпараметром perplexity (запутанность).

  1. Симметризация: Симметричная вероятность сходства \(p_{ij}\) определяется как среднее арифметическое \(p_{j|i}\) и \(p_{i|j}\):

\[ p_{ij} = \frac{p_{j|i} + p_{i|j}}{2N} \] где \(N\) — количество точек. Это гарантирует, что \(p_{ij} = p_{ji}\) и \(\sum_{ij} p_{ij} = 1\).

  1. Вычисление сходства в низкоразмерном пространстве: Для точек \(y_i\) и \(y_j\) в низкоразмерном пространстве используется t-распределение Стьюдента с одной степенью свободы (распределение Коши) вместо гауссова ядра:

\[ q_{ij} = \frac{(1 + \|y_i - y_j\|^2)^{-1}}{\sum_{k \neq l} (1 + \|y_k - y_l\|^2)^{-1}} \] Выбор t-распределения решает проблему «сжатия»: его «тяжёлые хвосты» позволяют точкам, которые далеки в исходном пространстве, располагаться на умеренных расстояниях в низкоразмерном, не создавая артефактов.

  1. Минимизация расхождения: Алгоритм минимизирует расхождение Кульбака — Лейблера (KL-дивергенцию) между распределениями \(P\) и \(Q\) с помощью градиентного спуска:

\[ KL(P \| Q) = \sum_{i \neq j} p_{ij} \log \frac{p_{ij}}{q_{ij}} \] Градиент функции потерь имеет вид: \[ \frac{\partial KL}{\partial y_i} = 4 \sum_j (p_{ij} - q_{ij})(y_i - y_j)(1 + \|y_i - y_j\|^2)^{-1} \]

Гиперпараметры

Преимущества и недостатки

Преимущества

Недостатки

Применение

Биоинформатика и геномика

t-SNE активно используется для визуализации данных одноклеточного секвенирования РНК (scRNA-seq), где каждая клетка описывается тысячами генов. Алгоритм помогает выявлять субпопуляции клеток, маркеры и редкие типы. Например, в проекте Human Cell Atlas t-SNE применяется для кластеризации клеток по их транскриптомным профилям.

Обработка естественного языка (NLP)

Векторные представления слов (word embeddings), такие как Word2Vec или GloVe, имеют размерность 100–300. t-SNE позволяет визуализировать семантические отношения между словами: синонимы, термины из одной предметной области или грамматические формы часто образуют компактные кластеры.

Компьютерное зрение

Признаки, извлечённые из глубоких нейронных сетей (например, из последнего полносвязного слоя), могут быть визуализированы с помощью t-SNE для анализа того, как сеть группирует изображения по классам или атрибутам. Это используется для диагностики переобучения и поиска ошибок в данных.

Финансовый анализ

t-SNE применяется для визуализации портфелей акций, выявления аномалий в транзакциях и кластеризации клиентов по поведенческим паттернам. Однако из-за чувствительности к шуму в финансовых данных требуется тщательная предобработка.

Альтернативы и сравнение

PCA (Principal Component Analysis)

PCA — линейный метод, который сохраняет глобальную дисперсию, но плохо работает с нелинейными структурами. t-SNE, напротив, превосходно выявляет локальные кластеры, но искажает глобальную геометрию. На практике часто сначала применяют PCA для уменьшения размерности до 30–50 компонент (чтобы снизить шум и ускорить t-SNE), а затем — t-SNE.

UMAP (Uniform Manifold Approximation and Projection)

UMAP (2018) — более современный метод, который сочетает сохранение локальной структуры (как t-SNE) с лучшим сохранением глобальной топологии. UMAP быстрее, масштабируется на большие наборы данных (до миллионов точек) и менее чувствителен к гиперпараметрам. Однако t-SNE остаётся более популярным для малых и средних наборов данных благодаря своей интерпретируемости и обширной документации.

t-SNE vs. MDS (Multidimensional Scaling)

MDS (многомерное шкалирование) стремится сохранить все попарные расстояния, что делает его подходящим для глобальных структур, но неэффективным для выявления кластеров в нелинейных многообразиях. t-SNE значительно превосходит MDS в задачах визуализации кластеров.

Реализации

Наиболее популярная реализация t-SNE доступна в библиотеке scikit-learn для Python (sklearn.manifold.TSNE). Другие реализации включают:

Источники

  1. Van der Maaten, L., & Hinton, G. (2008). Visualizing Data using t-SNE. Journal of Machine Learning Research, 9, 2579–2605.
  2. Van der Maaten, L. (2014). Accelerating t-SNE using Tree-Based Algorithms. Journal of Machine Learning Research, 15, 3221–3245.
  3. Hinton, G., & Roweis, S. (2002). Stochastic Neighbor Embedding. Advances in Neural Information Processing Systems, 15.
  4. McInnes, L., Healy, J., & Melville, J. (2018). UMAP: Uniform Manifold Approximation and Projection for Dimension Reduction. arXiv:1802.03426.
  5. Документация библиотеки scikit-learn: sklearn.manifold.TSNE.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →