Существуют ли версии t-SNE для потоковой передачи данных?


19

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

Существуют ли версии t-sne, которые могут эффективно работать с потоковыми данными? Поэтому, если мои наблюдения поступают по одному, он найдет наилучшее местоположение на 2-й карте для размещения нового наблюдения или постоянно обновляет все точки на 2-й карте, чтобы учесть новые наблюдения.

Будет ли это вообще иметь смысл или это идет вразрез с настройкой t-sne.


Приближение Барнса-Хата делает t-SNE очень масштабируемым (по крайней мере, вы можете использовать его с 100 000 строк, я пробовал). Вы можете позвонить по этому адресу
RUser4512

Эй спасибо! Я с удовольствием проголосую за ваш ответ, если вы добавите его в раздел ответов.
Том

3
Смотрите здесь для параметрической версии, реализованной с нейронной ntwork. lvdmaaten.github.io/publications/papers/AISTATS_2009.pdf
eyaler

Ответы:


15

У меня был точно такой же вопрос, и я разместил его на YouTube-видео лекции CS231n, прочитанной Андреем Карпати несколько недель назад. Вот вопрос, который я разместил, за которым последовал ответ Андрея:

https://www.youtube.com/watch?v=ta5fdaqDT3M&lc=z12ji3arguzwgxdm422gxnf54xaluzhcx

Q:

Нужен ли t-SNE целый пакет изображений (или, в более общем смысле, данных) для создания низкоразмерного пространства признаков? С помощью PCA вы можете создать низкоразмерное пространство элементов в пакете данных, а затем проецировать новые точки данных в это же пространство без необходимости «переподготовки». Это правда для t-SNE?

Я спрашиваю, потому что я заметил, что у scikit-learn есть t-SNE как часть его класса манифольда, но у этого модуля нет метода transform (), как у PCA. Так что, по крайней мере, в sklearn, казалось бы, это невозможно.

Мой вопрос сводится к этому. Как бы вы применили t-SNE в потоковой или сетевой ситуации, когда вы хотите постоянно обновлять визуализацию новыми изображениями? Предположительно, не хотелось бы применять алгоритм ко всей партии для каждого нового изображения.

A:

+ Эван Замир: да, это возможно с t-SNE, но, возможно, не поддерживается из коробки с обычными реализациями t-SNE. Обычно местоположение каждой точки является параметром в оптимизации, но вы также можете создать отображение из high-D -> low-D (например, нейронная сеть) и backprop через местоположения. Затем вы получаете функцию встраивания и можете проецировать новые точки. Так что в принципе ничто не мешает, но некоторые реализации могут не поддерживать это, так как это менее частый вариант использования.


11

При работе с потоковыми данными вам может не потребоваться / не нужно встраивать все точки истории в одну карту t-SNE. В качестве альтернативы вы можете выполнить онлайн-встраивание , выполнив следующие простые шаги:

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

  2. прокрутите окно по мере поступления потоков данных с шагом по времени dt, намного меньшим, чем T. Для каждой позиции окна вычислите вложение t-SNE точек данных во временное окно.

  3. Посеять каждое вложение с результатом предыдущего. В t-SNE необходимо выбрать начальные координаты точек данных в низкоразмерном пространстве. В нашем случае, поскольку мы выбираем dt, намного меньший, чем T, два последовательных вложения разделяют большинство своих точек данных. Для всех общих точек данных сопоставьте их начальные координаты в текущем встраивании с их окончательными координатами в предыдущем встраивании . Этот шаг обеспечит согласованное представление похожих шаблонов в последующих встраиваниях. (в реализации sklearn в python параметр seed равен «init». По умолчанию реализация sklearn устанавливает начальную позицию точек случайным образом)

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

Примечание 2: Этот метод особенно актуален при работе с нестационарными временными рядами, где желательно отслеживать паттерны, которые медленно развиваются во времени. Действительно, каждое вложение здесь специально предназначено для небольшого временного окна, в котором оно вычисляется, гарантируя, что оно наилучшим образом фиксирует временную локальную структуру (в отличие от полного встраивания всего нестационарного набора данных).

Примечание 3: В этом методе последовательные вложения не могут быть распараллелены, потому что нужно получить результат предыдущего вложения, чтобы заполнить следующее. Однако, поскольку начальное число (то есть начальные координаты точек) хорошо выбрано для большинства точек (все общие точки между последовательными вложениями), вложение обычно сходится очень быстро, всего за несколько итераций.

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


