ฉันมีเมทริกซ์ของจำนวนจุดลอยตัว 336x256 (336 จีโนมแบคทีเรีย (คอลัมน์) x 256 ความถี่ tetranucleotide ปกติ (แถว) เช่นทุกคอลัมน์เพิ่มขึ้นถึง 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 ทำ แต่มันดูสุ่มสำหรับฉัน คุณรู้ไหมว่าทำไมถึงเป็นเช่นนี้? ฉันไม่มีขั้นตอนการปรับสเกลหรือการปรับมาตรฐานบางอย่างหรือไม่