t-Distributed Стохастическое Соседнее Встраивание
Y = tsne(X)Y = tsne(X,Name,Value)[Y,loss]
= tsne(___) изменяет вложения с помощью опций, заданных одним или несколькими аргументами пары "имя-значение".Y = tsne(X,Name,Value)
Ирисовый набор данных Фишера имеет четырехмерные измерения ирисовых диафрагм и соответствующую классификацию в разновидности. Визуализируйте эти данные путем сокращения размерности с помощью tsne.
load fisheriris rng default % for reproducibility Y = tsne(meas); gscatter(Y(:,1),Y(:,2),species)

Используйте различные метрики расстояния, чтобы попытаться получить лучшее разделение между разновидностями в ирисовых данных Фишера.
load fisheriris rng('default') % for reproducibility Y = tsne(meas,'Algorithm','exact','Distance','mahalanobis'); subplot(2,2,1) gscatter(Y(:,1),Y(:,2),species) title('Mahalanobis') rng('default') % for fair comparison Y = tsne(meas,'Algorithm','exact','Distance','cosine'); subplot(2,2,2) gscatter(Y(:,1),Y(:,2),species) title('Cosine') rng('default') % for fair comparison Y = tsne(meas,'Algorithm','exact','Distance','chebychev'); subplot(2,2,3) gscatter(Y(:,1),Y(:,2),species) title('Chebychev') rng('default') % for fair comparison Y = tsne(meas,'Algorithm','exact','Distance','euclidean'); subplot(2,2,4) gscatter(Y(:,1),Y(:,2),species) title('Euclidean')

В этом случае косинус, Чебычев и Евклидовы метрики расстояния дают довольно хорошее разделение кластеров. Но метрика расстояния Mahalanobis не дает хорошее разделение.
NaNtsne удаляет строки входных данных, которые содержат любые записи NaN. Поэтому необходимо удалить любые такие строки из данных о классификации перед графическим выводом.
Например, измените несколько случайных записей в ирисовых данных Фишера к NaN.
load fisheriris rng default % for reproducibility meas(rand(size(meas)) < 0.05) = NaN;
Встройте четырехмерные данные в две размерности с помощью tsne.
Y = tsne(meas,'Algorithm','exact');
Warning: Rows with NaN missing values in X or 'InitialY' values are removed.
Определите, сколько строк было устранено из встраивания.
length(species)-length(Y)
ans = 22
Подготовьтесь строить результат путем определения местоположения строк meas, которые не имеют никаких значений NaN.
goodrows = not(any(isnan(meas),2));
Постройте результаты с помощью только строки species, которые соответствуют строкам meas без значений NaN.
gscatter(Y(:,1),Y(:,2),species(goodrows))

Найдите и 2D и 3-D вложения ирисовых данных Фишера и сравните потерю для каждого встраивания. Вероятно, что потеря ниже для 3-D встраивания, потому что это встраивание имеет больше свободы совпадать с исходными данными.
load fisheriris rng default % for reproducibility [Y,loss] = tsne(meas,'Algorithm','exact'); rng default % for fair comparison [Y2,loss2] = tsne(meas,'Algorithm','exact','NumDimensions',3); fprintf('2-D embedding has loss %g, and 3-D embedding has loss %g.\n',loss,loss2)
2-D embedding has loss 0.122669, and 3-D embedding has loss 0.0967385.
Как ожидалось 3-D встраивание имеет более низкую потерю.
Просмотрите вложения. Используйте цвета RGB [1 0 0], [0 1 0] и [0 0 1].
Для 3-D графика преобразуйте разновидности в числовые значения с помощью команды categorical, затем преобразуйте числовые значения в цвета RGB с помощью функции sparse можно следующим образом. Если v является вектором положительных целых чисел 1, 2, или 3, соответствуя данным о разновидностях, то команда
sparse(1:numel(v),v,ones(size(v)))
разреженная матрица, строки которой являются цветами RGB разновидностей.
gscatter(Y(:,1),Y(:,2),species,eye(3))
title('2-D Embedding')
figure v = double(categorical(species)); c = full(sparse(1:numel(v),v,ones(size(v)),numel(v),3)); scatter3(Y2(:,1),Y2(:,2),Y2(:,3),15,c,'filled') title('3-D Embedding') view(-50,8)