2
Добро пожаловать в сообщество. Самоплагиат не крути. Я ссылаюсь на ваш первый пост здесь . Конечно, мы можем использовать одно и то же обоснование для нескольких ответов, потенциально скопировать или вставить одну или две фразы или просто ссылку на предыдущие ответы напрямую. Однако, как говорится, не опускайте свои посты до дословной копии предыдущих ответов с измененным первым предложением. Это снижает качество содержания резюме и показывает плохое академическое спортивное мастерство с вашей стороны.
usεr11852 говорит восстановить Monic

5
@ usεr11852 Проблема была создана, потому что другой поток является дубликатом этого. Поэтому я закрыл другой, слил его с этим и удалил лишний ответ. В общем, Стефан, всякий раз, когда вам хочется публиковать один и тот же ответ в двух ветках, просто отметьте один из них как дубликат, чтобы мы могли объединить их.
whuber

2
@ usεr11852 Хорошо, извините за двойной ответ, я новый участник, поэтому я пока не знаю лучшие практики.
Стефан Дени

1
@whuber Спасибо за объединение вопросов и за головы!
Стефан Дени

1
Вы, кажется, потеряли 2 голосов в результате. Это прискорбно. +1 :) Добро пожаловать в резюме.
говорит амеба: восстанови Монику

7

Недавно был опубликован вариант, названный A-tSNE, который поддерживает динамическое добавление новых данных и уточнение кластеров либо на основе областей интересов, либо путем ввода данных пользователем. В статье, приведенной ниже, есть несколько хороших примеров этого:

Образец цитирования: arXiv: 1512.01655

Ориентированные и ориентированные на пользователя tSNE для прогрессивной визуальной аналитики Никола Пеццотти, Будевейн П.Ф. Лелиевельдт, Лорен ван дер Маатен, Томас Хельт, Эльмар Эйземанн, Анна Виланова

Резюме:

Прогрессивная визуальная аналитика направлена ​​на улучшение интерактивности в существующих методах аналитики посредством визуализации, а также взаимодействия с промежуточными результатами. Одним из ключевых методов анализа данных является уменьшение размерности, например, для создания 2D-вложений, которые можно эффективно визуализировать и анализировать. t-распределенное стохастическое вложение соседей (tSNE) - хорошо подходящий метод для визуализации нескольких многомерных данных. tSNE может создавать значимые промежуточные результаты, но страдает от медленной инициализации, что ограничивает его применение в Progressive Visual Analytics. Мы вводим управляемое приближение tSNE (A-tSNE), которое меняет скорость и точность, чтобы обеспечить интерактивное исследование данных. Мы предлагаем методы визуализации в реальном времени, включая решение на основе плотности и волшебную линзу для проверки степени приближения. С помощью этой обратной связи пользователь может принять решение о локальных уточнениях и управлять уровнем аппроксимации во время анализа. Мы демонстрируем нашу технику с несколькими наборами данных в реальном исследовательском сценарии и для анализа многомерных потоков в реальном времени, чтобы проиллюстрировать ее эффективность для интерактивного анализа данных.


Добро пожаловать на сайт. Мы пытаемся создать постоянное хранилище высококачественной статистической информации в форме вопросов и ответов. Таким образом, мы опасаемся ответов, содержащих только ссылки, из-за linkrot. Можете ли вы опубликовать полную ссылку и краткое изложение информации по ссылке, если она не работает?
gung - Восстановить Монику

6

Приближение Барнса-Хата делает t-SNE очень масштабируемым (по крайней мере, вы можете использовать его с 100 000 строк, я пробовал). Вы можете позвонить из R: Rtsne

О(Nжурнал(N))О(N2)


1
Я использовал его с плотностью 1K строк 250К - на самом деле это было довольно хорошо, но оно ограничено памятью.
Владимир Чупахин

2

Приближение Барнса-Хата теперь является методом по умолчанию в scikit-learn начиная с версии 0.17.0:

По умолчанию алгоритм вычисления градиента использует приближение Барнса-Хата, работающее за время O (NlogN). method = 'точный' будет работать на более медленном, но точном алгоритме за O (N ^ 2) времени. Точный алгоритм следует использовать, когда ошибки ближайшего соседа должны быть лучше, чем 3%. Однако точный метод не может масштабироваться до миллионов примеров. Новое в версии 0.17: Приблизительный метод оптимизации с помощью Barnes-Hut.


Это не решает вопрос. BH, хотя и быстрее, не поддерживает потоковую передачу. Может быть, вы имели в виду, что это комментарий к этому ответу .
Merv
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.