Saya memiliki matriks 336x256 angka titik apung (336 genom bakteri (kolom) x 256 frekuensi tetranukleotida yang dinormalisasi (baris), misalnya setiap kolom menambahkan hingga 1).
Saya mendapatkan hasil yang bagus ketika saya menjalankan analisis saya menggunakan analisis komponen utama. Pertama-tama saya menghitung kluster kmeans pada data, kemudian menjalankan PCA dan mewarnai titik data berdasarkan kluster kmeans awal dalam 2D dan 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)
Tetapi ketika saya mencoba menukar PCA dengan metode t-SNE, hasilnya terlihat sangat tidak terduga:
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)
Pertanyaan saya di sini adalah mengapa pengelompokan kmeans sangat berbeda dari yang dihitung oleh t-SNE. Saya akan mengharapkan pemisahan yang lebih baik antara cluster daripada apa yang dilakukan PCA tetapi tampak hampir acak bagi saya. Apakah Anda tahu mengapa ini terjadi? Apakah saya melewatkan langkah penskalaan atau semacam normalisasi?