В прошлом я привык использовать PCA и загружать графики для визуализации данных, используя stats :: prcomp и ggbiplot. Как это:
Недавно я познакомился с анализом t-SNE (опоздал к игре здесь), который имеет был революционным в анализе сокращений и изучении закономерностей в данных.
Пока t-SNE собирает в моих данных кластеры, которые PCA не может четко различить guish, недостатком является отсутствие графика загрузки, чтобы понять, какие характеристики c влияют на каждый кластер в пространство.
Есть ли способ с t-SNE, который я могу сформировать какой-то график загрузки? Или есть какие-либо дополнительные методы, связанные с t-SNE, которые можно использовать? Я действительно хотел бы сохранить график t-SNE поверх графика PCA для визуализации определенного набора данных, но без графика загрузки это не так информативно.
Есть идеи? Фиктивные данные ниже:
library(FD)
library(ggbiplot)
# generate random data
a <- sample(x = 1:5, size = 100, replace = TRUE)
b <- sample(x = 1:5, size = 100, replace = TRUE)
c <- sample(x = 1:5, size = 100, replace = TRUE)
d <- sample(x = 1:5, size = 100, replace = TRUE)
e <- sample(x = 1:5, size = 100, replace = TRUE)
f <- sample(x = 1:5, size = 100, replace = TRUE)
g <- sample(x = 1:5, size = 100, replace = TRUE)
# make ordinal
a <- ordered(a, levels = 1:5)
b <- ordered(b, levels = 1:5)
c <- ordered(c, levels = 1:5)
d <- ordered(d, levels = 1:5)
e <- ordered(e, levels = 1:5)
f <- ordered(f, levels = 1:5)
g <- ordered(g, levels = 1:5)
#as dataframe
table <- as.data.frame(cbind(a,b,c,d,e,f,g))
#PCA
pca <- prcomp(table,center = TRUE,scale. = TRUE)
ggbiplot(pca)
#t-SNE
gower_dist <- daisy(table, metric = "gower")
tsne_obj <- Rtsne(gower_dist, is_distance = TRUE)
tsne_data <- tsne_obj$Y %>%
data.frame() %>%
setNames(c("X", "Y"))
ggplot(aes(x = X, y = Y), data = tsne_data) +
geom_point()