t-SNE (tsne) является алгоритмом для уменьшения размерности, который хорошо подходит для визуализации высоко-размерных данных. Имя обозначает t - распределил Стохастическое Соседнее Вложение. Идея состоит в том, чтобы встраивать высокомерные точки в низкие размерности таким образом, чтобы уважать сходства между точками. Близлежащие точки в высокомерном пространстве соответствуют ближайшим вложенным маломерным точкам, а отдаленные точки в высокомерном пространстве соответствуют удаленным вложенным маломерным точкам. (Как правило, невозможно точно соответствовать расстояниям между высоко-размерным и низко-размерным пространствами.)
tsne функция создает набор низкомерных точек из высоко-размерных данных. Как правило, вы визуализируете низкомерные точки, чтобы увидеть естественные кластеры в исходных высоко-размерных данных.
Алгоритм делает следующие общие шаги, чтобы встраивать данные в низкие размерности.
Вычислите парные расстояния между высокомерными точками.
Создайте стандартное σi отклонения для каждой высокомерной точки i так, чтобы perplexity каждой точки находилась на предопределенном уровне. Для определения недоумения см. «Вычисление расстояний», «Гауссовы отклонения» и «Сходства».
Вычислите similarity matrix. Это распределение вероятностей соединений X, заданное уравнением 1.
Создайте начальный набор низкомерных точек.
Итерационно обновляйте низкомерные точки, чтобы минимизировать расхождение Кулбака и Лейблера между Гауссовым распределением в высоко-размерном пространстве и t распределением в низкомерном пространстве. Эта процедура оптимизации является наиболее длительной частью алгоритма.
См. Ван дер Маатен и Хинтон [1].
Основной алгоритм t-SNE выполняет следующие шаги.
tsne сначала удаляет каждую строку входных данных X, которая содержит любые NaN значения. Затем, если Standardize Пара "имя-значение" true, tsne центрирует X путем вычитания среднего значения каждого столбца и масштабирует X путем деления его столбцов на их стандартные отклонения.
Оригинальные авторы van der Maaten и Hinton [1] рекомендуют уменьшить исходные данные X до более низкой размерности с помощью Principal Component Analysis (PCA). Вы можете задать tsne
NumPCAComponents Пара "имя-значение" с количеством размеров, которые вам нравятся, возможно, 50. Чтобы осуществлять больший контроль над этим шагом, предварительно обработайте данные с помощью pca функция.
После предварительной обработки, tsne вычисляет d расстояния (xi, xj) между каждой парой точек xi и xj в X. Вы можете выбрать различные метрики расстояния с помощью Distance Пара "имя-значение". По умолчанию, tsne использует стандартную евклидову метрику. tsne использует квадрат метрики расстояния в последующих вычислениях.
Затем для каждой i строк X, tsne вычисляет стандартное σi отклонения так, чтобы perplexity i строка равнялась Perplexity Пара "имя-значение". Недоумение определяется в терминах модели Гауссова распределения следующим образом. Как описывают ван дер Маатен и Хинтон [1], "Подобие xj точки данных xi точки данных является условной вероятностью, этот xi выбрал бы xj как своего соседа, если бы соседи были выбраны пропорционально их плотности вероятностей при Гауссове с центром в xi. Для ближайших точек данных, относительно высокий, в то время как для широко разделенных точек данных, будет почти бесконечно (для разумных значений отклонения Гауссова, σi) ".
Задайте условную вероятность j заданных i как
Затем задайте pij вероятностей соединений путем симметрии условных вероятностей:
| (1) |
где N - количество строк X.
У распределений все еще нет стандартных отклонений σi определенных в терминах Perplexity Пара "имя-значение". Предположим, Pi представляет условное распределение вероятностей по всем другим точкам данных, заданным xi точки данных. Недоумение распределения заключается в том,
где H (Pi) - энтропия Шеннона Pi:
Недоумение измеряет эффективное количество соседей точечных i. tsne выполняет двоичный поиск по σi, чтобы достичь фиксированной недоумения для каждого i точки.
Чтобы встраивать точки X в низкомерное пространство, tsne выполняет оптимизацию. tsne пытается минимизировать расхождение Куллбэка-Лейблера между модельным Гауссовым распределением точек в X и Студенческим t распределением точек Y в низкомерном пространстве.
Процедура минимизации начинается с начального набора точек Y. tsne создать точки по умолчанию как случайные распределенные по Гауссу точки. Можно также создать эти точки самостоятельно и включить их в 'InitialY' Пара "имя-значение" для tsne. tsne затем вычисляет сходство между каждой парой точек в Y.
Модель вероятностей, qij из распределения расстояний между точками yi и yj,
Используя это определение и модель расстояний X, заданных уравнением 1, расхождение Кулбака и Лейблера между P распределения соединений и Q,
Для последствий этого определения, см. Полезное нелинейное искажение.
Чтобы минимизировать расхождение Куллбэка-Лейблера, 'exact' алгоритм использует измененную процедуру градиентного спуска. Градиент относительно точек Y расхождения равен
где термин нормализации
Измененный алгоритм градиентного спуска использует несколько параметров настройки, чтобы попытаться достичь хорошего локального минимума.
'Exaggeration' - во время первых 99 шагов градиентного спуска, tsne умножает вероятности, pij из Уравнения 1, на значение преувеличения. Этот шаг имеет тенденцию создавать больше пространства между кластерами в выходе Y.
'LearnRate' — tsne использует адаптивное обучение для улучшения сходимости итераций градиентного спуска. Алгоритм спуска имеет итерационные шаги, которые являются линейной комбинацией предыдущего шага в спуске и текущего градиента. 'LearnRate' является умножителем градиента тока для линейной комбинации. Для получения дополнительной информации смотрите Jacobs [3].
Чтобы ускорить алгоритм t-SNE и сократить его использование памяти, tsne предлагает приблизительную схему оптимизации. Алгоритм Барнса-Хата группирует близлежащие точки вместе, чтобы снизить сложность и использование памяти шага оптимизации t-SNE. Алгоритм Барнса-Хата является приблизительным оптимизатором, а не точным оптимизатором. Существует неотрицательный параметр настройки Theta что влияет на компромисс между скоростью и точностью. Большие значения 'Theta' обеспечивают более быстрые, но менее точные результаты оптимизации. Алгоритм относительно нечувствителен к 'Theta' значения в области значений (0,2,0,8).
Алгоритм Барнса-Хата группирует близлежащие точки в маломерном пространстве и выполняет приблизительный градиентный спуск на основе этих групп. Идея, первоначально использованная в астрофизике, заключается в том, что градиент аналогичен для близлежащих точек, поэтому расчеты могут быть упрощены.
См. Ван дер Маатен [2].
Поскольку t-SNE часто хорошо разделяет кластеры данных, может показаться, что t-SNE может классифицировать новые точки данных. Однако t-SNE не может классифицировать новые точки. Внедрение t-SNE является нелинейной картой, которая зависит от данных. Чтобы встраивать новую точку в низкомерное пространство, вы не можете использовать предыдущее встраивание в качестве карты. Вместо этого снова запустите весь алгоритм.
t-SNE может занять много времени, чтобы обработать данные. Если у вас есть N точки данных в D размерах, которые вы хотите сопоставить с Y размерностями, то
Точные t-SNE берут порядок D * N2 операции.
Barnes-Hut t-SNE принимает заказ D * N log (N) * exp (dimension (Y)) операции.
Итак, для больших наборов данных, где N больше 1000 или около того, и где Y размерности встраивания равен 2 или 3, алгоритм Барнса-Хата может быть быстрее, чем точный алгоритм.
T-SNE отображает высокомерные расстояния на искаженные маломерные аналоги. Из-за более толстого хвоста распределения Student t в маломерном пространстве, tsne часто перемещает близкие точки ближе друг к другу и удаляется дальше, чем в высокомерном пространстве, как показано на следующем рисунке. Рисунок показывает распределения Гауссова и Студенческого t в точках, где плотности равны 0,25 и 0,025. Гауссова плотность относится к высокомерным расстояниям, а t - к маломерным расстояниям. Плотность t соответствует близким точкам, находящимся ближе, и дальним точкам, находящимся дальше, по сравнению с Гауссовой плотностью.
t = linspace(0,5); y1 = normpdf(t,0,1); y2 = tpdf(t,1); plot(t,y1,'k',t,y2,'r') hold on x1 = fzero(@(x)normpdf(x,0,1)-0.25,[0,2]); x2 = fzero(@(x)tpdf(x,1)-0.25,[0,2]); z1 = fzero(@(x)normpdf(x,0,1)-0.025,[0,5]); z2 = fzero(@(x)tpdf(x,1)-0.025,[0,5]); plot([0,x1],[0.25,0.25],'k-.') plot([0,z2],[0.025,0.025],'k-.') plot([x1,x1],[0,0.25],'g-',[x2,x2],[0,0.25],'g-') plot([z1,z1],[0,0.025],'g-',[z2,z2],[0,0.025],'g-') text(1.1,.25,'Close points are closer in low-D') text(2.4,.05,'Far points are farther in low-D') legend('Gaussian(0,1)','Student t (df = 1)') xlabel('x') ylabel('Density') title('Density of Gaussian(0,1) and Student t (df = 1)') hold off

