Що не так з t-SNE проти PCA для зменшення розмірів за допомогою R?


27

У мене є матриця з цифрами з плаваючою точкою 336x256 (336 бактеріальних геномів (стовпців) х 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)

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

Але коли я намагаюся поміняти ПКС методом 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, але це виглядає на мене майже випадково. Ви знаєте, чому це? Я пропускаю етап масштабування чи якусь нормалізацію?


4
Зверніть увагу, що і при PCA ви часто не отримуєте настільки "хороших" результатів, як ви хочете отримати. Кластеризація багатьох функцій, а потім проектування кластерів у підпростір лише декількох перших ПК, цілком може показати зображення, як ви отримали тут для t-SNE, - якщо тільки ці PCS не захоплюють майже всю мінливість. Ви порівняли - яку частину змінності охоплюють ваші перші 3 ПК та ваші перші 3-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). В іншому випадку було б рівнозначно запитати "чому моя лінійна модель працює краще, ніж моя (не налаштована) градієнтна схема збільшення?".


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 кластерів, я б рекомендував використовувати графічний або непідконтрольний ієрархічний підхід кластеризації.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.