t-SNE со смешанными непрерывными и двоичными переменными

10

В настоящее время я изучаю визуализацию многомерных данных с использованием t-SNE. У меня есть некоторые данные со смешанными двоичными и непрерывными переменными, и данные, похоже, слишком быстро группируют двоичные данные. Конечно, это ожидается для масштабированных (между 0 и 1) данных: евклидово расстояние всегда будет наибольшим / наименьшим между двоичными переменными. Как следует работать со смешанными двоичными / непрерывными наборами данных, используя t-SNE? Должны ли мы отбросить двоичные столбцы? Это там другое metricмы можем использовать?

В качестве примера рассмотрим этот код Python:

x1 = np.random.rand(200)
x2 = np.random.rand(200)
x3 = np.r_[np.ones(100), np.zeros(100)]

X = np.c_[x1, x2, x3]

# plot of the original data
plt.scatter(x1, x2, c=x3)
# … format graph

поэтому мои необработанные данные:

необработанные данные

где цвет - это значение третьего признака (x3) - в 3D точки данных лежат в двух плоскостях (x3 = 0 плоскость и x3 = 1 плоскость).

Затем я выполняю t-SNE:

tsne = TSNE() # sci-kit learn implementation
X_transformed = StandardScaler().fit_transform(X)
tsne = TSNE(n_components=2, perplexity=5)
X_embedded = tsne.fit_transform(X_transformed)

с полученным сюжетом:

tsne_data

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

FChm
источник
1
Примечание: мне все еще интересно услышать комментарии по этому вопросу, а также о применимости UMAP к этому пространству.
FChm
Спасибо за награду, снова все еще заинтересован, но не потратил много времени на изучение этого, чтобы быть справедливым. Сегодня у меня может быть время для первоначального исследования и, если применимо, добавлю обновления.
FChm
2
Я столкнулся с этой проблемой на практике. Я думаю, что это не является специфическим для tSNE, но в равной степени повлияет на любой алгоритм дистанционного обучения, основанный на дистанции (включая кластеризацию). Я также думаю, что подходящее решение будет сильно зависеть от того, что представляют двоичные функции, и от некоторого экспертного суждения о том, насколько они важны. Поэтому я ищу ответ, который бы обсуждал различные возможные ситуации. Я уверен, что здесь нет единого решения для всех.
амеба

Ответы:

8

Отказ от ответственности: у меня есть только косвенные знания по этой теме, но, поскольку никто не ответил, я попробую

Расстояние важно

Любой метод уменьшения размерности, основанный на расстояниях (tSNE, UMAP, MDS, PCoA и, возможно, другие), эффективен только в качестве метрики расстояния, которую вы используете. Как правильно указывает @amoeba, не может быть единого решения для всех, вам нужно иметь метрику расстояния, которая отражает то, что вы считаете важными в данных, то есть строки, которые вы считаете одинаковыми, имеют небольшое расстояние и строки, которые вы бы хотели Считать разные имеют большое расстояние.

Как выбрать хороший показатель расстояния? Во-первых, позвольте мне немного отвлечься:

рукоположение

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

Важно то, что экологи имеют очень разнообразные наборы данных и имеют дело со смесью бинарных, целочисленных и вещественных признаков (например, наличие / отсутствие видов, количество наблюдаемых образцов, pH, температура). Они потратили много времени на размышления о расстояниях и преобразованиях, чтобы хорошо выполнять рукоположение. Я не очень хорошо разбираюсь в этой области, но, например, обзор разнообразия Legendre и De Cáceres Beta как дисперсии данных сообщества: различия в коэффициентах и разделениях показывают огромное количество возможных расстояний, которые вы, возможно, захотите проверить.

Многомерное масштабирование

Основным инструментом для определения местоположения является многомерное масштабирование (MDS), особенно неметрический вариант (NMDS), который я рекомендую вам попробовать в дополнение к t-SNE. Я не знаю о мире Python, но реализация R в metaMDSфункции veganпакета делает много трюков для вас (например, выполнение нескольких запусков до тех пор, пока не найдет два похожих).

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

Имейте в виду, что t-SNE был подвергнут критике как инструмент для получения понимания, см., Например, это исследование его подводных камней - я слышал, что UMAP решает некоторые из проблем, но у меня нет опыта работы с UMAP. Я также не сомневаюсь, что одной из причин, по которой экологи используют NMDS, является культура и инерция, возможно, UMAP или t-SNE на самом деле лучше. Я, честно говоря, не знаю.

Выкатывая свое расстояние

Если вы понимаете структуру ваших данных, готовые расстояния и преобразования могут оказаться не самыми подходящими для вас, и вы можете захотеть построить собственную метрику расстояния. Хотя я не знаю, что представляют ваши данные, было бы разумно рассчитать расстояние отдельно для вещественных переменных (например, используя евклидово расстояние, если это имеет смысл) и для двоичных переменных и добавить их. Обычными расстояниями для двоичных данных являются, например, расстояние Жакара или расстояние Косинуса . Возможно, вам придется подумать о некотором мультипликативном коэффициенте для расстояний, поскольку у Джакарда и Косинуса оба значения в независимо от количества объектов, в то время как величина евклидова расстояния отражает количество объектов.[0,1]

Слово предостережения

Все время вам следует помнить, что, поскольку у вас так много регуляторов для настройки, вы можете легко попасть в ловушку настройки, пока не увидите то, что хотели увидеть. Этого трудно полностью избежать при предварительном анализе, но вы должны быть осторожны.

Мартин Модрак
источник
1
+1. Здесь много хороших моментов, и мне нравятся ссылки на более старую литературу по рукоположению. Одна вещь, которая привлекла мое внимание: «Хорошая часть MDS заключается в том, что она также проецирует функции (столбцы), чтобы вы могли видеть, какие функции влияют на уменьшение размерности» - вы в этом уверены? Это не правда, насколько я понимаю; по крайней мере, это не более верно для MDS, чем для t-SNE.
амеба
@amoeba Вот где мои ограниченные знания приходят :-) Все, что я знаю, это то, что метод построения графиков по умолчанию для metaMDSграфиков, как образцов, так и функций (см., например, эту виньетку: cran.r-project.org/web/packages/vegan/vignettes/ intro-vegan.pdf )
Мартин Модрак,
Спасибо за ваши ответы и понимание. Сейчас я больше сосредоточен на UMAP, и я думаю, что определение некоторой меры подобия, такой как расстояние по Джакарду, может быть хорошим способом работы со смешанными типами переменных. Я не использовал MDS, но знаю об этом. Мне придется потратить некоторое время на понимание, если это будет полезно.
FChm
1
@ MartinModrák Я не знаю, что именно veganпакет делает там, но MDS / NMDS - это нелинейный и непараметрический метод (точно так же, как у t-SNE), и не существует «внутреннего» способа сопоставления исходных функций с размерами MDS. Я могу представить, что они вычисляют корреляции между оригинальными функциями и измерениями MDS; если это так, это может быть сделано для любого встраивания, включая t-SNE. Было бы интересно узнать, что именно veganделает.
амеба