336x256 kayan nokta sayıları (336 bakteri genomu (sütunlar) x 256 normalleştirilmiş tetranükleotit frekansı (satır), örneğin her sütun 1'e kadar ekler) matrisine sahibim.
Analizimi prensip bileşen analizi kullanarak yaptığımda iyi sonuçlar alıyorum. Öncelikle, veri üzerindeki kmean kümelerini hesaplarım, daha sonra bir PCA çalıştırırım ve veri noktalarını başlangıçtaki 2 km'lik kümelemeye dayanarak 2D ve 3D olarak renklendiririm:
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)
Ancak PCA'yı t-SNE yöntemiyle değiştirmeye çalıştığımda, sonuçlar çok beklenmedik görünüyor:
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)
Buradaki sorum, kmean kümelenmesinin neden t-SNE'nin hesapladığından çok farklı olduğu. Kümeler arasında PCA'nın yaptıklarından daha iyi bir ayrılık olmasını beklerdim ama bana neredeyse rastgele görünüyordu. Bunun neden olduğunu biliyor musun? Ölçeklendirme adımını mı yoksa bir tür normalleşmeyi mi özlüyorum?