Что не так с t-SNE против PCA для уменьшения размеров с использованием R?

27

У меня есть матрица из 336x256 чисел с плавающей запятой (336 бактериальных геномов (столбцы) x 256 нормализованных частот тетрануклеотидов (ряды), например, каждый столбец добавляет до 1).

Я получаю хорошие результаты, когда выполняю анализ с использованием принципного анализа компонентов. Сначала я вычисляю кластеры kmeans на данных, затем запускаю PCA и раскрашиваю точки данных на основе начальной кластеризации kmeans в 2D и 3D:

library(tsne)
library(rgl)
library(FactoMineR)
library(vegan)
# read input data
mydata <-t(read.csv("freq.out", header = T, stringsAsFactors = F, sep = "\t", row.names = 1))
# Kmeans Cluster with 5 centers and iterations =10000
km <- kmeans(mydata,5,10000)
# run principle component analysis
pc<-prcomp(mydata)
# plot dots
plot(pc$x[,1], pc$x[,2],col=km$cluster,pch=16)
# plot spiderweb and connect outliners with dotted line
pc<-cbind(pc$x[,1], pc$x[,2])
ordispider(pc, factor(km$cluster), label = TRUE)
ordihull(pc, factor(km$cluster), lty = "dotted")

введите описание изображения здесь

# plot the third dimension
pc3d<-cbind(pc$x[,1], pc$x[,2], pc$x[,3])
plot3d(pc3d, col = km$cluster,type="s",size=1,scale=0.2)

введите описание изображения здесь

Но когда я пытаюсь заменить PCA методом t-SNE, результаты выглядят очень неожиданно:

tsne_data <- tsne(mydata, k=3, max_iter=500, epoch=500)
plot(tsne_data[,1], tsne_data[,2], col=km$cluster, pch=16)
ordispider(tsne_data, factor(km$cluster), label = TRUE)
ordihull(tsne_data, factor(km$cluster), lty = "dotted")

введите описание изображения здесь

plot3d(tsne_data, main="T-SNE", col = km$cluster,type="s",size=1,scale=0.2)

введите описание изображения здесь

Мой вопрос здесь заключается в том, почему кластеризация kmeans так отличается от того, что вычисляет t-SNE. Я ожидал бы даже лучшего разделения между кластерами, чем то, что делает PCA, но для меня это выглядит почти случайным. Ты знаешь почему это? Я пропускаю шаг масштабирования или какую-то нормализацию?

Loddi
источник
4
Обратите внимание, что и с PCA вы часто не получите столь же «хороших» результатов, как ожидали. Кластеризация по многим функциям и последующее проецирование кластеров в подпространство всего лишь нескольких первых ПК может хорошо показать картину, подобную той, которую вы получили здесь для t-SNE, - если только эти PCS не соберут почти всю изменчивость. Вы сравнивали - какая часть изменчивости фиксируется вашими первыми 3 ПК и вашими первыми 3 измерениями t-SNE?
ttnphns
2
Более тривиально, вы пробовали больше итераций?
Jubo
2
Я играл с итерациями до 2000 года, а также играл с различными настройками недоумения, но никогда не видел ничего, даже близкого к производительности, которую показывает PCA.
Лодди
1
Вы пытались настроить недоумение?
1
У tSNE есть теоретическая оптимальная путаница, которая сводит к минимуму расхождение KL между вашими данными в их исходном и проектном измерениях. Вы пытались сначала сделать сетку поиска недоумения? Например, 10,20,30,40 и т. Д.
Алекс Р.

Ответы:

10

Вы должны понять, что TSNEделает, прежде чем использовать его.

Он начинается с построения графа соседства между векторами признаков на основе расстояния.

График соединяет узел (вектор признаков) с его nближайшими узлами (с точки зрения расстояния в пространстве признаков). Это nназывается perplexityпараметром.

Цель построения этого графика коренится в том типе выборки, на который опирается TSNE, чтобы построить новое представление ваших векторов признаков.

Последовательность для построения модели TSNE генерируется с использованием графика характеристик random walkвашего TSNE.

По моему опыту ... некоторые из моих проблем возникли из рассуждений о том, как представление объектов влияет на построение этого графа. Я также работаю с perplexityпараметром, так как он влияет на то, насколько сфокусирован мой отбор.

конический
источник
9

Трудно сравнить эти подходы.

PCA не содержит параметров. Учитывая данные, вам просто нужно взглянуть на основные компоненты.

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

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

RUser4512
источник
3

Я запустил t-sne для набора данных, чтобы заменить PCA, и (несмотря на ошибку, замеченную Ромом Вей), получил лучшие результаты. В моем случае грубый pca работал хорошо, в то время как грубый t-sne давал мне случайные результаты. Это произошло из-за шага масштабирования / центрирования, включенного в pca (по умолчанию в большинстве пакетов), но не использованного в t-sne.
Мои точки были областями, и расстояние между ними не имело никакого смысла без предварительного масштабирования, я перешел от «случайного взгляда» к «осмыслению».

Как сказал RUser4512, вы также можете проверить свои параметры. На своем веб-сайте автор рекомендует недоумение от 5 до 50 (ваше кажется довольно маленьким), он также предупреждает, что слишком большое недоумение даст вам почти однородную сферу точек (что полезно знать).

У Distill есть очень хорошая статья с некоторой интерактивной визуализацией, которая действительно помогает понять влияние параметров.

Нестор Демеру
источник
0

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

См. Следующую статью для получения более подробной информации о интерпретации нелинейной шкалы tSNE: https://distill.pub/2016/misread-tsne/ (Wattenberg, et al., «Как эффективно использовать t-SNE», Distill, 2016. http://doi.org/10.23915/distill.00002 )

Неудивительно, что данные tSNE будут смешивать «кластеры», поскольку они не столь различны в данных PCA. Некоторые точки в кластерах 2 и 4, например, более отдалены от центроида кластера, чем разница между кластерами. Вы получите совершенно разные результаты кластеризации с другим k-параметром. Если у вас нет конкретного биологического обоснования для использования 5 кластеров, я бы рекомендовал использовать подход иерархической кластеризации на основе графов или без надзора.

Том Келли
источник