Мое понимание t-SNE и приближения Барнса-Хата заключается в том, что все точки данных необходимы для того, чтобы все силовые взаимодействия могли быть рассчитаны одновременно, и каждая точка могла быть скорректирована на 2-й (или более низкой размерности) карте.
Существуют ли версии t-sne, которые могут эффективно работать с потоковыми данными? Поэтому, если мои наблюдения поступают по одному, он найдет наилучшее местоположение на 2-й карте для размещения нового наблюдения или постоянно обновляет все точки на 2-й карте, чтобы учесть новые наблюдения.
Будет ли это вообще иметь смысл или это идет вразрез с настройкой t-sne.
Ответы:
У меня был точно такой же вопрос, и я разместил его на YouTube-видео лекции CS231n, прочитанной Андреем Карпати несколько недель назад. Вот вопрос, который я разместил, за которым последовал ответ Андрея:
https://www.youtube.com/watch?v=ta5fdaqDT3M&lc=z12ji3arguzwgxdm422gxnf54xaluzhcx
Q:
A:
источник
При работе с потоковыми данными вам может не потребоваться / не нужно встраивать все точки истории в одну карту t-SNE. В качестве альтернативы вы можете выполнить онлайн-встраивание , выполнив следующие простые шаги:
выберите временное окно длительностью T, достаточно длинное, чтобы каждый интересующий образец появлялся как минимум пару раз в длительности окна.
прокрутите окно по мере поступления потоков данных с шагом по времени dt, намного меньшим, чем T. Для каждой позиции окна вычислите вложение t-SNE точек данных во временное окно.
Посеять каждое вложение с результатом предыдущего. В t-SNE необходимо выбрать начальные координаты точек данных в низкоразмерном пространстве. В нашем случае, поскольку мы выбираем dt, намного меньший, чем T, два последовательных вложения разделяют большинство своих точек данных. Для всех общих точек данных сопоставьте их начальные координаты в текущем встраивании с их окончательными координатами в предыдущем встраивании . Этот шаг обеспечит согласованное представление похожих шаблонов в последующих встраиваниях. (в реализации sklearn в python параметр seed равен «init». По умолчанию реализация sklearn устанавливает начальную позицию точек случайным образом)
Примечание 1. Важно, чтобы интересующие шаблоны появлялись хотя бы один раз в любом заданном временном окне, чтобы память представления не терялась, когда окно скользит по набору данных. Действительно, t-SNE обычно не сходится к уникальному решению, а только к локальному минимуму, поэтому, если память потеряна, похожий шаблон может быть представлен совершенно по-разному в двух случаях внедрения.
Примечание 2: Этот метод особенно актуален при работе с нестационарными временными рядами, где желательно отслеживать паттерны, которые медленно развиваются во времени. Действительно, каждое вложение здесь специально предназначено для небольшого временного окна, в котором оно вычисляется, гарантируя, что оно наилучшим образом фиксирует временную локальную структуру (в отличие от полного встраивания всего нестационарного набора данных).
Примечание 3: В этом методе последовательные вложения не могут быть распараллелены, потому что нужно получить результат предыдущего вложения, чтобы заполнить следующее. Однако, поскольку начальное число (то есть начальные координаты точек) хорошо выбрано для большинства точек (все общие точки между последовательными вложениями), вложение обычно сходится очень быстро, всего за несколько итераций.
Пример применения этого метода к нестационарным временным рядам см. В этой статье ( ICLR 2016, Изучение устойчивых представлений в изменяющемся мире с онлайн-сервисом t-SNE: подтверждение концепции в певчей птице ), где он был успешно применен отслеживать появление слогов в процессе разработки в певчей птице.
источник
Недавно был опубликован вариант, названный A-tSNE, который поддерживает динамическое добавление новых данных и уточнение кластеров либо на основе областей интересов, либо путем ввода данных пользователем. В статье, приведенной ниже, есть несколько хороших примеров этого:
Образец цитирования: arXiv: 1512.01655
источник
Приближение Барнса-Хата делает t-SNE очень масштабируемым (по крайней мере, вы можете использовать его с 100 000 строк, я пробовал). Вы можете позвонить из R: Rtsne
источник
Приближение Барнса-Хата теперь является методом по умолчанию в scikit-learn начиная с версии 0.17.0:
источник