मेरे पास 336x256 फ़्लोटिंग पॉइंट नंबर (336 बैक्टीरियल जीनोम (कॉलम) x 256 सामान्यीकृत टेट्रान्यूक्लियोटाइड फ़्रीक्वेंसी (रो)) का एक मैट्रिक्स है, जैसे हर कॉलम 1 तक जोड़ता है)।
जब मैं सिद्धांत घटक विश्लेषण का उपयोग करके अपना विश्लेषण चलाता हूं तो मुझे अच्छे परिणाम मिलते हैं। पहले मैं डेटा पर किमी के समूहों की गणना करता हूं, फिर एक पीसीए चलाता हूं और 2 डी और 3 डी में प्रारंभिक किमी के क्लस्टरिंग के आधार पर डेटा बिंदुओं को रंगीन करता हूं:
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)
लेकिन जब मैं टी-एसएनई विधि के साथ पीसीए को स्वैप करने की कोशिश करता हूं, तो परिणाम बहुत अप्रत्याशित लगते हैं:
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)
यहाँ मेरा प्रश्न यह है कि किमी की गुच्छी टी-एसएनई की गणना से इतनी भिन्न क्यों है। मुझे उम्मीद है कि पीसीए जो कर रहा है, उससे क्लस्टर्स के बीच और भी बेहतर अलगाव की उम्मीद होगी। क्या आप जानते हैं कि ऐसा क्यों है? क्या मुझे स्केलिंग स्टेप या किसी तरह का सामान्यीकरण याद आ रहा है?