336x256 부동 소수점 수 (336 박테리아 게놈 (열) x 256 정규화 테트라 뉴클레오티드 빈도 (행)의 행렬을 가지고 있습니다 (예 : 모든 열은 1을 더합니다).
원리 성분 분석을 사용하여 분석을 실행할 때 좋은 결과를 얻습니다. 먼저 데이터에서 kmeans 클러스터를 계산 한 다음 PCA를 실행하고 2D 및 3D의 초기 kmeans 클러스터링을 기반으로 데이터 포인트를 채색합니다.
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가하는 것보다 클러스터들 사이에 더 나은 분리를 기대했을 것이지만 나에게는 거의 무작위로 보인다. 이것이 왜 그런지 아십니까? 스케일링 단계 또는 일종의 정규화가 누락 되었습니까?