Это искажение полезно, когда оно применяется. Он не применяется в таких случаях, как, когда Гауссово отклонение высоко, что снижает Гауссов пик и уплощает распределение. В таком случае tsne может перемещать точки сближения дальше, чем в исходном пространстве. Чтобы добиться полезного искажения,
Установите 'Verbose' Пара "имя-значение" с 2.
Настройте 'Perplexity' Пара "имя-значение" так что сообщаемая область значений отклонений не слишком далека от 1, и среднее отклонение близко 1.
Если можно достичь этой области значений отклонений, то применяется схема, и tsne искажение полезно.
Для эффективных способов настройки tsne, см. Ваттенберг, Виегас и Джонсон [4].
[1] ван дер Маатен, Лоренс и Джеффри Хинтон. «Визуализация данных с использованием t-SNE». J. Машинное обучение Research 9, 2008, pp. 2579-2605.
[2] ван дер Маатен, Лоренс. Барнс-Хат-СНЭ. arXiv:1301.3342 [cs.LG], 2013 год.
[3] Jacobs, Robert A. «Увеличение темпов сходимости посредством адаптации скорости обучения». Нейронные сети 1.4, 1988, с. 295-307.
[4] Ваттенберг, Мартин, Фернанда Виегас и Ян Джонсон. «Эффективное использование t-SNE». Дистилль, 2016. Доступно в How to Use t-SNE Effectively.