t-distributed Stochastic Neighbor Embedding (t-SNE)
t-SNE отображает многомерные данные в 2D или 3D так, чтобы близкие точки оставались соседями, выявляя кластеры. Как работает метод, что такое perplexity, какие есть подводные камни и как выглядит код.
Стохастическое вложение соседей с t-распределением (t-SNE) — нелинейный метод снижения размерности, который отображает точки многомерных данных на двумерную или трёхмерную карту так, чтобы точки-соседи в исходном пространстве оставались соседями на карте. Лоренс ван дер Маатен и Джеффри Хинтон представили этот метод в статье 2008 года в Journal of Machine Learning Research. Это стандартный инструмент для визуализации данных, в том числе эмбеддингов, признаков изображений и данных об экспрессии генов отдельных клеток: в сотнях измерений скрываются группы, которые становятся видны на диаграмме рассеяния в 2D.
Как работает t-SNE#
t-SNE преобразует расстояния в вероятности в обоих пространствах, а затем перемещает точки карты, пока два набора вероятностей не совпадут:
- Сходство в многомерном пространстве: Для каждой точки t-SNE строит распределение Гаусса по расстояниям до остальных точек и преобразует расстояния в вероятности выбрать каждую точку в качестве соседа. Ширина каждого распределения настраивается так, чтобы его перплексия — приблизительное эффективное число соседей — соответствовала заданному пользователем значению. Поэтому для плотных областей используются узкие распределения Гаусса, а для разреженных — широкие.
- Сходство в пространстве пониженной размерности: На карте сходство вычисляется по распределению Стьюдента с одной степенью свободы. Его тяжёлые хвосты позволяют точкам, умеренно удалённым друг от друга, располагаться далеко. Это помогает решить проблему скученности: на двумерной карте недостаточно места, чтобы разместить всех умеренно близких соседей многомерной точки.
- Оптимизация: Градиентный спуск перемещает точки карты, минимизируя расхождение Кульбака — Лейблера между двумя распределениями. На раннем этапе преувеличения сходство в многомерном пространстве умножается на 12 в scikit-learn, благодаря чему естественные кластеры быстро формируются в компактные, хорошо разделённые группы.
Точный t-SNE сравнивает каждую пару точек, поэтому вычислительные затраты растут квадратично с размером набора данных. Аппроксимация Барнса — Хата, используемая по умолчанию в scikit-learn, снижает их до O(N log N) для двумерных и трёхмерных карт, а реализации с ускорением на основе БПФ, например openTSNE, обрабатывают миллионы точек.
Перплексия и чтение графика t-SNE#
Перплексия — основной параметр. Обычно используют значения от 5 до 50; по умолчанию в scikit-learn установлено 30. Значение должно быть меньше числа точек. Низкая перплексия акцентирует очень локальную структуру и может разбить одну группу на фрагменты, а высокая объединяет соседние группы и лучше показывает общую структуру. Поскольку оптимизация невыпуклая, разные случайные начальные значения могут приводить к разным картам.
Из-за трёх особенностей графики t-SNE легко неверно истолковать. Размеры кластеров на карте мало говорят о распределении исходных кластеров: t-SNE расширяет плотные группы и сжимает разреженные. Расстояния между кластерами тоже ненадёжны, а при низкой перплексии даже случайный шум может выглядеть как кластеры. В TSNE из scikit-learn также нет метода transform, поэтому на уже построенной карте нельзя разместить новые точки без повторного вычисления. Координаты t-SNE редко используют как входные признаки для других моделей.
t-SNE, PCA и UMAP#
Метод главных компонент (PCA) — линейный и детерминированный метод, который сохраняет направления наибольшей глобальной дисперсии и позволяет мгновенно проецировать новые точки. t-SNE — нелинейный и стохастический метод, сохраняющий локальные соседства. Эти методы часто применяют вместе: сначала с помощью PCA сокращают размерность данных до примерно 50, а затем запускают t-SNE, чтобы уменьшить шум и ускорить вычисления. Кроме того, t-SNE в scikit-learn по умолчанию инициализирует карту с помощью PCA, сохраняя больше элементов глобальной структуры. UMAP, представленный в 2018 году, также строит граф соседей, обычно быстрее работает на больших наборах данных, часто лучше сохраняет глобальную структуру и может добавлять новые точки на уже существующую карту.
В этом примере рукописные цифры размером 64 пикселя из набора данных scikit-learn проецируются в 2D двумя методами, а затем измеряется достоверность — степень, в которой ближайшие соседи каждой точки на карте были её соседями и в пространстве размерностью 64:
from sklearn.datasets import load_digits
from sklearn.decomposition import PCA
from sklearn.manifold import TSNE, trustworthiness
# 1,797 handwritten digits, each an 8x8 image flattened to 64 features
X, y = load_digits(return_X_y=True)
# Project to 2D with a linear method and with t-SNE
X_pca = PCA(n_components=2).fit_transform(X)
X_tsne = TSNE(n_components=2, perplexity=30, random_state=0).fit_transform(X)
# Trustworthiness near 1.0 means a point's 2D neighbors were also its 64D neighbors
print(f"PCA trustworthiness: {trustworthiness(X, X_pca, n_neighbors=10):.3f}")
print(f"t-SNE trustworthiness: {trustworthiness(X, X_tsne, n_neighbors=10):.3f}")Скрипт выводит 0.830 для PCA и 0.993 для t-SNE. При сведении 64 измерений к двум линейным направлениям многие точки оказываются рядом с цифрами, которые были далеко от них в 64-мерном пространстве. Карта t-SNE сохраняет почти все исходные связи между 10 ближайшими соседями.
Примеры применения в реальных условиях#
- Изучение выученных признаков: Проекция результатов извлечения признаков нейросетью показывает, образуют ли визуально схожие классы отдельные группы. Модели YOLO26 возвращают по одному вектору признаков на изображение через
model.embed(); по умолчанию он берётся из предпоследнего слоя. Карта t-SNE этих векторов показывает, как модель, обученная на пользовательских данных, разделяет классы. - Формирование набора данных: Изображения, оказавшиеся на островке другого класса, часто размечены неверно, а плотные группы почти идентичных точек указывают на дубликаты.
- Эмбеддинги слов и документов: На картах векторов слов близкие по смыслу слова — например, названия стран или числительные — располагаются в соседних группах.
- Геномика отдельных клеток: Исследователи сводят экспрессию тысяч генов в каждой клетке к двум измерениям, чтобы определять типы клеток. Раньше t-SNE долго оставался стандартным методом такого анализа, пока многие группы не перешли на UMAP.