X Точки данныхn-by-m матрицаТочки данных, заданные как n-by-m матрица, где каждой строкой является один m - размерная точка.
tsne удаляет строки X, которые содержат любые значения NaN прежде, чем создать встраивание. Смотрите Результаты Графика с Входными данными NaN.
Типы данных: single | double
Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.
Y = tsne(X,'Algorithm','Exact','NumPCAComponents',50)'Algorithm' — алгоритм tsne'barneshut' (значение по умолчанию) | 'exact'Алгоритм tsne, заданный как 'barneshut' или 'exact'. Алгоритм 'exact' оптимизирует расхождение Kullback-Leibler дистрибутивов между исходным пробелом и встроенным пробелом. Алгоритм 'barneshut' выполняет аппроксимированную оптимизацию, которая быстрее и использует меньше памяти, когда количество строк данных является большим.
Для алгоритма 'barneshut' tsne использует knnsearch, чтобы найти самых близких соседей.
Пример: 'exact'
'Distance' — Метрика расстояния'euclidean' (значение по умолчанию) | 'seuclidean' | 'cityblock' | 'chebychev' | 'minkowski' | 'mahalanobis' | 'cosine' | 'correlation' | 'spearman' | 'hamming' | 'jaccard' | указатель на функциюМетрика расстояния, заданная одним из следующих. Для определений метрик расстояния смотрите pdist.
'euclidean' — Евклидово расстояние.
'seuclidean' — Стандартизированное Евклидово расстояние. Каждое координатное различие между строками в X и матрице запроса масштабируется путем деления на соответствующий элемент стандартного отклонения, вычисленного из .S = nanstd(X)
'cityblock' — Расстояние городского квартала.
'chebychev' — Расстояние Чебычева, которое является максимальным координатным различием.
'minkowski' — Расстояние Минковскего с экспонентой 2. Это совпадает с Евклидовым расстоянием.
'mahalanobis' — Расстояние Mahalanobis, вычисленное использование положительной определенной ковариационной матрицы nancov(X).
'cosine' — 1 минус косинус включенного угла между наблюдениями (обработанный как векторы).
Корреляция Один минус демонстрационная линейная корреляция между наблюдениями (обработанный как последовательности значений).
'spearman' — Один минус порядковая корреляция демонстрационного Копьеносца между наблюдениями (обработанный как последовательности значений).
'hamming' — Расстояние Хемминга, которое является процентом координат, которые отличаются.
'jaccard' — Один минус коэффициент Jaccard, который является процентом ненулевых координат, которые отличаются.
пользовательская функция расстояния — функция расстояния, заданная с помощью @ (например, @distfun). Для получения дополнительной информации см. Определения.
Во всех случаях использование tsne придало попарным расстояниям квадратную форму, чтобы вычислить Гауссово ядро в совместном распределении X.
Пример: 'mahalanobis'
'Exaggeration' — Размер естественных кластеров в данных4 (значение по умолчанию) | скалярное значение 1 или большеРазмер естественных кластеров в данных, заданных как скалярное значение 1 или больше.
Большое преувеличение заставляет tsne изучить большие объединенные вероятности Y и создает относительно больше пространства между кластерами в Y. tsne использует преувеличение в первых 99 итерациях оптимизации.
Если значение увеличений расхождения Kullback-Leibler на ранней стадии оптимизации, попытайтесь уменьшать преувеличение. См. tsne Настройки.
Пример: 10
Типы данных: single | double
'NumDimensions' — Размерность вывода Y2 (значение по умолчанию) | положительное целое числоРазмерность вывода Y, заданного как положительное целое число. Обычно установите NumDimensions на 2 или 3.
Пример 3
Типы данных: single | double
'NumPCAComponents' — Сокращение размерности PCA0 (значение по умолчанию) | неотрицательное целое числоСокращение размерности PCA, заданное как неотрицательное целое число. Прежде чем tsne встраивает высоко-размерные данные, он сначала уменьшает размерность данных к NumPCAComponents с помощью функции pca. Когда NumPCAComponents является 0, tsne не использует PCA.
Пример: 50
Типы данных: single | double
'Perplexity' — Эффективное количество локальных соседей каждой точки30 (значение по умолчанию) | положительная скалярная величинаЭффективное количество локальных соседей каждой точки, заданной как положительная скалярная величина. См. t-SNE Алгоритм.
Большее недоумение заставляет tsne использовать больше точек в качестве самых близких соседей. Используйте большее значение Perplexity для большого набора данных. Типичные значения Perplexity от 5 до 50. В алгоритме Barnes-хижины tsne использует min(3*Perplexity,N-1) в качестве количества самых близких соседей. См. tsne Настройки.
Пример: 10
Типы данных: single | double
'Standardize' — Нормируйте входные данныеfalse (значение по умолчанию) | trueНормируйте входные данные, заданные как false или true. Когда true, центры tsne и шкалы X путем деления столбцов на их стандартные отклонения.
Когда функции в X будут в различных шкалах, установите 'Standardize' на true. Сделайте это, потому что процесс обучения основан на самых близких соседях, таким образом, функции с крупными масштабами могут заменить вклад функций с мелкими масштабами.
Пример: true
Типы данных: логический
'InitialY' — Начальная буква встроила точки1e-4*randn(N,NumDimensions) (значение по умолчанию) | n-by-NumDimensions действительная матрицаНачальная буква встроила точки, заданные как n-by-NumDimensions действительная матрица, где n является количеством строк X. Алгоритм оптимизации tsne использует эти точки в качестве начальных значений.
Типы данных: single | double
'LearnRate' — Темп обучения для процесса оптимизации500 (значение по умолчанию) | положительная скалярная величинаТемп обучения для процесса оптимизации, заданного как положительная скалярная величина. Как правило, установите значения от 100 до 1000.
Когда LearnRate является слишком маленьким, tsne может сходиться к плохому локальному минимуму. Когда LearnRate является слишком большим, оптимизация может первоначально иметь увеличение расхождения Kullback-Leibler, а не уменьшение. См. tsne Настройки.
Пример: 1000
Типы данных: single | double
'NumPrint' — Итеративная частота отображения20 (значение по умолчанию) | положительное целое числоИтеративная частота отображения, заданная как положительное целое число. Когда парой "имя-значение" Verbose не является 0, tsne возвращает итеративное отображение после каждого NumPrint итерации. Если пара "имя-значение" Options содержит непустую запись 'OutputFcn', то выходные функции выполняются после каждого NumPrint итерации.
Пример: 20
Типы данных: single | double
Опции Опции оптимизации'MaxIter', 'OutputFcn' и 'TolFun'Опции оптимизации, заданные как структура, содержащая поля 'MaxIter', 'OutputFcn' и 'TolFun'. Создайте 'Options' с помощью statset или struct.
'MaxIter' — Положительное целое число, задающее максимальное количество итераций оптимизации. Значение по умолчанию: 1000.
'OutputFcn' Указатель на функцию или cell-массив указателей на функцию, задающий одну или несколько функций, чтобы вызвать после каждой оптимизации NumPrint итерации. Для получения дополнительной информации синтаксиса см. t-SNE Выходную функцию. Значение по умолчанию: [].
'TolFun' — Остановка критерия оптимизации. Оптимизация выходит, когда норма градиента расхождения Kullback-Leibler является меньше, чем 'TolFun'. Значение по умолчанию: 1e-10.
Пример: options = statset('MaxIter',500)
Типы данных: struct
'Theta' — Параметр компромисса Barnes-хижины0.5 (значение по умолчанию) | скаляр от 0 до 1Параметр компромисса Barnes-хижины, заданный как скаляр от 0 до 1. Более высокие значения дают более быструю, но менее точную оптимизацию. Применяется только, когда Algorithm является 'barneshut'.
Пример: 0.1
Типы данных: single | double
'Verbose' — Итеративное отображение0 (значение по умолчанию) | 1 | 2Итеративное отображение, заданное как 0, 1 или 2. Когда Verbose не является 0, tsne распечатывает сводную таблицу расхождения Kullback-Leibler и норму его градиента каждый NumPrint итерации.
Когда Verbose является 2, tsne также распечатывает отклонения Гауссовых ядер. tsne использует эти ядра в своем вычислении объединенной вероятности X. Если вы видите значительные различия в шкалах минимальных и максимальных отклонений, можно иногда получать более подходящие результаты путем перемасштабирования X.
Пример 2
Типы данных: single | double
Y Встроенные точкиn-by-NumDimensions матрицаВстроенные точки, возвращенные как n-by-NumDimensions матрица. Каждая строка представляет тот встроенная точка. n является количеством строк данных X, которые не содержат записей NaN. Смотрите Результаты Графика с Входными данными NaN.
loss — Расхождение Kullback-LeiblerРасхождение Kullback-Leibler между смоделированными дистрибутивами ввода и вывода, возвращенными как неотрицательный скаляр. Для получения дополнительной информации см. t-SNE Алгоритм.
Синтаксис пользовательской функции расстояния следующие.
function D2 = distfun(ZI,ZJ)tsne передает ZI и ZJ к вашей функции, и ваша функция вычисляет расстояние.
ZI является 1 n вектором, содержащим одну строку от X или Y.
ZJ является m-by-n матрица, содержащая несколько строк X или Y.
Ваша функция возвращает D2, который является m-by-1 вектор расстояний. j th элемент D2 является расстоянием между наблюдениями ZI и ZJ(j,:).
Если ваши данные не разреженны, то обычно встроенные функции расстояния быстрее, чем указатель на функцию.
tsne создает набор встроенных точек в низком мерном пространстве, относительные общие черты которого подражают тем из исходных высоко-размерных точек. Встроенные точки показывают кластеризацию в исходных данных.
Примерно, алгоритм моделирует исходные точки как прибывающий из Распределения Гаусса и встроенных точек как прибывающий из распределения t Студента. Алгоритм пытается минимизировать расхождение Kullback-Leibler между этими двумя дистрибутивами путем перемещения встроенных точек.
Для получения дополнительной информации см. t-SNE.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.